国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CSS 特殊性詳解

Lucky_Boy / 1602人閱讀

摘要:特殊性我們可以用很多種寫法來定位一個元素,而選擇器的特殊性值則是決定哪一個勝出的關鍵。選擇器的特殊性值其實很簡單,就是的形式。按照特殊性對應用到給定元素的所有聲明排序。有較高特殊性的元素權重要大于有較低的特殊性的元素。

之前學CSS一直沒有深入的去研究CSS選擇器的優先級,這次好好的看了下之后寫的時候特殊性值仿佛都浮現在眼前,現在寫的時候心里更加清晰,這里梳理一下學到的東西。

特殊性(specificity)

我們可以用很多種寫法來定位一個元素,而選擇器的特殊性值則是決定哪一個勝出的關鍵。選擇器的特殊性值其實很簡單,就是 0,0,0,1/0,1,0,1/0,0,0,5/... 的形式。

主要有四個規則:

用了ID +0,1,0,0

用class、屬性(如[id="btn1"])、偽類(如:hover) +0,0,1,0

元素和偽元素(如::before) 加0,0,0,1

結合符對特殊性沒有貢獻,而通配符的貢獻是0,0,0,0.(所以他們對總特殊性沒有影響)

那么最前面的0呢?其實這個是留給內聯樣式的的~所以內聯樣式的特殊性最高,是1,0,0,0.

接下來我們再看幾個例子相信能更好地理解:

p{font-style: normal} /* 0,0,0,1 */
body div p{font-style:italic} /* 0,0,0,3 */(winner)

html > body table tr[id="totals"] td ul > li{color:maroon;} /* 0,0,1,7 */
li#answer {color: navy} /* 0,1,0,1 /* (winner)

我們注意到第二組盡管第一個的特殊性值的最后一part已經達到了7,但是還是輸給了0,1,0,1.特殊性值并不是簡單的進制相加和比較,而是從左向右排序的,,只要前面比你大,不管后面你是7還是77,都比你特殊性高。如1,0,0,0大于0,10,0,0.

這是從網上找到的一張圖~很有意思.

最后一點則是重要聲明:

p.dark{color: #333 !important;}

重要聲明并沒有貢獻特殊性值,但是重要聲明總是會覆蓋非重要聲明,所以我們可以把重要聲明和非重要生命分為兩組,非重要聲明使用特殊性值來解決沖突,重要聲明的沖突會在重要聲明內部解決.

繼承

繼承很簡單,后代元素樣式會繼承父元素的樣式.
但是顯然邊框,盒子模型的外邊距、內邊距等等都是不能繼承的。
繼承的值不貢獻特殊性,我們要注意這和0,0,0,0特殊性是有區別的.
0,0,0,0特殊性會優先于無特殊性.

*{color: gray}
h1{color: black}

css specificity

em中的字體顏色會是灰色的,因為0特殊性比繼承值優先級高.

層疊

CSS其實不就叫層疊樣式表嘛(cascading style sheet),所以層疊是CSS最核心的概念,而層疊其實就是結合我們前面所說的特殊性和繼承做到的.
CSS的層疊規則如下:

找出所有相關的規則,這些規則都包含與一個給定元素匹配的選擇器。

按顯式權重對應用到該元素的所有聲明排序2)按照顯式權重對應用到該元素的所有聲明排序。標志!important的規則的權重要高于沒有!important標志的規則。按照來源對應用到給定元素的所有聲明排序。共有3種來源,創作人員,讀者和用戶代理。正常情況下,創作人員 > 讀者模式 > 用戶代理的默認樣式。

按照特殊性對應用到給定元素的所有聲明排序。有較高特殊性的元素權重要大于有較低的特殊性的元素。

按照出現的順序應用到給定元素的所有聲明排序。一個聲明在樣式表或文檔中越后出現,它的權重就越大。如果樣式表中右導入的樣式表,一般認為出現在導入樣式表中的聲明在前,主樣式表中的所有聲明在后。

