搜尋
首頁web前端css教學深入淺析css中的層疊上下文

這篇文章帶大家聊聊css中的層疊上下文,透過範例來比較一下層疊等級,希望對大家有幫助!

深入淺析css中的層疊上下文

前段時間,公司開始推動低程式碼平台業務,我有幸的參與其中。在這段期間牽扯到了css的層疊上下文,並給我帶來了一定的困擾,為了更好的實現業務邏輯,我覺得好好的深入研究一下css的層疊上下文。想必大家都知道網頁是二維空間的,但是內容卻是三維的,除了比較直覺的x、y之外,還存在著一個不是很直覺的z軸。

層疊上下文元素

我們日常開發過程中,比較常使用的涉及層疊上下文的屬性主要有幾種:

  • position: absolute | fixed | relative | sticky

  • z-index

  • #float: left | right

  • transform

層疊等級比較

在不牽扯到祖孫嵌套的前提下,簡單的層級對比:

z- index: -1 0

在牽扯到祖先元素已經產生了層疊上下文的時候,那是後代元素的層疊等級會受到祖先元素的影響。

Note:  層疊上下文的層級是 HTML 元素層級的子級,因為只有某些元素才會建立層疊上下文。可以這樣說,沒有創建自己的層疊上下文的元素會被父層疊上下文同化

實戰問題

在視覺化實現的過程中,碰到了一個問題:在嵌套層級的拖曳的過程,由於嵌套的父元素上已經存在了層級問題,導致祖孫元素受到祖先元素的影響,拖曳的時候會出現被「正常文檔流」的元素所覆蓋的情況。經過一段時間的研究,產生這個問題的原因就是受不同層疊上下文的影響所導致的。

實戰

1. 同層級的層疊上下文比較

由於程式碼量太多,這裡就不浪費篇幅進行展示了,直接上我運行的結果。透過下面的圖片,我們可以對上文提到的同層級的層級比較做出印證。

深入淺析css中的層疊上下文

2. 不同position的層疊上下文比較

對position來說,在不使用z -index的情況下,兄元素的層疊上下文大於弟元素的層疊上下文。用人話說,就是後面的元素的層疊上下文高於前面的元素。

    .fixed {
      position: fixed;
      top: 0;
      left: 0;
      background: red;
    }

    .relative {
      position: relative;
      top: 20px;
      left: 20px;
      background: green;
    }

    .absolute {
      position: absolute;
      top: 60px;
      left: 60px;
      background: yellow;
    }

    .sticky {
      position: sticky;
      top: 60px;
      left: 90px;
      background: pink;
    }

深入淺析css中的層疊上下文

3. 不同層疊上下文中的層疊等級比較

首先我們先復現一下上面提到實戰問題,不同層疊上下文裡面的層疊等級實現。

深入淺析css中的層疊上下文

紅色塊和綠色塊是兩個同級元素,其中紅色的層疊等級高於綠色的層疊等級,導致紅色塊中的兩個元素即使層疊等級低於橘色的塊元素,但是實際效果是,橘色的層疊等級低於另外的塊元素。

    .purple {
      top: 20px;
      left: 20px;
      background: purple;
      z-index: 10;
    }

    .pink {
      top: 60px;
      left: 60px;
      background: pink;
      z-index: 20;
    }

    .orange {
      top: 10px;
      left: 10px;
      background: orange;
      z-index: 999;
    }

這裡,提一下我對於上面的問題的解決方法,就是動態修改祖先元素的層疊等級。不過,我個人覺得這個方式有待研究,嵌套層級較多的時候,比較笨重。如果有小夥伴有更好的方式的話,歡迎在下面留言。

(學習影片分享:css影片教學

以上是深入淺析css中的層疊上下文的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:掘金社区。如有侵權,請聯絡admin@php.cn刪除
兩個圖像和一個API:我們重新著色產品所需的一切兩個圖像和一個API:我們重新著色產品所需的一切Apr 15, 2025 am 11:27 AM

我最近找到了一種動態更新任何產品圖像的顏色的解決方案。因此,只有一種產品之一,我們可以以不同的方式對其進行著色以顯示

每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響Apr 15, 2025 am 11:19 AM

在本週的綜述中,燈塔在第三方腳本上闡明了燈光,不安全的資源將在安全站點上被阻止,許多國家連接速度

託管您自己的非JavaScript分析的選項託管您自己的非JavaScript分析的選項Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭Apr 15, 2025 am 11:01 AM

該文檔負責人可能不是網站上最迷人的部分,但是其中所處的內容對於您的網站的成功也一樣重要

JavaScript中的Super()是什麼?JavaScript中的Super()是什麼?Apr 15, 2025 am 10:59 AM

當您看到一些稱為super()的JavaScript時,在子類中,您會使用super()調用其父母的構造函數和超級。訪問它

比較不同類型的本機JavaScript彈出窗口比較不同類型的本機JavaScript彈出窗口Apr 15, 2025 am 10:48 AM

JavaScript具有各種內置彈出API,它們顯示用於用戶交互的特殊UI。著名:

為什麼可訪問的網站如此難以構建?為什麼可訪問的網站如此難以構建?Apr 15, 2025 am 10:45 AM

前幾天,我與一些前端人們聊天,講述了為什麼這麼多公司努力創建可訪問的網站。為什麼可訪問的網站如此艱難

'隱藏”屬性顯然很弱'隱藏”屬性顯然很弱Apr 15, 2025 am 10:43 AM

有一個HTML屬性,它可以正是您認為應該做的:

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能