CSS 特异性看这篇就行了
CSS 特異性
背景:在我每次畫界面的時候,總會出現(xiàn)樣式沖突、樣式污染、一級很多樣式改不掉的問題。所以總結一文來徹底搞懂css樣式的特異性,方便你我他。
什么是css特異性?
如果有多個屬性或者選擇器,同時指向同一元素的CSS沖突 ,那么優(yōu)先使用什么樣式規(guī)則。那么便有了特異性的概念。
特異性(specificity)視為得分/等級,能夠確定最終將哪些樣式聲明應用于元素。
簡單來說:CSS特異性就是CSS樣式選擇器的權重計算。從而讓哪些樣式應用到元素上。
特異性層次
每一種選擇器都有自己的權重,依次是
行內樣式 > ID選擇器 > 類、屬性、偽類 > 元素、偽元素選擇器
我們來個例子說明一下:
代碼:
效果:
可以說明上面的選擇器權重是不同的。
權重計算特異質
這么多選擇器,那是不是我寫一個行內樣式其他樣式就全部沒用了呢?NONONO,這個時候我們就要來計算權重了。
我們以一個 0 0 0 0 四位數(shù)為樣式的權重總和
從最低的元素、偽元素選擇器 在個位+1 就是 0 0 0 1
類、屬性、偽類 在十位數(shù)+1 就是 0 0 1 0
ID選擇器 在百位數(shù)+1 就是 0 1 0 0
行內樣式 在千位數(shù)+1 就是 1 0 0 0
比較每一個權重值的總和,大的樣式優(yōu)先。
例子:
<body><div id="main"><div class="content"><p class="name">浪漫主義碼農</p><p class="hobby">愛好打籃球</p><p class="eat">是個吃貨</p></p></div></div> </body> <style>/* 權重 0 0 0 1 */p{color: red;}/* 權重 0 0 1 0 */.name{color: blue;}/* 權重 0 0 2 1 */.content p:nth-child(1){color: chartreuse;} </style>效果:
計算就是這樣計算的。但是如果有相同權重的,就按照定義的順序優(yōu)先的樣式
補充
除了上述的選擇器外,通用選擇器* 權重為0 0 0 0 為最低
!important 表示 非必要不使用,是比行內樣式更為重要,是權重最高的,無視其他。
例子:當我給最低的權重加一個!important
<body><div id="main"><div class="content"><p class="name" style="color: chartreuse;">浪漫主義碼農</p><p class="hobby" style="color: chartreuse;">愛好打籃球</p><p class="eat" style="color: chartreuse;">是個吃貨</p></p></div></div> </body> <style>/* 權重 0 0 0 2 */p:nth-child(1){color: red !important;}/* 權重 0 0 1 0 */.name{color: blue;} </style>效果:
寫在最后
如果有誤,歡迎大佬們評論指出。
💌 慢品人間煙火色,閑觀萬事歲月長 💌
一個心懷浪漫宇宙,也珍惜人間日常的碼農
總結
以上是生活随笔為你收集整理的CSS 特异性看这篇就行了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python时钟代码——利用python
- 下一篇: Delphi利用字符串序列号对象