iT邦幫忙

0

CSS navbar z-index 設在哪一層?

css

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才是正確?
謝謝大家回答

咖咖拉 iT邦研究生 2 級 ‧ 2021-10-09 10:30:51 檢舉
依功能 依需求 沒有一定正確
事後改最少次的寫法
我認為就是最好的
0
毛毛
iT邦新手 3 級 ‧ 2021-10-09 14:16:30
最佳解答

以下個人見解

我們先要有組件這個概念
依照設定的組件配置
我們可以想成必須在網頁最上層顯示出來有點重要普通布局背景
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 設置可以隨心所欲,而我個人所喜好做法

  • 像 CSS 權重一樣,不會輕易覆蓋過去
  • 都是整數倍數,記起來相對容易,不用一直往回看自己設置多少,也比較具有邏輯
  • 可以依照組件在網頁上的重要程度設置,更加直覺

而以上是我個人的想法

實際大專案通常是整個團隊的,所以要根據團隊制定的規則來實行,
不然專案容易出現互相蓋來蓋去的問題,沒有共識的結果就是,數字千奇百怪、放飛自我。
可能哪天有個組件設置 z-index: 5487;z-index: 520; 都不奇怪。

ppp896 iT邦新手 5 級 ‧ 2021-10-10 17:02:24 檢舉

nav_menu外再設置z-index,這讓我疑問很久....?inherit繼承、initial默認CSS,Media Queries再設一次z-index:若不設會有什麼差別、影響?謝謝您的回答,專業清楚,感謝.

毛毛 iT邦新手 3 級 ‧ 2021-10-10 19:59:07 檢舉

我發現我文章內容有誤,如果只是單純這樣設置,沒影響吧~

ppp896 iT邦新手 5 級 ‧ 2021-10-10 20:08:53 檢舉

謝謝,我也是這樣想,但一些外國影片,有不少人這樣做!我才會多想...謝謝

0
Felix
iT邦新手 5 級 ‧ 2021-10-10 14:17:38

請把導航欄放在 bodybeforeend 位置附近,如此便不必設置 z-index 了。

事實上,使用 z-index 的情況通常都是不得已的,就像非必要不要使用 JavaScript 來控制 CSS 一樣。

對於 z-index 該如何設置,通常都是 1 + 1 累加為佳,這樣就不會有錯亂的問題。

當然,也是有人會直接設置 999 等層次,但是如果一個網頁大量設置 z-index 的話,如此設置肯定會出現問題。

說了這麼多,就是一句話,不要過度依賴 z-index 來安排層次

ppp896 iT邦新手 5 級 ‧ 2021-10-10 17:06:36 檢舉

謝謝,我再想想....感謝

0

基本上 z-index 也就是一種圖層的觀念。
上面你說都懂了,我就不在重覆說明。

你想要知道的數字的定義為何。
其實這倒是沒有一定的答案就是了。

我只能將我個人的使用習慣給你。

基本來說,我會用每100個為一個單位。且最低是100。不會有0或1的情況。
這是為了防止某些突發情況。

而一般來說,圖層大約3層就已經很多了。所以我大多基本是 100 500 1000
在定義上,一定得要在上層的就是1000。如彈跳訊息。遮罩則統一維持在500或900。
其餘的一定是在遮罩下。

另外要注意一點。認真來說。其實z-index也有相對性依附的特性。
上面說的規則,是適用於根或是大組件而件。
相對應圖層的部份。則會採用10為一單位處理。

以上是我個人的習慣。一般如果遇到外部組件或是插件類的。理論上來說都可以符合規範。

ppp896 iT邦新手 5 級 ‧ 2021-10-17 16:03:48 檢舉

謝謝

我要發表回答

立即登入回答