首頁 web前端 前端問答 css3的偽類和偽元素的差別是什麼

css3的偽類和偽元素的差別是什麼

Dec 22, 2021 am 10:54 AM
css3 偽元素 偽類

區別:1、偽類用於已有元素處於某種狀態時為其添加對應的樣式,而偽元素用於創建一些不在DOM樹中的元素並為其添加樣式;2、偽元素會建立一個文檔樹以外的元素,偽類別不會;3、偽元素使用雙冒號「::」表示,偽類別使用單冒號「:」表示。

css3的偽類和偽元素的差別是什麼

本教學操作環境:windows7系統、CSS3&&HTML5版、Dell G3電腦。

什麼是偽類別和偽元素

#提到「偽」字,你想到了什麼? “假的”,“汪精衛偽政府”,“不存在的”······

偽類:用於已有元素處於某種狀態時(滑動、點擊等)為其添加對應的樣式,這個狀態是根據使用者行為而動態變化的。我的理解就是:本身不存在,只有在特定的情況(滑動、點擊)下才會被觸發的狀態,可以用css去修飾這個狀態下的物件。例如:當使用者懸停在指定元素時,可以透過:hover來描述這個元素的狀態,雖然它和一般css相似,可以為已有元素添加樣式,但是它只有處於DOM樹無法描述的狀態下才能為元素添加樣式,所以稱為偽類。

偽元素:用於建立一些不在DOM樹中的元素,並為其添加樣式。例如,我們可以透過:before來在一個元素之前添加一些文本,並為這些文本添加樣式,雖然用戶可以看見這些文本,但是它實際上並不在DOM文檔中。

偽類別與偽元素的差異:

請看下面範例:

範例一:

#
<ul>
 <li>第一列</li>
 <li>第二列</li>
</ul>
登入後複製

如果我們想要為第一列新增樣式,我們可以透過以下兩種方式:

(1)為第一列新增一個類,並在該類中定義樣式:

<ul>
  <li class="first-item">第一列</li> 
  <li>第二列</li></ul>
</ul>

.first-item{color:orange;}
登入後複製

