1. 程式人生 > >CSS常用選擇器及優先順序

CSS常用選擇器及優先順序

基礎選擇器

1. 通用選擇器,匹配任何元素:*

    *{

        color:#FF0000;

    }

2.標籤選擇器,匹配指定的所有標籤:

    p{

        color:#FF0000;

    }

3. class選擇器,匹配所有包含指定class的元素

    .hello{

        color:#FF0000;

    }

    p標籤中,class=hello的所有元素,注意,這裡p和.hello之間不能有空格,空格是後代選擇器

    p.hello{

        color:#FF0000;

    }

4. id選擇器,匹配所有包含指定id的元素

    #hello{

        color:#FF0000;

    }

    p標籤中,id=hello的所有元素,這裡p和#hello之間不能有空格,空格是後代選擇器

    p#hello{

        color:#FF0000;

    }

組合選擇器

1. 多元素選擇器,用','逗號隔開元素,不要有空格出現

    p,a{

        color:#FF0000;

    }

2. 後代元素選擇器,用' '空格隔開元素

    div p{

        color:#FF0000;

    }

3. 子元素選擇器,用'>'大於符號隔開元素,不要出現空格

    div>p{

        color:#FF0000;

    }

下面是很重要的優先順序順序

層疊優先順序:

瀏覽器預設< 外部樣式表 < 內部樣式表 < 內聯樣式

{

    瀏覽器預設:不寫style的時候;

    外部樣式表:引用的外部css檔案;

    內部樣式表:在<style>...</style>中寫的樣式;

    內聯樣式:在<p style="..."></p>中寫的樣式;

}

選擇器優先順序:

通用選擇器< 標籤選擇器 < 類選擇器 < 類派生選擇器 < ID選擇器 < ID派生選擇器

{

    派生選擇器又叫做上下文選擇器,比如"div .test #abc{}"

    對於派生選擇器,當有"#"號出現時,不管'#'號在什麼地方,第一個或者中間或者最後一個,

    都視為ID派生選擇器,優先順序高於只有一個選擇的ID選擇器,比如:

        div #abc .hello{} 優先順序高於 #abc{}

    同理,類派生選擇器,當派生選擇器中沒有'#',而有'.'出現時,叫做類派生選擇器

        div .hello p{}  優先順序高於.hello{}

    那麼,對於同是派生選擇器,優先順序又是怎樣的呢?

    對於ID派生選擇器,ID選擇器個數多的優先順序高於ID選擇器個數少的,比如:

        div #a #b #c{} 優先順序高於 div #a #b .c{}

    當ID選擇器個數相同的時候,根據誰在後用誰,比如:

        div #a #b .c{}

        div #a .b #c{}

        那麼最後起作用的將是div #a .b #c{}

    對於類派生選擇器,是和ID派生選擇器一樣的。

}

綜合起來:

瀏覽器預設,優先順序最低

內聯樣式,優先順序最高

外部樣式表優先順序始終小於內部樣式表

在內部和外部樣式表中,又按照選擇器優先順序區分,元素的效果總是由優先順序最高的選擇器所規定的。

(從上面可以看出,優先順序的順序總是由最詳細的選擇器所決定的,哪個選擇器規定的越清楚,就用誰)