成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_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国内精品久久久久久久
国产精品一区免费在线观看| 日本成人在线一区| 中文字幕一区在线| 久久日韩精品| 欧美日韩一区二区三区在线观看免 | 国产在线精品视频| 欧美激情一区二区在线| 91激情在线视频| 欧美午夜国产| 国产黄人亚洲片| 国产成人精品免费在线| 一区在线播放| 国产精品久久网站| 在线观看视频日韩| 在线亚洲精品福利网址导航| 奇米影视在线99精品| 久久午夜羞羞影院免费观看| 激情欧美日韩| 成人久久久精品乱码一区二区三区| 亚洲精品免费在线播放| 制服丝袜亚洲精品中文字幕| 国产欧美日韩综合一区在线观看| 99精品欧美一区二区三区小说| 看电影不卡的网站| 亚洲午夜av在线| 亚洲三级久久久| 日本一区二区免费在线观看视频| 7777精品伊人久久久大香线蕉经典版下载| 在线亚洲一区| 99精品热6080yy久久| 91在线观看免费视频| 国内精品在线播放| 五月婷婷另类国产| 亚洲精品中文在线| 欧美激情一区不卡| 精品国产免费久久 | 日韩视频永久免费| 777奇米四色成人影色区| 亚洲欧美在线aaa| 91一区二区三区在线播放| 国产欧美1区2区3区| 亚洲性人人天天夜夜摸| 亚洲日本va午夜在线影院| 国产麻豆日韩| 蜜桃视频一区二区| 日韩欧美视频一区| 一区免费观看视频| 伊人久久亚洲美女图片| 中文字幕一区二区日韩精品绯色| 在线日本成人| 亚洲一区二区三区四区不卡| 色婷婷综合五月| 免费精品视频在线| 日日欢夜夜爽一区| 麻豆成人综合网| 国产91精品一区二区麻豆亚洲| 夫妻av一区二区| 91麻豆免费在线观看| 欧美视频亚洲视频| 国产精品一页| 久久精品盗摄| 欧美中文字幕一区二区三区亚洲| 欧美三区免费完整视频在线观看| 日本韩国一区二区| 欧美丰满美乳xxx高潮www| 日韩一区二区免费电影| 2021国产精品久久精品| 国产精品久久久久久久久免费丝袜| 国产精品免费看片| 亚洲动漫第一页| 激情国产一区二区 | 91黄色免费版| 成人app网站| 亚洲日本韩国一区| 亚洲国产精品一区制服丝袜| 亚洲成人在线| 欧洲中文字幕精品| 久久综合给合久久狠狠狠97色69| 亚洲天堂2014| 捆绑调教一区二区三区| a4yy欧美一区二区三区| 99视频在线精品国自产拍免费观看| 91久久免费观看| 精品乱人伦小说| 亚洲一区二区三区免费视频| 狠狠色丁香久久婷婷综合丁香| 欧美成人免费在线| 久久亚洲欧洲| 国产三级精品三级| 久久国产精品99久久久久久老狼| 99精品久久久久久| 国产欧美另类| 久久综合久久鬼色中文字| 天堂资源在线中文精品| 91亚洲精品久久久蜜桃网站| 色先锋久久av资源部| 国产精品网站一区| 国产麻豆成人传媒免费观看| 最新亚洲激情| 2欧美一区二区三区在线观看视频| 亚洲国产精品久久人人爱| 国产成人综合精品三级| 国产精品xvideos88| 欧美视频一区二区三区在线观看 | 美女视频一区二区三区| 欧美日韩精品一本二本三本| 欧美亚洲国产一区二区三区va| 亚洲欧洲无码一区二区三区| 精品一区二区免费视频| 亚洲最大的成人av| 成人一区二区三区| 色噜噜狠狠色综合中国| 17c精品麻豆一区二区免费| 国产一区二区伦理片| 一本久久综合| 久久精品亚洲乱码伦伦中文 | 国产精品资源在线看| 亚洲一区二区毛片| 中文字幕免费不卡在线| 国产伦精品一区二区三区免费| 一区二区国产日产| 国产精品欧美久久久久无广告| 国v精品久久久网| 在线免费观看日本一区| 亚洲综合久久久| 亚洲高清不卡一区| 日本一区二区成人| 99天天综合性| 精品福利一二区| 成人永久aaa| 欧美变态tickling挠脚心| 精品一区二区三区视频在线观看| 美女被久久久| 亚洲高清免费在线| 亚洲精品一品区二品区三品区| 久久香蕉国产线看观看99| 国产精品伊人色| 欧美区一区二区三区| 麻豆精品久久精品色综合| 在线亚洲+欧美+日本专区| 午夜av电影一区| 色天天综合久久久久综合片| 91精品国产综合久久蜜臀| 一本大道综合伊人精品热热| 999在线观看精品免费不卡网站| 91原创在线视频| 国产精品一区二区免费不卡| 蜜臀av性久久久久蜜臀aⅴ四虎| 夜夜嗨av一区二区三区网页| 国产精品视频观看| 久久亚洲二区三区| heyzo一本久久综合| 欧美剧情电影在线观看完整版免费励志电影 | 国产精品久久久久久一区二区三区| 91在线视频网址| 亚洲精品在线三区| 91视频一区二区三区| 国产精品丝袜一区| 国产欧美成人| 欧美人体做爰大胆视频| 欧美日韩少妇| 欧美凹凸一区二区三区视频| www..com久久爱| 风间由美一区二区av101| 国产一区二区三区观看| 成人免费视频一区二区| 亚洲一卡久久| 国产一级精品在线| 精品sm在线观看| 亚洲伦理一区| 日本亚洲一区二区| 精品久久一区二区三区| 一区二区三区四区五区在线 | 懂色av一区二区三区免费观看| 精品久久久久久久一区二区蜜臀| 91论坛在线播放| 亚洲高清不卡在线观看| 欧美一区三区四区| 欧美日韩亚洲一区| 蜜芽一区二区三区| 欧美经典一区二区三区| 久久久久综合一区二区三区| 成人av动漫在线| 一区二区三区高清| 欧美福利视频一区| 欧美激情成人在线| 日本va欧美va精品发布| 精品国产一区二区三区不卡| 一区二区精品在线| 国产麻豆视频一区| 中文字幕在线不卡一区 | 亚洲桃色在线一区| 91精品国产综合久久小美女| 日韩一级精品| 成人av网址在线观看| 日日摸夜夜添夜夜添精品视频| 国产亚洲精品福利| 欧美视频在线一区二区三区| 国产精品二区在线| 久久精品国产网站|