1. 程式人生 > >css偽類選擇器與偽元素選擇器區別

css偽類選擇器與偽元素選擇器區別

偽類選擇器,和一般的DOM中的元素樣式不一樣,它並不改變任何DOM內容。只是插入了一些修飾類的元素,這些元素對於使用者來說是可見的,但是對於DOM來說不可見。偽類的效果可以通過新增一個實際的類來達到。

a:link|a:visited|a:hover|a:active

在 CSS 定義中,a:hover 必須被置於 a:link 和 a:visited 之後,才是有效的,a:active 必須被置於 a:hover 之後,才是有效的。

由於狀態是動態變化的,所以一個元素達到一個特定狀態時,它可能得到一個偽類的樣式;當狀態改變時,它又會失去這個樣式。由此可以看出,它的功能和class有些類似,但它是基於文件之外的抽象,所以叫偽類。

複製程式碼
:focus
/* 偽類將應用於擁有鍵盤輸入焦點的元素。 */
:first-child
/* 偽類將應用於元素在頁面中第一次出現的時候。 */
:lang
/* 偽類將應用於元素帶有指定lang的情況。 */
複製程式碼

偽元素選擇器,偽元素的效果是需要通過新增一個實際的元素才能達到的。

複製程式碼
/* 為某個元素的第一行文字使用樣式。 */
:first-line
/* 為某個元素中的文字的首字母或第一個字使用樣式。 */
:first-letter
/* 在某個元素之前插入一些內容。 */
:before
/* 在某個元素之後插入一些內容。 */
:after
複製程式碼

結構性偽類選擇器

:root()選擇器,從字面上我們就可以很清楚的理解是根選擇器,他的意思就是匹配元素E所在文件的根元素。在HTML文件中,根元素始終是<html>。:root選擇器等同於<html>元素。

:not()選擇器稱為否定選擇器,和jQuery中的:not選擇器一模一樣,可以選擇除某個元素之外的所有元素。

:empty()選擇器表示的就是空。用來選擇沒有任何內容的元素,這裡沒有內容指的是一點內容都沒有,哪怕是一個空格。

:target()選擇器來對頁面某個target元素(該元素的id被當做頁面中的超連結來使用)指定樣式,該樣式只在使用者點選了頁面中的超連結,並且跳轉到target元素後起作用。

:first-child()選擇器表示的是選擇父元素的第一個子元素的元素E。簡單點理解就是選擇元素中的第一個子元素,記住是子元素,而不是後代元素。

:nth-child()選擇某個元素的一個或多個特定的子元素。

複製程式碼
<!DOCTYPE html>
<html>
    <head></head>
    <style type="text/css"> 
        div p:nth-child(n){
            color:red;
        }
        div p:nth-child(2n){
            color:yellow;
        }
    </style>
    <body>
        <div>
            <p>111</p>
            <p>222</p>
            <p>333</p>
            <p>444</p>
            <p>555</p>
        </div>
    </body>
</html>
複製程式碼


:nth-last-child()從某父元素的最後一個子元素開始計算,來選擇特定的元素。

複製程式碼
<!DOCTYPE html>
<html>
    <head></head>
    <style type="text/css"> 
        div p:nth-last-child(2){
            color:red;
        }
    </style>
    <body>
        <div>
            <p>111</p>
            <p>222</p>
            <p>333</p>
            <p>444</p>
            <p>555</p>
        </div>
    </body>
</html>
複製程式碼

:nth-of-type(n)選擇器和:nth-child(n)選擇器非常類似,不同的是它只計算父元素中指定的某種型別的子元素。當某個元素中的子元素不單單是同一種類型的子元素時,使用:nth-of-type(n)選擇器來定位於父元素中某種型別的子元素是非常方便和有用的。

:only-child表示的是一個元素是它的父元素的唯一一個子元素。

CSS3中的偽元素

CSS3對偽元素進行了一定的調整,在以前的基礎上增加了一個:
也就是現在變成了::first-letter,::first-line,::before,::after
另外還增加了一個::selection

在css3中,已經明確規定了偽類用一個冒號來表示,而偽元素則用兩個冒號來表示。

::first-line選擇元素的第一行,比如說改變每個段落的第一行文字的樣式,我們就可以使用這個

::before::after這兩個主要用來給元素的前面或後面插入內容,這兩個常用"content"配合使用,見過最多的就是清除浮動

複製程式碼
<!DOCTYPE html>
<html>
    <head></head>
    <style type="text/css"> 
        .test:before{
            content:"Hello";
        }
        .test.after{
            clear:both;
        }
    </style>
    <body>
        <div class="test"></div>
    </body>
</html>
複製程式碼

::selection用來改變瀏覽網頁選中文的預設效果

UI狀態元素偽類選擇器

E:checked{attribute} 匹配所有使用者介面(form表單)中處於選中狀態的元素
E:enabled{attribute} 匹配所有使用者介面(form表單)中處於可用狀態的元素
E:disabled{attribute} 匹配所有使用者介面(form表單)中處於不可用狀態的元素
E::selection{attribute} 匹配元素中被使用者選中或處於高亮狀態的部分

目標偽類

E:target{attribute}   匹配相關URL指向的元素