Jeff的隨手筆記

學習當一個前端工程師

0%

『新手日記』Day-6 CSS的優先權

『新手日記』Day-6 CSS的優先權

https://miro.medium.com/max/1400/1*jwvlK7OcJ42g3Fsa41VzzA.jpeg

因為在等費爸的最後一舞,想想還是先把這篇打出來看完球賽就可以睡到自然醒了!!!

在寫學期2–2的A13的作業時因為CSS的效果沒有出來在,在交作業的時候順便在Lighthouse上詢問,Gino同學非常熱心的幫我解答外還給我一篇文章,讓我認識了優先權這個概念。

優先權

我們在使用的CSS其實是有順序的,當我們的CSS語法有重複的狀況,瀏覽器就會依照這個順序去執行。這個順序我們稱為優先權,或是權重。

css優先權排列:!important > inline style > ID > Class > Element > *

可以用這個網址來看你的優先權分數

我們分別來介紹:

!important

CSS優先權裡面最高級別,規則破壞者,所以“沒事別亂用!!!!!

inline style

直接在HTML標籤裡使用style 屬性指定 CSS 樣式。但由於我們在撰寫 CSS 時使用的樣式繁多,為了保持 HTML 的結構乾淨清楚,原則上不會採用這種方法。

https://miro.medium.com/max/1400/1*Irq2IP_ZUn2raUd-EItaTw.png

其他類似的做法還有:

HTML 內部載入

  • 在 HTML 文件的 head 元素中,使用 style 元素將 CSS 撰寫其內。

https://miro.medium.com/max/1010/1*hGX_QhduG7Td-4ZL_0kRLA.png

外部載入CSS

  • 使用 link 元素或是 @import 這兩種方法來載入一個外部檔案(檔名.css)。

https://miro.medium.com/max/1400/1*nZf4Lpw-wi8tBljXqgTpxQ.png

那這3個的優先權順序是:

inline style > HTML內部載入CSS > 外部載入CSS

ID

利用 ID 在CSS唯一性的特性,因此優先權高於其他選擇器

Class

除了我們時常使用的class外,另外包括屬性選擇器、偽類選擇器,例如 .container 、[type="radio"]:hover

Element

以 Element 選擇器為代表,另外包括偽元素選擇器,例如 div::before

****

全域選擇器以及+、~、>這三個符號的階級位於最後一階,優先權最低。但還是有贏的時候,就是當對上繼承而來的樣式時,全域選擇器會把繼承的樣式覆蓋掉(只是我還沒有看過繼承的樣式><”)。

簡單整理一下:

https://miro.medium.com/max/1400/1*uDPmD0VksmZwD9HzqaqmtA.png

新語法

這次在重新複習優先權的時候發現了一個優先權的語法@layer,以下是@layer的簡單介紹:

@layer

以優先級來講,永遠先考慮 @layer,再考慮 Specificity (權重)。

這是最新的語法@layer最直觀的一句話,他大幅度改變了優先權這件事。

有幾個重點:

只要有宣告@laye,後面宣告的一定大於前方宣告的,但可以在一開始定義誰大於誰(!important 另外解釋)

https://miro.medium.com/max/1380/1*tLFWk5HsYKP7hlLO04-w3A.png

如果有沒有宣告@layer的 沒宣告的優先權會變第一

https://miro.medium.com/max/1400/1*rfU0BI0Tf4xARMWGvgyfVQ.png

如果在前面先宣告@layer的順序 優先權就會從後面往前推

https://miro.medium.com/max/1396/1*BQw7YLFzfTgAwMAdU6KfMg.png

雖然有些規定但大致上都還是可以理解的,看到這裡是不是覺得這是一劑良藥啊!但客官請你繼續往下看,看完再決定:

大魔王 !important

https://miro.medium.com/max/1370/1*d9v_SzOjW5OQWsOuHWfHjg.png

什麼是反轉優先權,簡單來說就是只要有加!important的,優先權順序會變成 inline-style > * > Element > Class > ID

有沒有覺得一個頭兩個大呢?所以啊誰在給我亂用 !important 直接亂棒轟出去!!!

結語

沒有想到這次複習居然學到了一個新的語法,學習下來我是覺得還蠻理解的(不要用!important),但我實務經驗是0所以還不曉得到底好不好用、能不能用,但網路上很多篇文章都說這是未來的趨勢,至於是不是我們就交由時間來判斷了吧!!!

參考資料有放@layer的youtube的影片,大家有興趣可以看一下

參考資料:

AC教案

CSS的優先順位載入位置&撰寫順序&選擇器類型都會影響 css 的優先順位
selflearningsuccess.com