Pseudo-elementy CSS

什么是伪元素?

CSS 伪元素用于设置元素指定部分的样式。

例如,它可用于:

  • 设置元素的首字母、首行的样式
  • 在元素的内容之前或之后插入内容

语法

伪元素的语法:

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

::first-line 伪元素

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

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

Przykład

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

Spróbuj sam

注意:::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> 元素中文本的首字母格式:

Przykład

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

Spróbuj sam

注意:::first-letter 伪元素仅适用于块级元素。

下面的属性适用于 ::first-letter 伪元素:

  • 属性的字体
  • 属性的颜色
  • 属性的背景
  • 属性的外边距
  • 属性的内部边距
  • 属性的边框
  • text-decoration
  • vertical-align (tylko gdy "float" jest "none")
  • text-transform
  • line-height
  • float
  • clear

Pseudo-elementy i klasy CSS

Pseudo-elementy mogą być używane z CSS klasami:

Przykład

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

Spróbuj sam

Powyższy przykład wyświetli pierwszą literę akapitu o klasie "intro" jako czerwona i z dużą czcionką.

Wiele pseudo-elementów

Można również łączyć kilka pseudo-elementów.

W poniższym przykładzie, pierwsza litera akapitu będzie czerwona, rozmiar czcionki to xx-large. Reszta pierwszej linii będzie niebieska, używając małych kapitali. Reszta akapitu będzie miała domyślny rozmiar czcionki i kolor:

Przykład

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

Spróbuj sam

CSS - pseudo-element ::before

::before Pseudo-elementy mogą być używane do wstawienia zawartości przed zawartością elementu.

Poniższy przykład wstawia obraz przed zawartością każdego elementu <h1>:

Przykład

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

Spróbuj sam

CSS - pseudo-element ::after

::after Pseudo-elementy mogą być używane do wstawienia zawartości za zawartością elementu.

Poniższy przykład wstawia obraz za zawartością każdego elementu <h1>:

Przykład

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

Spróbuj sam

CSS - pseudo-element ::selection

::selection pseudo-elementów pasujących do wybranych części elementu.

Poniższe CSS atrybuty mogą być zastosowane do ::selection:

  • color
  • background
  • cursor
  • outline

Poniższy przykład pokazuje, jak wybrane tekst wyświetla się na żółtym tle jako czerwony:

Przykład

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

Spróbuj sam

Wszystkie CSS pseudo-elementy

Wybieracz Przykład Opis przykładu
::after p::after Wstaw zawartość za każdym elementem <p>.
::before p::before Wstaw zawartość przed każdym elementem <p>.
::first-letter p::first-letter Wybierz pierwszą literę każdego elementu <p>.
::first-line p::first-line Wybierz pierwszą linię każdego elementu <p>.
::selection p::selection Wybierz część elementu wybranego przez użytkownika.

Wszystkie CSS pseudoklasy

Wybieracz Przykład Opis przykładu
:aktywny a:aktywny Wybierz aktywny link.
:zaznaczony input:zaznaczony Wybierz każdy <input> element, który jest zaznaczony.
:wyłączony input:wyłączony Wybierz każdy <input> element, który jest w stanie wyłączony.
:pusty p:pusty Wybierz każdy <p> element, który nie ma synów.
:wlaczony input:wlaczony Wybierz każdy <input> element, który jest w stanie włączony.
:pierwszy-od-ostatniego p:pierwszy-od-ostatniego Wybierz każdy <p> element jako pierwszy syn elementu nadrzędnego.
:pierwszy-od-rodzaju p:pierwszy-od-rodzaju Wybierz każdy <p> element jako pierwszy syn elementu nadrzędnego.
:aktywny input:aktywny Wybierz elementy <input>, które są w stanie aktywnym.
:podkreślony a:podkreślony Wybierz linki, nad którymi jest podtrzymany kursor myszy.
:zakres input:zakres Wybierz <input> elementy z wartościami w określonym zakresie.
:nieważne input:nieważne Wybierz wszystkie <input> elementy z nieważnymi wartościami.
:lang(język) p:lang(it) Wybierz każdy <p> element, którego wartość atrybutu lang zaczyna się od "it".
:ostatni-od-ostatniego p:ostatni-od-ostatniego Wybierz każdy <p> element jako ostatni syn elementu nadrzędnego.
:ostatni-od-rodzaju p:ostatni-od-rodzaju Wybierz każdy <p> element jako ostatni syn elementu nadrzędnego.
:link a:link Wybierz wszystkie nieodwiedzone linki.
:not(selector) :not(p) Wybierz każdy element, który nie jest <p>.
:trzecia(n) p:trzecia Wybierz każdy <p> element jako drugi syn elementu nadrzędnego.
:trzecia-od-ostatniego(n) p:trzecia-od-ostatniego Wybierz każdy <p> element jako drugi syn elementu nadrzędnego, licząc od ostatniego syna.
:trzecia-od-ostatniego(n) p:trzecia-od-ostatniego Wybierz każdy element <p>, który jest drugim dzieckiem swojego rodzica, licząc od ostatniego dziecka.
:nth-of-type(n) p:nth-of-type(2) Wybierz każdy element <p>, który jest drugim elementem tego samego typu w swoim rodzicu.
:only-of-type p:only-of-type Wybierz każdy element <p>, który jest jedynym elementem tego samego typu w swoim rodzicu.
:only-child p:only-child Wybierz element <p>, który jest jedynym dzieckiem swojego rodzica.
:optional input:optional Wybierz element <input> bez atrybutu "required".
:out-of-range input:out-of-range Wybierz element <input> o wartości poza określonym zakresem.
:read-only input:read-only Wybierz element <input> z atrybutem "readonly".
:read-write input:read-write Wybierz element <input> bez atrybutu "readonly".
:required input:required Wybierz element <input> z atrybutem "required".
:root root Wybierz pierwotny element elementu.
:target #news:target Wybierz bieżący element #news (kliknij URL zawierający nazwę tego atrybutu).
:valid input:valid Wybierz wszystkie elementy <input> o poprawnych wartościach.
:visited a:visited Wybierz wszystkie odwiedzone linki.