Pseudoelement CSSPseudoelementy

::after

Tworzy wirtualny element na końcu zawartości elementu. Idealny do strzałek, znaczków, podkreśleń i nakładek.

Na tej stronie

Przykład

#
CSS
.card {
  position: relative;
}

.card a::after {
  content: "";
  position: absolute;
  inset: 0;
}

.card:hover {
  outline: 2px solid #a78bfa;
}
Podgląd

Niewidoczny ::after linku przykrywa całą kartę, więc kliknięcie w dowolne miejsce działa jak kliknięcie w tytuł.

Definicja i zastosowanie

#

Pseudoelement ::after działa jak ::before, tylko wstawia nowe dziecko na końcu treści elementu, po wszystkim, co jest w HTML. Też wymaga właściwości content i też jest domyślnie elementem liniowym.

Typowe zastosowania to znaczki za tekstem (strzałka przy linku zewnętrznym, gwiazdka przy polu wymaganym), dymki z podpowiedzią i nakładki. Pseudoelement z position: absolute i inset: 0 przykrywa cały element, co przydaje się do przyciemnienia zdjęcia albo do rozciągnięcia klikalnego obszaru linku na całą kartę.

Element może mieć jednocześnie ::before i ::after, więc dostajesz dwa dodatkowe pudełka bez dotykania HTML. Pozycjonowany ::after rysuje się nad resztą treści elementu. Jeśli nakładka zasłania tekst albo przechwytuje kliknięcia, pomogą z-index i pointer-events: none.

Składnia

#
Składnia
selektor::after { content: …; }

Typowe zastosowania

#
  • content: " ↗"

    Strzałka za tekstem, typowa dla linków prowadzących na inne strony.
  • content: attr(data-time)

    Tekst połączony z wartością atrybutu data-time. Kolejne fragmenty w content po prostu wypisujesz obok siebie.
  • :hover::after

    Podkreślenie, które rozwija się po najechaniu. Najedź kursorem na link.
  • position: absolute

    Znaczek przypięty do rogu elementu. Rodzic potrzebuje position: relative.

Typowe zastosowania w praktyce

#

content: " ↗"

Strzałka za tekstem, typowa dla linków prowadzących na inne strony.
.demo::after { content: " ↗"; }

content: attr(data-time)

Tekst połączony z wartością atrybutu data-time. Kolejne fragmenty w content po prostu wypisujesz obok siebie.
.demo::after {
  content: " · " attr(data-time);
  color: #a1a1aa;
}

:hover::after

Podkreślenie, które rozwija się po najechaniu. Najedź kursorem na link.
.demo::after {
  content: "";
  display: block;
  height: 2px;
  background: #a78bfa;
  transform: scaleX(0);
  transition: transform 0.25s;
}
.demo:hover::after { transform: scaleX(1); }

position: absolute

Znaczek przypięty do rogu elementu. Rodzic potrzebuje position: relative.
.demo { position: relative; }
.demo::after {
  content: "NOWE";
  position: absolute;
  top: -14px;
  right: -30px;
  padding: 1px 6px;
  border-radius: 6px;
  background: #f43f5e;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
}

Więcej przykładów

#
Dymek z podpowiedzią z atrybutu
CSS
.tip {
  position: relative;
}

.tip:is(:hover, :focus)::after {
  content: attr(data-tip);
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  translate: -50% 0;
  padding: 4px 8px;
  border-radius: 6px;
  background: #3f3f46;
  color: #fff;
  font-size: 12px;
  white-space: nowrap;
}
Podgląd

Najedź na skrót EXP albo dojdź do niego klawiszem Tab. Tekst dymka pochodzi z atrybutu data-tip.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Niewidoczny ::after z position: absolute; inset: 0 powiększa klikalny obszar linku na całego rodzica. To prosty sposób na klikalne karty.
  • Gdy nakładka z ::after blokuje zaznaczanie tekstu albo kliknięcia, dodaj jej pointer-events: none.
  • W jednej regule możesz ostylować oba pseudoelementy naraz: .x::before, .x::after { … }.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.