成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

深入理解z-index的工作原理和應用技巧

瀏覽:185日期:2022-06-12 11:47:17
目錄
  • 前言
  • 1、z-index
  • 2、層疊上下文
  • 3、層疊水平
  • 4、層疊順序
  • 5、創建層疊上下文
  • 小結

前言

最近參與某前端項目架構改造,發現項目中濫用z-index,設置的值有幾十種并且不統一。在對項目的z-index進行梳理和統一過程中也深入學習了一下z-index,并撰寫成文,希望也能幫助到陌生的你。

1、z-index

z-index屬性是什么?這里可參考MDN:

z-index 屬性設定了一個定位元素及其后代元素或 flex 項目的 z-order。當元素之間重疊的時候,z-index 較大的元素會覆蓋較小的元素在上層進行顯示。

從上可知,z-index屬性生效的對象是定位元素(position屬性值不為static)。對于重疊的元素,如何去管理順序、解決展示沖突,一般我們都會首先想到z-index,CSS允許我們對z-index屬性設置三種值:

auto(自動,默認值) 整數 inherit(繼承)

在判斷元素層疊時我們需要牢記兩個準則:

誰大誰上: 在同一層疊上下文中,z-index屬性值越大,盒子在層疊中的次序就越靠近用戶的眼睛; 后來居上:在同一層疊上下文中,當元素層疊順序相同(z-index一致),在DOM流中處于后面的元素會覆蓋前面的元素。

<body><div>one</div><div>two</div></body>


當都設置z-index屬性時,擁有較大z-index值的元素會掩蓋住小的那個元素:

div {	position: relative;}.one {	z-index:2;}.two {	z-index:1;}

上面的準則都是在說同一層疊上下文,那么什么是層疊上下文呢?層疊上下文是何時產生的呢?

2、層疊上下文

The stacking context is a three-dimensional conceptualization of HTML elements along an imaginary z-axis relative to the user, who is assumed to be facing the viewport or the webpage. HTML elements occupy this space in priority order based on element attributes. -- MDN

層疊上下文(stacking context),是HTML的一個三維的概念。頁面元素基于層疊上下文來進行順序的排列。層疊上下文在z軸上形成一個類似作用域的空間,一個層疊上下文內的所有元素不管如何設置z-index,都被限制在該層疊上下文內。需要注意:元素的層疊上下文不一定是該元素的父元素。

每個網頁都有一個默認的層疊上下文,這個層疊上下文的根元素就是html元素。html標簽中的一切都被置于這個默認的層疊上下文的一個層疊層上(body)。當一個元素創建一個層疊上下文時,它的所有子元素都會受到父元素的層疊順序影響。這意味著如果一個層疊上下文位于一個最低位置的層,那么其子元素的z-index設置得再大,它都不會出現在其他層疊上下文元素的上面。

閱讀到這里,想必你總算知道了為什么很多時候我們對定位元素設置z-index,無論如何設置z-index值都不能掩蓋住另一個元素的原因了。

3、層疊水平

“層疊水平”,英文稱作“stacking level”,決定了同一個層疊上下文中元素在z軸上的顯示順序。換句話說,在同一層疊上下文中的不同元素重疊時,它們的顯示順序會遵循層疊水平的規則,而z-index能夠影響元素的層疊水平。

需要再次提醒的是,在討論元素基于層疊水平進行排序時,是限制在單個層疊上下文內的。層疊水平不等于z-index屬性,所有的元素都存在層疊水平,而z-index屬性只能改變定位元素及flex盒子的孩子元素的層疊水平。

4、層疊順序

再來說說層疊順序。“層疊順序”,英文名為“stacking order”,表示元素發生層疊時候有著特定的垂直顯示順序,這里需要注意,上面的層疊上下文和層疊水平是概念,而這里講到的層疊順序則是規則。

在一個層疊上下文中按照層疊順序把元素分為7種層疊水平,默認的層疊順序如下圖所示:

(1)背景和邊框--形成層疊上下文元素的背景和邊框。位于層疊上下文中的最底層。

(2)負z-index--層疊上下文內z-index值為負的定位元素。

(3)塊級盒子--層疊上下文中非行內非定位元素。

(4)浮動盒子--非定位浮動元素。

(5)行內/行內快盒子 -- 層疊上下文中,inline和inline-block非定位元素。

(6)z-index:0 /auto -- 定位元素。單純考慮層疊水平,兩者表現一樣,但實際上對層疊上下文影響不一樣。

(7)正z-index值 -- 定位元素。z-index值越大,越靠近用戶。

在平時開發時,我們經常會使用(2)、(6)、(7),大部分元素的層疊水平都低于z-index為0的定位元素。

這里順便基于上文的實驗提出一個問題,如果只給one元素設置position的relative,能否實現one元素在上面?(設置postition后,z-index:auto會自動生效)。
想必聰明的你已經有答案了,那就是可以。

為什么inline/inline-block元素的層疊順序比浮動元素和塊元素都高呢?

