CSS 偽元素

什么是偽元素?

CSS 偽元素用于設置元素指定部分的樣式。

例如,它可用于:

  • 設置元素的首字母、首行的樣式
  • 在元素的內容之前或之后插入內容

語法

偽元素的語法:

selector::pseudo-element {
  property: value;
}

::first-line 偽元素

::first-line 偽元素用于向文本的首行添加特殊樣式。

下面的例子為所有 <p> 元素中的首行添加樣式:

實例

p::first-line {
  color: #ff0000;
  font-variant: small-caps;
}

親自試一試

注意:::first-line 偽元素只能應用于塊級元素。

以下屬性適用于 ::first-line 偽元素:

  • 字體屬性
  • 顏色屬性
  • 背景屬性
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

請注意雙冒號表示法 - ::first-line 對比 :first-line

在 CSS3 中,雙冒號取代了偽元素的單冒號表示法。這是 W3C 試圖區分偽類偽元素的嘗試。

在 CSS2 和 CSS1 中,偽類和偽元素都使用了單冒號語法。

為了向后兼容,CSS2 和 CSS1 偽元素可接受單冒號語法。

::first-letter 偽元素

::first-letter 偽元素用于向文本的首字母添加特殊樣式。

下面的例子設置所有 <p> 元素中文本的首字母格式:

實例

p::first-letter {
  color: #ff0000;
  font-size: xx-large;
}

親自試一試

注意:::first-letter 偽元素只適用于塊級元素。

下面的屬性適用于 ::first-letter 偽元素:

  • 字體屬性
  • 顏色屬性
  • 背景屬性
  • 外邊距屬性
  • 內邊距屬性
  • 邊框屬性
  • text-decoration
  • vertical-align(僅當 "float" 為 "none")
  • text-transform
  • line-height
  • float
  • clear

偽元素和 CSS 類

偽元素可以與 CSS 類結合使用:

實例

p.intro::first-letter {
  color: #ff0000;
  font-size: 200%;
}

親自試一試

上面的例子將以紅色和較大的字體顯示 class="intro" 的段落的首字母。

多個偽元素

也可以組合幾個偽元素。

在下面的例子中,段落的第一個字母將是紅色,字體大小為 xx-large。第一行的其余部分將變為藍色,并使用小型大寫字母。該段的其余部分將是默認的字體大小和顏色:

實例

p::first-letter {
  color: #ff0000;
  font-size: xx-large;
}
p::first-line {
  color: #0000ff;
  font-variant: small-caps;
}

親自試一試

CSS - ::before 偽元素

::before 偽元素可用于在元素內容之前插入一些內容。

下面的例子在每個 <h1> 元素的內容之前插入一幅圖像:

實例

h1::before {
  content: url(smiley.gif);
}

親自試一試

CSS - ::after 偽元素

::after 偽元素可用于在元素內容之后插入一些內容。

下面的例子在每個 <h1> 元素的內容之后插入一幅圖像:

實例

h1::after {
  content: url(smiley.gif);
}

親自試一試

CSS - ::selection 偽元素

::selection 偽元素匹配用戶選擇的元素部分。

以下 CSS 屬性可以應用于 ::selection

  • color
  • background
  • cursor
  • outline

下例使所選文本在黃色背景上顯示為紅色:

實例

::selection {
  color: red; 
  background: yellow;
}

親自試一試

所有 CSS 偽元素

選擇器 例子 例子描述
::after p::after 在每個 <p> 元素之后插入內容。
::before p::before 在每個 <p> 元素之前插入內容。
::first-letter p::first-letter 選擇每個 <p> 元素的首字母。
::first-line p::first-line 選擇每個 <p> 元素的首行。
::selection p::selection 選擇用戶選擇的元素部分。

所有 CSS 偽類

選擇器 例子 例子描述
:active a:active 選擇活動的鏈接。
:checked input:checked 選擇每個被選中的 <input> 元素。
:disabled input:disabled 選擇每個被禁用的 <input> 元素。
:empty p:empty 選擇沒有子元素的每個 <p> 元素。
:enabled input:enabled 選擇每個已啟用的 <input> 元素。
:first-child p:first-child 選擇作為其父的首個子元素的每個 <p> 元素。
:first-of-type p:first-of-type 選擇作為其父的首個 <p> 元素的每個 <p> 元素。
:focus input:focus 選擇獲得焦點的 <input> 元素。
:hover a:hover 選擇鼠標懸停其上的鏈接。
:in-range input:in-range 選擇具有指定范圍內的值的 <input> 元素。
:invalid input:invalid 選擇所有具有無效值的 <input> 元素。
:lang(language) p:lang(it) 選擇每個 lang 屬性值以 "it" 開頭的 <p> 元素。
:last-child p:last-child 選擇作為其父的最后一個子元素的每個 <p> 元素。
:last-of-type p:last-of-type 選擇作為其父的最后一個 <p> 元素的每個 <p> 元素。
:link a:link 選擇所有未被訪問的鏈接。
:not(selector) :not(p) 選擇每個非 <p> 元素的元素。
:nth-child(n) p:nth-child(2) 選擇作為其父的第二個子元素的每個 <p> 元素。
:nth-last-child(n) p:nth-last-child(2) 選擇作為父的第二個子元素的每個<p>元素,從最后一個子元素計數。
:nth-last-of-type(n) p:nth-last-of-type(2) 選擇作為父的第二個<p>元素的每個<p>元素,從最后一個子元素計數
:nth-of-type(n) p:nth-of-type(2) 選擇作為其父的第二個 <p> 元素的每個 <p> 元素。
:only-of-type p:only-of-type 選擇作為其父的唯一 <p> 元素的每個 <p> 元素。
:only-child p:only-child 選擇作為其父的唯一子元素的 <p> 元素。
:optional input:optional 選擇不帶 "required" 屬性的 <input> 元素。
:out-of-range input:out-of-range 選擇值在指定范圍之外的 <input> 元素。
:read-only input:read-only 選擇指定了 "readonly" 屬性的 <input> 元素。
:read-write input:read-write 選擇不帶 "readonly" 屬性的 <input> 元素。
:required input:required 選擇指定了 "required" 屬性的 <input> 元素。
:root root 選擇元素的根元素。
:target #news:target 選擇當前活動的 #news 元素(單擊包含該錨名稱的 URL)。
:valid input:valid 選擇所有具有有效值的 <input> 元素。
:visited a:visited 選擇所有已訪問的鏈接。