css權威指南balabala了這一大段,還是簡單點來描述吧.

首先我們確定來源
讀者的重要聲明>創作人員的重要聲明>創作人員的正常聲明>讀者的正常聲明>用戶代理聲明.
(讀者的聲明就是用戶自定義的樣式,比如在設置中改變字體大小.)

然后再按特殊性排序,特殊性值高的優先級高.

如果特殊性值還是一樣,那么后定義的規則優先.

總結

在實際開發過程中,我們可能只需要知道內聯樣式>id>class即可,如果特殊性相同,后定義的規則優先.

參考書籍: 《CSS: The Definitive Guide》

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/111440.html

相關文章

  • 帶你走進CSS定位詳解

    摘要:相對于其最近的一個定位設置的父對象進行絕對定位,可用。代碼基本語法默認值,無特殊定位。代碼相對定位相對定位生成相對定位的元素,相對于其它位置進行定位。結語結語帶你走進定位詳解,多試試,熟能生巧嘛 學習CSS相關知識,定位是其中的重點,也是難點之一,如果不了解css定位有時候都不知道怎么用,下面整理了一下關于定位屬性的具體理解和應用方案。 一:定位 定位屬性列表 position top...

    googollee 評論0 收藏0
  • 詳解 CSS 屬性 - 偽類和偽元素的區別

    摘要:之前寫了一篇詳解屬性的博文,當時自己沒分清楚偽元素和偽類,所以在文章內把概念混淆了,慶幸兄指正了我的錯誤,所以今天打算好好研究下兩者的區別。偽元素用于將特殊的效果添加到某些選擇器。偽類種類偽元素種類區別這里用偽類和偽元素來進行比較。 之前寫了一篇 《詳解 CSS 屬性 - :before && :after》 的博文,當時自己沒分清楚偽元素和偽類,所以在文章內把概念混淆了,慶幸 @ri...

    jiekechoo 評論0 收藏0
  • 詳解 CSS 屬性 - 偽類和偽元素的區別

    摘要:之前寫了一篇詳解屬性的博文,當時自己沒分清楚偽元素和偽類,所以在文章內把概念混淆了,慶幸兄指正了我的錯誤,所以今天打算好好研究下兩者的區別。偽元素用于將特殊的效果添加到某些選擇器。偽類種類偽元素種類區別這里用偽類和偽元素來進行比較。 之前寫了一篇 《詳解 CSS 屬性 - :before && :after》 的博文,當時自己沒分清楚偽元素和偽類,所以在文章內把概念混淆了,慶幸 @ri...

    AZmake 評論0 收藏0
  • 詳解 CSS 屬性 - 優先級問題

    摘要:當你將一個樣式添加到元素上卻發現不起作用時,那就是遇到優先級問題了。那么應該如何處理優先級問題呢,下面我總結了一些解決優先級問題的常用法則。如內部樣式外部樣式內聯樣式此時顯示的優先級是。 當你將一個樣式添加到元素上卻發現不起作用時,那就是遇到優先級問題了。那么應該如何處理 CSS 優先級問題呢,下面我總結了一些解決 CSS 優先級問題的常用法則。 樣式距離 我們可以通過使用外部樣式...

    ZoomQuiet 評論0 收藏0
  • CSS優先級詳解

    摘要:優先級是由選擇器組成的匹配規則決定的。這些繼承的樣式的優先級永遠低于元素本身的樣式,包括通用選擇器最終的顏色是紅色的。永遠都要優先考慮使用樣式規則的優先級來解決問題而不是。 概念 瀏覽器是通過判斷優先級,來決定到底哪些屬性值是與元素最相關的,從而應用到該元素上。優先級是由選擇器組成的匹配規則決定的。 如何計算? 優先級是根據由每種選擇器類型構成的級聯字串計算而成的. 它不是一個對...

    Juven 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<