(2)如果不用添加類別的方法,我們可以透過給第一個

  • 設定:first-child偽類別來為其添加樣式,這時,被修飾的li依然存在於DOM樹中

    <ul>
      <li>第一个</li>
      <li>第二个</li>
    </ul>
    
    
    li:first-child{color:orage;}
    登入後複製

    例二:

    <p>Hello World, and wish you have a good day!</p>
    登入後複製

    想要為該段落第一個字母添加樣式,可以有以下方法:

    (1)給第一個字母包裹元素,並為span設定樣式:

    <p>
      <span class="first">H</span>ello World, and wish you have a good day!
    </p> 
    
    
    .first{color:red;}
    登入後複製

    (2)如果不建立元素,我們可以透過給

    元素設定P:first-letter偽元素為其添加樣式,這時看起來像是創建了一個虛擬的span元素並為其添加樣式,但實際上在DOM數中並不存在這個span元素

    <p>Hello World, and wish you have a good day!</p>
    
    p:first-letter{color:red;}
    登入後複製

    從上述例子中我們可以看出:偽類的操作物件是文檔樹中已有的元素,而偽元素則建立了一個文檔樹外的元素。因此,偽類別與偽元素的差別在於:有沒有建立一個文檔樹以外的元素。

    偽元素使用單冒號還是雙冒號?

    css3規範中要求使用雙冒號(::)表示偽元素,以此來區分偽類和偽元素,例如::before和::after等偽元素使用雙冒號(::),:hover和:active偽類使用單冒號(:)。除了一些低於IE8版本的瀏覽器外,大部分瀏覽器都支援偽元素的雙冒號(::)表示方法。

    然而除了少數偽元素如::backdrop必須使用雙冒號(::),大部分偽元素都支援單冒號和雙冒號的寫法,例如::after,寫成:after一樣可以正常運行。

    w3c標準中說到,雖然CSS3標準要求偽元素使用雙冒號的寫法,但也依然支持單冒號的寫法。為了向後相容,我們建議你在目前還是使用單冒號的寫法。

    常用偽類別有:

    :active 選擇正在被啟動的元素(符合指定狀態)

    :hover 選擇被滑鼠懸浮的元素(符合指定狀態)

    :link 選擇未存取的元素(符合指定狀態)

    #:visited 選擇已被存取的元素(符合指定狀態)

    :first-child 選擇滿足是其父元素的第一個子元素的元素

    :lang(value) 選擇帶有指定lang 屬性的元素

    :focus 選擇擁有鍵盤輸入焦點的元素

    :enable 選擇每個已啟動的元素

    :disable 選擇每個已禁止的元素

    :checked 選擇每個被選取的元素

    :target 選擇目前的錨點元素

    :first-of-type 選擇滿足是其父元素的第一個某類型子元素的元素

    :last-of- type 選擇滿足是其父元素的最後一個某類型子元素的元素

    :only-of-type 選擇滿足是其父元素的唯一一個某類型子元素的元素

    : nth-of-type(n) 選擇滿足是其父元素的第n個某類型子元素的元素

    #:nth-last-of-type(n) 選擇滿足是其父元素的倒數第n個某類型的元素

    :only-child 選擇滿足是其父元素的唯一子元素的元素

    :last-child 選擇滿足是其父元素的最後一個元素的元素

    :nth-child(n) 選擇滿足是其父元素的第n個子元素的元素

    :nth-last-child(n) 選擇滿足是其父元素的倒數第n個子元素的元素

    :empty 選擇滿足沒有子元素的元素

    :in-range 選擇滿足值在指定範圍內的元素

    :out-of-range 選擇值不在指定範圍內的元素

    :invalid 選擇滿足值為無效值的元素

    :valid 選擇滿足值為有效值的元素

    :not(selector) 選擇不符合selector的元素

    :optional 選擇為可選項的表單元素,即沒有「required」屬性

    :read-only 選擇有"readonly"的表單元素

    :read-write 選擇沒有"readonly"的表單元素

    :root 選擇根元素

    常用偽元素

    ::first-letter 選擇指定元素的第一個單字

    ::first-line 選擇指定元素的第一行

    ::after 在指定元素的內容前面插入內容

    ::before 在指定元素的內容後面插入內容

    ::selection 選擇指定元素中被使用者選取的內容

    (學習影片分享:css影片教學

    以上是css3的偽類和偽元素的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

  • 本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    純CSS3怎麼實現波浪效果? (程式碼範例) 純CSS3怎麼實現波浪效果? (程式碼範例) Jun 28, 2022 pm 01:39 PM

    純CSS3怎麼實現波浪效果?這篇文章就來跟大家介紹一下使用 SVG 和 CSS 動畫來製作波浪效果的方法,希望對大家有幫助!

    巧用CSS實現各種奇形怪狀按鈕(附代碼) 巧用CSS實現各種奇形怪狀按鈕(附代碼) Jul 19, 2022 am 11:28 AM

    這篇文章帶大家看看怎麼使用 CSS 輕鬆實現高頻出現的各類奇形怪狀按鈕,希望對大家有幫助!

    css怎麼隱藏元素但不佔空間 css怎麼隱藏元素但不佔空間 Jun 01, 2022 pm 07:15 PM

    兩種方法:1、利用display屬性,只要為元素加上「display:none;」樣式即可。 2.利用position和top屬性設定元素絕對定位來隱藏元素,只需為元素加上「position:absolute;top:-9999px;」樣式。

    css3怎麼實現花邊邊框 css3怎麼實現花邊邊框 Sep 16, 2022 pm 07:11 PM

    在css中,可以利用border-image屬性來實作花邊邊框。 border-image屬性可以使用圖片來建立邊框,即給邊框加上背景圖片,只需要將背景圖片指定為花邊樣式即可;語法「border-image: url(圖片路徑) 向內偏移值圖像邊界寬度outset 是否重複;」。

    原來利用純CSS也能實現文字輪播與圖片輪播! 原來利用純CSS也能實現文字輪播與圖片輪播! Jun 10, 2022 pm 01:00 PM

    怎麼製作文字輪播與圖片輪播?大家第一想到的是利用js,其實利用純CSS也能實現文字輪播與圖片輪播,下面來看看實作方法,希望對大家有幫助!

    使用:nth-child(n+3)偽類選擇器選擇位置大於等於3的子元素的樣式 使用:nth-child(n+3)偽類選擇器選擇位置大於等於3的子元素的樣式 Nov 20, 2023 am 11:20 AM

    使用:nth-child(n+3)偽類選擇器選擇位置大於等於3的子元素的樣式,具體程式碼範例如下:HTML程式碼:&lt;divid="container"&gt;&lt;divclass="item"&gt ;第一個子元素&lt;/div&gt;&lt;divclass="item"&

    為什麼偽元素失效了 為什麼偽元素失效了 Nov 21, 2023 pm 05:13 PM

    偽元素失效了的原因:1、選擇器問題;2、樣式衝突;3、繼承問題;4、語法錯誤;5、瀏覽器相容性問題等。詳細介紹:1、選擇器問題,偽元素的選擇器可能不正確,導致無法選擇到目標元素;2、樣式衝突,如果在CSS中存在樣式衝突,可能會導致偽元素失效;3、繼承問題,偽元素可能無法繼承某些樣式屬性;4、語法錯誤,如果在CSS中存在語法錯誤,可能會導致偽元素失效;5、瀏覽器相容性問題等等。

    巧用CSS3濾鏡製作文字快閃切換動畫效果! 巧用CSS3濾鏡製作文字快閃切換動畫效果! Jul 20, 2022 am 10:55 AM

    這篇文章帶大家看看怎麼利用CSS3濾鏡實現高級感拉滿的文字快閃切換動畫效果,希望對大家有幫助!

    See all articles