諸如border/background一般為裝飾屬性,而浮動和塊元素一般用作布局,內聯元素都是內容。網頁中展示最重要的是內容,因此內容的層疊順序比較高,當發生層疊時,重要的文字和圖片等內容優先暴露在屏幕上。

5、創建層疊上下文

層疊上下文元素有以下幾個特性:

層疊上下文可以嵌套,內部層疊上下文及其所有子元素均受制于外部的層疊上下文。 每個層疊上下文和兄弟元素獨立,當層疊變化或渲染的時候,只需考慮后代元素。 每個層疊上下文時自成體系的,當元素發生層疊的時候,整個元素被認為是在父層疊上下文的層疊順序中。

那么如何才能創建一個層疊上下文呢?根據MDN,當滿足以下任一條件的元素就會創建層疊上下文:

文檔根元素(html),生成根層疊上下文,包裹在所有元素的最外層。 position值為absolute或者relative并且z-index不為auto的元素 position值為fixed或sticky的元素。 z-index不為auto的所有flex容器的子元素。 z-index不為auto的所有grid容器的子元素。 opacity 屬性值小于 1 的元素. mix-blend-mode 屬性值不為 normal 的元素. 任一屬性值不為 none 的元素: transform |filter | backdrop-filter | perspective |clip-path |mask | mask-image | mask-border。 isolation 屬性值為 isolate 的元素。 will-change 值設定了任一屬性而該屬性在 non-initial 值時會創建層疊上下文的元素。 -webkit-overflow-scrolling屬性值為touch的元素。 contain 屬性值為 layout、paint 或包含它們其中之一的合成值(比如 contain: strict、contain: content)的元素。

在層疊上下文中,子元素同樣也按照上面解釋的規則進行層疊。重要的是,其子級層疊上下文的 z-index 值只在父級中才有意義。子級層疊上下文被自動視為父級層疊上下文的一個獨立單元。

接下來通過一個示例說明flex屬性對層疊上下文的影響。代碼中,two元素與圖片有相同層疊上下文,z-index為負值。

<div>	<div style={{backgroundColor: "blue", zIndex: "1"}}>  {/* 普通元素,z-index不生效 */}		 <img src="./imgs/38558887.jpeg" style={{position: "relative", zIndex: "-1"}} />	</div></div>

two塊元素和img元素有相同的層疊上下文,z-index值為負的圖片在塊元素之下。現在,我們給one元素設置display屬性值為flex:

<div style={{display: "flex"}}>	<div style={{backgroundColor: "blue", zIndex: "1"}}> 		<img src={img} style={{position: "relative", zIndex: "-1", height:"60px"}} />	 </div> </div>

當設置父元素flex屬性后,圖片跑到上方來了。這是因為設置flex屬性后two元素創建了一個層疊上下文,包裹圖片成為圖片的父層疊上下文,背景的層疊順序低于負z-index值的img元素。

小結

本文從z-index出發,介紹了層疊上下文、層疊順序,并簡要闡述了元素在什么條件會產生層疊上下文,同時舉例說明了flex屬性如何影響層疊水平。希望能夠幫助你理解層疊上下文和層疊水平,由于作者水平有限,難免行文有誤,如有不當請不吝指教,謝謝!

z-index是CSS中控制元素層級的重要屬性,但其工作原理并不簡單。本文從堆疊上下文、層疊順序和層疊上下文等概念入手,深入探討了z-index的工作原理。同時,本文還介紹了z-index的應用技巧,如如何避免z-index的陷阱、如何使用z-index實現復雜布局等。在實際開發中,深入理解z-index的工作原理和應用技巧,可以幫助我們更好地掌控元素的層級關系,實現更加復雜和靈活的布局效果。

