CSS 的虛擬類別 (Pseudo Class) 和虛擬元素 (Pseudo Element)

虛擬類別 (Pseudo Class) 的執行對象是文件樹中已有的元素,而虛擬元素 (Pseudo Element) 則新增了一個文件樹外的元素。兩者的差別在於:有沒有新增一個文件樹外的元素。

虛擬類別 (Pseudo Class) 

用於向某些選擇器添加特殊的效果,使用一個冒號「:」開頭。

一、錨點虛擬類別

  • :link
  • :visited
  • :hover
  • :active

二、狀態虛擬類別

:checked、unchecked、:enabled、:disabled

三、-child

  • :first-child:第一個子元素
  • :last-child:最後一個子元素
  • :nth-child(數字):第幾個子元素 (從 1 數起,不是從 0)
  • :nth-child(2n):偶數的子元素 (2 的倍數)
  • :nth-child(2n+1):奇數的子元素
  • :nth-last-child(數字):從後面數來第幾個子元素
  • :only-child:父元素內只有一個子元素

四、-of-type

  • :first-of-type:同一種元素的第一個
  • :last-of-type:同一種元素的最後一個
  • :nth-of-type(數字):同一種元素裏頭的第幾個
  • :nth-last-of-type(數字):同一種元素從後面屬過來第幾個
  • :only-of-type:只有這種元素



虛擬元素 (Pseudo Element)

用於將特殊的效果添加到某些選擇,使用兩個冒號「::」開頭。虛擬元素和真實元素一樣,我們可以把它當做 HTML 中常用的元素來使用,但它只能利用 CSS 來產生,而且並不在文件樹中,所以無法對他們進行分類。

::before (:before)

在原本的元素「之前」加入內容,以 display:inline-block 的屬性存在。

::after(:after)

在原本的元素「之後」加入內容,以 display:inline-block 的屬性存在。

※ ::before (:before) 與 ::after (:after) 一定要具備 content 的屬性

::first-line (:first-line)


::first-letter (:first-letter)


::cue (:cue)


::selection


::backdrop


::placeholder


::marker


::spelling-error


::grammar-error

留言