z-index只能在有設定位(position)的元素上才會有效。
設定值越大的元素z-index:堆疊順序會越前面,
這些我都明白
但我看了不少國內外navbar教學影片
大部份都設在最外層z-index=999;
有些在nav__item設z-index=1
怎麼設定z-index才是正確、正規做法
浮動導航 position: fixed;
z-index=999; 要設在哪一層比較好
nav class="nav container"
a href="#" class="nav__logo"
div class="nav__menu" id="nav-menu"
ul class="nav__list"
li class="nav__item"
.nav z-index=999;很多人設在最外層
nav__menu 有些人會在這設z-index=999或Media Queries再設一次
因為看了很多教學影片,知道,但不確定怎麼設z-index才是正確?
謝謝大家回答
我們先要有組件這個概念
依照設定的組件配置
我們可以想成必須在網頁最上層顯示出來、有點重要、普通布局、背景
而 navbar
這個組件,現在通常都會設在網頁上面呈現導航條
而與導航條有關的配件 z-index
就會設置 ±10 以內。而 nav_menu
會另外再設置是因為,手機模式的漢堡選單,這樣你就懂了吧
通常情況下 nav_menu
不會再另外設,除非你 nav_menu
那層元件多,也有層次覆蓋問題,才會另外設置
我會設置成跟 CSS 權重差不多的概念,也就是 1 、 10 、 100 、 1000...等。
而像這種會固定在視窗上面的組件,我們會希望不要被一些自己沒注意到的組件覆蓋過去
通常都會設置比較大,我個人是會設置:z-index: 1000;
而在與導航條相關的選單之類的,我就會設置父組件的 ±10。
因為有時候像是我們在製作具有放大效果的卡片...之類的東西,
會因為避免放大後被後面的組件蓋住,所以通常使用放大動畫效果時,
都會設置 z-index
,但又要避免遮住上面的導航條,所以我會設置:z-index: 100;
有沒有感覺很像 CSS 的權重
可以看的出來,z-index
設置可以隨心所欲,而我個人所喜好做法
而以上是我個人的想法
實際大專案通常是整個團隊的,所以要根據團隊制定的規則來實行,
不然專案容易出現互相蓋來蓋去的問題,沒有共識的結果就是,數字千奇百怪、放飛自我。
可能哪天有個組件設置 z-index: 5487;
、 z-index: 520;
都不奇怪。
請把導航欄放在 body
的 beforeend
位置附近,如此便不必設置 z-index
了。
事實上,使用 z-index
的情況通常都是不得已的,就像非必要不要使用 JavaScript 來控制 CSS 一樣。
對於 z-index
該如何設置,通常都是 1 + 1 累加為佳,這樣就不會有錯亂的問題。
當然,也是有人會直接設置 999 等層次,但是如果一個網頁大量設置 z-index
的話,如此設置肯定會出現問題。
說了這麼多,就是一句話,不要過度依賴 z-index
來安排層次。
基本上 z-index 也就是一種圖層的觀念。
上面你說都懂了,我就不在重覆說明。
你想要知道的數字的定義為何。
其實這倒是沒有一定的答案就是了。
我只能將我個人的使用習慣給你。
基本來說,我會用每100個為一個單位。且最低是100。不會有0或1的情況。
這是為了防止某些突發情況。
而一般來說,圖層大約3層就已經很多了。所以我大多基本是 100 500 1000
在定義上,一定得要在上層的就是1000。如彈跳訊息。遮罩則統一維持在500或900。
其餘的一定是在遮罩下。
另外要注意一點。認真來說。其實z-index也有相對性依附的特性。
上面說的規則,是適用於根或是大組件而件。
相對應圖層的部份。則會採用10為一單位處理。
以上是我個人的習慣。一般如果遇到外部組件或是插件類的。理論上來說都可以符合規範。