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 | 選擇所有已訪問的鏈接。 |