到此這篇關于深入理解z-index的工作原理和應用技巧的文章就介紹到這了,更多相關深入學習z-index內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: CSS HTML
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线观看亚洲视频啊啊啊啊| 欧美日韩p片| 丰满白嫩尤物一区二区| 精品成人久久| 欧美视频完全免费看| 中文字幕视频一区| 国产美女一区二区| 亚洲精品国产精品国自产观看| 欧美一区二区三区系列电影| 亚洲va韩国va欧美va| 午夜日韩福利| 日韩欧美综合在线| 日韩av不卡一区二区| 亚洲精品日韩在线观看| 26uuu亚洲| 国内精品伊人久久久久av影院| 亚洲激情一区二区| 久久亚洲一级片| 九九视频精品免费| 亚洲人成免费| 国产三级欧美三级| 国产大片一区二区| 欧美在线视频日韩| 亚洲国产成人高清精品| 午夜国产精品视频免费体验区| 7777精品伊人久久久大香线蕉 | 亚洲国产精品视频| 欧美福利专区| 欧美一级日韩不卡播放免费| 日韩电影在线一区二区三区| 亚洲精品日本| 国产精品麻豆欧美日韩ww| 粉嫩高潮美女一区二区三区| 欧美性大战久久久久久久| 亚洲成人高清在线| 亚洲精品资源| 国产欧美精品在线观看| 极品销魂美女一区二区三区| 久久久福利视频| 一区二区三区在线影院| 精品福利电影| 国产精品网站在线观看| 牛牛国产精品| 26uuu亚洲综合色| 成人久久视频在线观看| 老司机午夜精品视频在线观看| 中文字幕一区二区三区不卡| 欧美精品自拍| 国产色综合久久| av中文字幕在线不卡| 日韩美一区二区三区| 国产99久久久国产精品潘金网站| 欧美日韩激情一区二区三区| 视频一区二区欧美| 蜜桃精品久久久久久久免费影院| 一区二区三区四区在线免费观看| 一区精品久久| 国产精品美女久久久久久2018| 91免费看视频| 久久久久久久久久电影| 国产麻豆精品95视频| 欧美伊人精品成人久久综合97| 石原莉奈一区二区三区在线观看 | 免费在线观看视频一区| 久久在线视频| 日本美女一区二区三区视频| 久久综合一区二区三区| 日本不卡视频一二三区| 在线观看精品一区| 另类欧美日韩国产在线| 欧美私人免费视频| 精品在线一区二区三区| 在线欧美日韩国产| 青青草精品视频| 欧美日韩国产色站一区二区三区| 麻豆成人久久精品二区三区小说| 欧美优质美女网站| 精品一区二区在线免费观看| 欧美日韩国产精品自在自线| 精品在线观看免费| 日韩三级视频中文字幕| av在线不卡网| 亚洲国产精品v| 亚洲毛片视频| 午夜日韩在线电影| 亚洲专区一区| 日本免费新一区视频| 久久高清国产| 日韩精品乱码免费| 欧美日韩国产片| heyzo一本久久综合| 中文字幕va一区二区三区| 在线一区视频| 奇米一区二区三区av| 日韩一区二区免费在线电影| 成人午夜碰碰视频| 国产精品日韩成人| 久久国产精品久久精品国产| 久久99最新地址| 欧美mv和日韩mv的网站| 欧美视频一区| 午夜国产精品影院在线观看| 欧美日韩国产影片| 国产 欧美在线| 中文字幕国产一区二区| 国产一区二区你懂的| 蜜臀久久久99精品久久久久久| 日韩欧美国产电影| 99精品视频一区| 亚洲日本免费电影| 欧美最猛性xxxxx直播| 成人激情文学综合网| 中文字幕亚洲综合久久菠萝蜜| 先锋影音国产精品| 亚洲人亚洲人成电影网站色| 一本大道av伊人久久综合| 91丨九色丨黑人外教| 免费成人你懂的| 国产精品初高中害羞小美女文| 欧美放荡的少妇| 亚洲欧美日韩精品一区二区| 91免费版在线看| 国产精品自拍在线| 偷拍与自拍一区| 亚洲欧美在线aaa| 欧美成人官网二区| 欧美午夜理伦三级在线观看| 亚洲人成久久| 欧美高清视频一区二区三区在线观看| 国产在线一区观看| 天天综合色天天综合| 国产精品视频麻豆| 日韩欧美激情一区| 色老头久久综合| 亚洲三级国产| 午夜日韩在线| 成人精品免费网站| 久久www免费人成看片高清| 亚洲电影中文字幕在线观看| 国产精品美女久久久久久久久| 欧美大片顶级少妇| 欧美三级一区二区| 亚久久调教视频| 亚洲国产精品综合| 色综合中文字幕| 国产高清在线精品| 麻豆91精品视频| 亚洲国产乱码最新视频| 亚洲欧洲美洲综合色网| 国产日本亚洲高清| 精品国产乱码久久久久久图片| 欧美日韩一区二区欧美激情| 欧美一级视频| 在线视频欧美一区| 亚洲黄色精品| 激情婷婷欧美| 国产精品成人观看视频免费| 91视频观看视频| 成人av电影在线观看| 国产精品一区二区久久不卡 | 国产呦精品一区二区三区网站| 日韩精品电影在线观看| 亚洲黄网站在线观看| 国产精品国产成人国产三级| 国产午夜精品久久久久久免费视 | 国产视频不卡一区| 久久精品视频一区二区三区| 日韩欧美www| 日韩精品一区二区在线观看| 日韩精品一区二区三区中文不卡 | 精品中文av资源站在线观看| 免费高清视频精品| 日韩综合一区二区| 日韩中文字幕不卡| 午夜精品久久久| 婷婷国产v国产偷v亚洲高清| 五月婷婷久久丁香| 亚洲成精国产精品女| 久久久久久九九九九| 久久成人资源| 亚洲影视在线| 国产精品一区二区你懂得| av不卡免费看| 亚洲一区二区三区高清| 欧美中文字幕| 亚洲视频1区| 国产欧美日韩一级| 亚洲欧美日韩精品在线| 美女精品国产| 色av成人天堂桃色av| 色欧美日韩亚洲| 在线视频你懂得一区| 欧美亚洲动漫精品| 欧美午夜宅男影院| 欧美高清视频不卡网| 欧美高清激情brazzers| 日韩亚洲欧美中文三级| 欧美电影免费观看高清完整版在| 26uuu色噜噜精品一区二区| 亚洲国产成人一区二区三区|