position 的屬性值

理論上來說,全部 position 的取值有8個

包括:position:static | relative | absolute | fixed | sticky |? initial | inherit | unset

其中最常用的是 static 、relative、absolute、fixed 和 sticky

initial、inherit、unset 是css的關鍵字,任何css屬性的取值都可以設置這幾個值

?

position: static

默認值,在正常流中,對設置的 top 、left、right、bottom、z-index 一應忽略

?

position: relative

相對定位,相對于自己原來的位置偏移,(例:top: 10px; // 移動后元素頂部位于原位置頂部下10px;)

脫離文檔流,但在文檔流中保留原位置的空間(預留空間),

也就是說,元素原來位置會一直保留空白占位,相鄰兄弟元素會保持原來的位置,不會隨元素的移動而改變

注意:position: relative 對 table-*-group,table-row,table-column,table-cell,table-caption 元素無效。

栗子:

?

position: absolute

絕對定位,若祖先元素有設置 position: static 以外的屬性值,則相對該祖先元素絕對定位;否則,相對瀏覽器視口絕對定位

(在這里說一個注意點,大多數人認為是相對 html 或 body 元素絕對定位,這是個誤區;當頁面是可滾動的,就可以看出是相對瀏覽器窗口絕對定位的了,而不是整個 html 內容;這里我也懶得寫例子了,我就直接借鑒別人的吧:CSS進階——絕對定位元素的寬高是如何定義的

因此,一般做法是將該絕對定位元素的父元素加上 position: relative 屬性

脫離文檔流,不預留空間,該元素下的兄弟元素位置上移

栗子:

?

但 position: absolute 并不僅有以上這個用途;

在按其內容大小調整尺寸的元素(例如 height 和 width 被設定為 auto,又或者行內元素),若該元素被絕對定位 position: absulute ,則可以通過指定 top / bottom / left / right , 保留 height 未指定(即 auto), 來填充可用的垂直(水平)空間

什么意思呢?淡定,來吃些栗子吧:

(除此之外,絕對定位的元素可以設置外邊距(margin),且不會與其他邊距合并,這個就不舉栗子了)

?

寫上面例子的時候還是有個疑問的:

既然絕對定位是脫離文檔流的,為什么行內元素絕對定位的時候,在不設置 left 值時,它的原點是位于原位置的原點的呢?而不是位于父元素的原點呢?

(找了許久沒找著原因,這個留著以后慢慢解答吧)

?

position: fixed

固定定位,相對瀏覽器窗口固定定位,不隨滾動條滾動,實現的樣本就是日常網頁中的廣告彈窗

脫離文檔流,fixed 屬性會創建新的層疊上下文。

注意:當該固定元素的祖先元素的 transform 屬性非 none 時,容器由瀏覽器窗口改為該祖先元素

?

position: sticky

粘性定位,相當于相對定位和固定定位的混合。粘性定位根據一個閾值決定,在大于等于閾值時采用相對定位,小于閾值后則為固定定位。

這個閾值就是 top 、right 、bottom 、left 四種之一,必須設置了其中一個,才能讓粘性定位生效,否則一直表現為相對定位。

粘性定位除了以上條件之外,還有幾點需要注意,否則粘性定位會失效

1. 父元素的內容需滾動查看,且不能有 overflow: hidden 、 overflow: auto 屬性

2. 父元素的高度不能低于粘性定位元素的高度

3. sticky 是容器相關的,只會在它所處的容器(父元素)里生效。

sticky 栗子:demo

粘性定位的兼容問題:

 1. 需寫下兩條css語句:

  position: sticky;? 和 position: -webkit-sticky; /* Safari */

? ? 2.?Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。?

?

position: initial

initial 關鍵字用于設置CSS屬性為它的默認值(在這里也就是 position: static)

注: IE不支持該關鍵字

?

position: inherit

每個 CSS 屬性定義的概述都指出了這個屬性是默認繼承的 ("Inherited: Yes") 還是默認不繼承的 ("Inherited: no")。

關于 inherit 的妙用可以看看這里:談談一些有趣的CSS題目(四)– 從倒影說起,談談 CSS 繼承 inherit

?

position: unset

unset 關鍵字是 initial 和inherit 的組合:

?1. 如果該屬性是默認繼承屬性,則該值等同于 inherit

?2. 如果該屬性是非繼承屬性,則該值等同于 initial

unset 的一些妙用可參考:有趣的CSS題目(15): 談談 CSS 關鍵字 initial、inherit 和 unset

?

至此,第一條博客總算是磕磕碰碰寫完了,雖然一直也有做筆記總結,但是寫出來還是覺得自己可能還有疏漏,寫博客不容易,堅持寫更是不容易了,由衷佩服那些讓我學到知識的博客大牛們!感恩~

本文參考:

1.?有趣的CSS題目(15): 談談 CSS 關鍵字 initial、inherit 和 unset

2.?談談一些有趣的CSS題目(四)-- 從倒影說起,談談 CSS 繼承 inherit

3. CSS進階——絕對定位元素的寬高是如何定義的

4.?MDN position屬性

本文轉載于:猿2048?https://www.mk2048.com/blog/blog.php?id=ik1h1ib&title=position 的屬性值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370641.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370641.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370641.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[ JavaScript ] JavaScript 實現繼承.

對于javascript中的繼承,因為js中沒有后端語言中的類式繼承。所以js中的繼承,一般都是原型繼承(prototype)。 function P (name){this.name name;this.say function(){console.log(p);} }function S (name,id){this.id id;this.eat function(){conso…

mysql數據庫應用的權限層級_MySQL數據庫的用戶權限管理

嗨!各位小伙伴今天翻了一下歷史記錄MySQL 數據庫還有點內容今天開始我們就來補上吧~用戶權限管理伙伴們要知道,在數據庫方面有兩個方向。一個是數據庫管理員(Database Administrator)簡稱DBA,一個是數據庫開發工程師(Database Developer)&…

linux i2c adapter 增加設備_Linux驅動之I2C驅動架構

一、Linux的I2C體系結構主要由三部分組成:(1) I2C核心提供I2C控制器和設備驅動的注冊和注銷方法,I2C通信方法,與適配器無關的代碼以及探測設備等。(2) I2C控制器驅動(適配器)(3) I2C設備驅動二、重要的結構體i2c_adapter//i2c控制器(適配器)i…

Alpha-end

前言 失心瘋病源10團隊代碼管理github個人感悟 肝不動了,肝不動了。明天如果見不到我,不要太想我。站立會議 隊名:PMS530雨勤(組長) 今天完成了那些任務 熬夜肝代碼代碼簽入github明天的計劃 肝到凌晨還剩下哪些任務 團…

html 01前沿-web介紹

1. 認識網頁 網頁主要由文字、圖像和超鏈接等元素構成。當然,除了這些元素,網頁中還可以包含音頻、視頻以及Flash等。 2. 瀏覽器(顯示代碼) 瀏覽器是網頁顯示、運行的平臺,常用的瀏覽器有IE、火狐(Firefox…

避免寫慢SQL

最近在整理數據庫中的慢SQL,同時也查詢了相關資料。記錄一下,要學會使用執行計劃來分析SQL。 1. 為查詢緩存優化你的查詢 大多數的MySQL服務器都開啟了查詢緩存。這是提高性最有效的方法之一,而且這是被MySQL的數據庫引擎處理的。當有很多相同…

為什么子孫后代會討厭使用java.util.Stack

在我用無意義的重言式殺死你之前,這是要點 如果您的應用程序接近實時,或者將代碼發送到Mars,則需要保留Java中默認的Stack實現。 根據LinkedList編寫您自己的版本。 同樣,如果您的應用程序是關鍵任務,并且希望堆棧由…

play 連接mysql_Play framework 2.x 連接mysql | 學步園

筆者所使用的系統為64位 windows7。本文假設java1.5版本以上環境已經搭好,play 框架已經下載至本地。首先我們創建一個項目。命令行進入play的目錄命令:play new demo再次輸入項目名字輸入2 選擇java項目創建完成界面OK,一個play框架下的java…

rpm -e --nodeps_微課 | rpm的思維導圖

前導課程:微課 | rpm的查詢、升級與卸載命令本次微課將演示使用xmind繪制rpm思維導圖的過程,包括視頻文字,大約需要你10分鐘。另外,文末還有一則IT冷笑話,學習之余、會心一笑:)這個思維導圖將包含以下內容:…

CentOS7搭建lamp環境

Mysql安裝 CentOS 7 版本將MySQL數據庫軟件從默認的程序列表中移除,用mariadb代替了。MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可。開發這個分支的原因之一是:甲骨文公司收購了MySQL后&#x…

border-sizing屬性詳解和應用

box-sizing用于更改用于計算元素寬度和高度的默認的 CSS 盒子模型。它有content-box、border-box和inherit三種取值。inherit指的是從父元素繼承box-sizing表現形式,不再冗贅。1. 屬性講解 content-box 默認值,也是css2.1中的盒子模型。在計算 width和…

Couchbase:使用Twitter和Java創建大型數據集

在播放/演示Couchbase或任何其他NoSQL引擎時,創建大型數據集的一種簡單方法是將Twitter feed注入到數據庫中。 對于這個小應用程序,我正在使用: Couchbase Server 2.0服務器 Couchbase Java SDK (將由Maven安裝) T…

查找標題已知的窗口句柄,遍歷窗口控件句柄

有了回調函數的概念及上面的例子,我們可以繼續了。其實想要找到一個標題已知的窗口句柄,用一個API函數就可以了:FindWindow. 其函數原形是: function FindWindow(lpClassName, lpWindowName: PChar): HWND; stdcall; lpClassName:窗口類名.如果只知道標題,可以為空.窗口類名可以…

西門子scl語言編程手冊_西門子SCL編程PEEK指令講解

單詞“peek”在英語中表示“偷看,瞥一眼”,在計算機編程中表示“讀取數據”。在西門子SCL編程中,PEEK指令可以用來讀取輸入緩存區(I)、輸出緩存區(Q)、位存儲區(M)及數據塊(DB)中的數據,常用作間接尋址。今天這篇文章,…

HTML第一章:初始HTML

設置ws字體大小&#xff1a;左上角file-->Settings--->在搜索框中輸入font網頁的第一行一定是<!DOCTYPE html>&#xff1a;網頁聲明&#xff0c;代表這個頁面是h5頁面html標簽中的leng"en"&#xff1a;意思是網頁中會用到英文 <meta>&#xff1a;…

Guava的Collections2:過濾和轉換Java集合

Groovy的便利之一是能夠通過Groovy的閉包支持輕松地對集合執行過濾和轉換操作。 Guava將對集合的過濾和轉換引入標準Java&#xff0c;這是本文的主題。 Guava的Collections2類具有兩個公共方法&#xff0c;這兩個方法都是靜態的。 方法filter&#xff08;Collection&#xff0…

釘釘機器人怎么設置自動回復_項目部署成功后觸發釘釘機器人發送消息提醒——入門配置...

釘釘建好一個群打開群設置, 找到群機器人添加一個你想要的機器人可以使用自定義自定義機器人可以自定義頭像,名字,生成一個webhook(https post的請求地址)到這里, 釘釘機器人設置好了,接下來我們對照文檔進行配置https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq/XAzBI -…

mysql加鎖語法_MySql 加鎖問題

1、設置非自動提交 set autocommit0; 這時候 for update才會起作用2、一般用法 set autocommit0; for update(加鎖) ; commit/rollback; set autocommit1;首先看一下&#xff0c;set autocommit0 后&#xff0c;執行哪些語句會自動加鎖&#xff0c;加的是什么鎖&#xff1f…

td過長,將固定寬度table撐開

解決辦法&#xff1a; 在table上加上樣式: table{table-layout:fixed;word-break:break-all} table-layout:fixed tablle的列寬由表格寬度和列寬設定。 word-break:break-all 允許在單詞內換行。 正常情況下&#xff1a; table表格中td過長&#xff1a; 加上樣式之后&#…

Spring Boot 之注解@Component @ConfigurationProperties(prefix = sms)

從spring-boot開始&#xff0c;已經支持yml文件形式的配置&#xff0c;ConfigurationProperties的大致作用就是通過它可以把properties或者yml配置直接轉成對象 例如&#xff1a; 配置文件: sms.urlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX sms.appkeyXXXXXXXXXXXXXXXXXXXXXXXXXXXXX …