03. CSS選擇器

3.1 基礎選擇器


3.1.1 標簽選擇器

標簽選擇器一般用于定義全局樣式;
bootstrap中關于標題的全局定義:

h1,h2,h3,h4,h5,h6{
    margin: 10px, 0;
    font-family: inherit;
    font-weight: bold;
    line-height: 20px;
    color: inherit;
    text-rendering: optimizelegibility;
}
h1,h2,h3{
    leng-height: 40px;
}
h1{font-size: 38.5px;}
h2{font-size: 31.5px;}
h3{font-size: 24.5px;}
h4{font-size: 17.5px;}
h5{font-size: 14px;}
h6{font-size: 11.9px;}

3.1.2 類選擇器

又稱class選擇器;

注:從代碼可讀性和可維護性上說,最好不要給一個標簽增加多余兩個class屬性;盡量為class指定有意義的名字。

3.1.8 屬性選擇器

類似jQuery中的屬性選擇器,但有區別

$("div[id=test]")
div[id="test"]{
    /*style*/
}

使用通配符進行模糊匹配,語法跟jQuery選擇器相同,區別在引號;

a[src^="https"]    /*以https開頭*/
a[src$=".pdf"]     /*以.pdf結尾*/
a[src*="abc"]      /*屬性中包含abc字符串*/

3.1.10 復合選擇器

應用復合選擇器時,標簽選擇器一定要寫在最前面,否則無法識別

3.2 偽類選擇器


  1. :nth-child(n),與jQuery的子元素選擇器相同;
  2. :nth-last-child(n),與nth-child(n)類似,只是這里從最后一個元素開始計數
  3. :nth-of-type(n),類似于:nth-child(n),區別在于:li:nth-child(3),一旦第三個元素不是li元素,選擇器就不會起作用;p:nth-of-type(3)查詢的是第三個p元素;如果不加標簽類型,會自動選擇所有并列元素的第n個。
  4. :nth-last-of-type(n),類似于:nth-of-type,區別在于從最后一個開始計數
  5. :last-child,選擇元素的最后一個子元素。

注::last-child是CSS3新增的偽類選擇器,:first-child在CSS2種就已經加入了。IE6不支持:first-child,IE6-8不支持:last-child;

  1. :only-child,與jQuery類似,如果父元素只有一個子元素,如果有限定條件嗎,則取交集。 div p:only-child,選取div中唯一的子元素p
  2. :only-of-type,基本等同:only-child,區別在于不加限定條件的情況下,:only-of-type會選取body元素;
  3. :root,選取根元素,即html標簽
  4. :empty,選擇沒有任何內容的元素

3.2.2 目標偽類:target

URL前面有錨名稱#,指向文檔內某個具體的元素,這個被鏈接的元素就是目標元素。:target選擇器可用于選取當前活動的目標元素。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="{CHARSET}">
        <style>
            :target{
                background-color: #CCCCCC;
                border: 1px solid;
            }
        </style>
    </head>
    <body>
        <a href="#id1">id1</a>   <!--點擊id1,目標位置變為樣式表設置-->
        <a href="#id2">id2</a>
        <div id="id1">asd</div>
        <div id="id2">zxc</div>
        <div id="id3">qwe</div>
    </body>
</html>

3.2.3 狀態偽類

CSS3新增的偽類選擇器,用于表示表單元素的狀態,與jQuery中的表單對象屬性過濾選擇器相同;由于很多瀏覽器不支持CSS3,下面介紹如何用屬性選擇器代替狀態偽類;

  1. :enabled和:disabled
input:disabled{}
input[disabled]  /*使用屬性選擇器達到狀態偽類的相同效果*/
  1. :checked

3.2.4 否定偽類

:not( selector )

div :not(.myClass){}     /*選取div的子元素中,class不是myClass的元素*/

3.4 小結


  • 標簽選擇器主要用于定義全局樣式
  • 單一的類選擇器不要濫用,比較容易出現命名沖突等
  • 可以使用通配符進行一些全局設置
  • 子元素選擇器“>”和后代元素選擇器“空格”的區別;
  • 組選擇器可以很好的縮減冗余代碼;
  • CSS3之前的偽類選擇器有:link, :visuted, :hover, :active, :first-child, :lang
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.class 和 id 的使用場景? 類選擇器允許以一種獨立于文檔元素的方式來指定樣式。該選擇器可以單獨使用,也...
    草鞋弟閱讀 2,446評論 0 1
  • 一、CSS選擇器常見的有幾種? 基本選擇器 通配選擇器~選擇文檔中所有的html元素,用一個*表示 元素選擇器~選...
    dengpan閱讀 977評論 0 3
  • 1.class 和 id 的使用場景? 兩者都能選取DOM節點并給DOM節點添加樣式,但是W3C標準里規定頁面中只...
    饑人谷_米彌輪閱讀 413評論 0 1
  • 1.class 和 id 的使用場景? class:類選擇器,一個標簽可以有多個類且同一個類可以用到不同的標簽上,...
    饑人谷_兔子君閱讀 1,209評論 0 0
  • (1). 陰影模糊半徑與陰影擴展半徑的區別:陰影模糊半徑:此參數可選,其值只能是為正值,如果其值為0時,表示陰影不...
    Leisure_blogs閱讀 1,517評論 0 6