Jak podkreślić tekst w CSS
text-decoration: underline rysuje linię pod tekstem. Linia ma kolor tekstu, chyba że nadasz jej inny.
Druga linijka używa skrótu text-decoration do rodzaju linii, stylu i koloru, a potem ustawia grubość i odstęp osobnymi właściwościami. Specyfikacja pozwala też umieścić grubość w skrócie, ale Safari odrzuca wtedy całą deklarację, więc pisz text-decoration-thickness osobno.
Właściwości text-decoration
| Właściwość | Wartości | Domyślnie |
|---|---|---|
text-decoration-line | underline, overline, line-through, none (można łączyć) | none |
text-decoration-style | solid, double, dotted, dashed, wavy | solid |
text-decoration-color | Dowolny kolor | currentColor (kolor tekstu) |
text-decoration-thickness | Długość, procent, auto, from-font | auto |
text-underline-offset | Długość, procent, auto | auto |
text-decoration to skrót dla pierwszych czterech, ale nie umieszczaj w nim grubości: Safari ignoruje deklarację text-decoration, która ją zawiera. text-underline-offset jest osobna i trzeba ją pisać samodzielnie.
Style, kolory i grubość
Przesuwanie podkreślenia: text-underline-offset
Domyślnie linia leży blisko liter i omija wydłużenia dolne, takie jak g, p i y. text-underline-offset przesuwa ją niżej, co często wygląda czyściej w nagłówkach i linkach:
Przerwy wokół wydłużeń dolnych pochodzą z text-decoration-skip-ink: auto, które jest domyślnie włączone. Ustaw none, żeby linia była ciągła.
Usuwanie podkreślenia z linków
Linki są podkreślane przez arkusz stylów przeglądarki. text-decoration: none usuwa podkreślenie. Ponieważ wielu czytelników znajduje linki po podkreśleniu, przywróć je przy najechaniu i fokusie z klawiatury, a linkowi nadaj kolor inny niż kolor tekstu:
Paski nawigacji i przyciski to rozsądne miejsce na rezygnację z podkreślenia, bo ich położenie już mówi "to link". Wewnątrz akapitu tekstu je zachowaj. Więcej o stanach linków na stronie o hover.
Nadkreślenie i przekreślenie
text-decoration-line rysuje też linię nad tekstem albo przez tekst i przyjmuje więcej niż jedną wartość:
.old-price { text-decoration: line-through; }
.both { text-decoration-line: underline overline; }
Przekreślenie przez CSS jest tylko wizualne. Gdy tekst to usunięta treść (zmieniona cena, usunięta pozycja), oznacz go przez <s> albo <del>, jak pokazuje strona o podkreśleniu w HTML, żeby znaczenie było w strukturze, a nie tylko w stylach.
Częste błędy
- Używanie
<u>do podkreślania dla stylu.<u>służy do tekstu oznaczonego jako inny, na przykład błędów pisowni. Do ostylowanego podkreślenia użyj CSS. - Podkreślanie tekstu, który nie jest linkiem. Czytelnicy będą próbowali go kliknąć. Do wyróżnienia użyj pogrubienia, koloru albo tła.
- Usuwanie podkreślenia linków w tekście głównym bez innej wskazówki. Sam kolor nie wystarczy czytelnikom, którzy nie widzą różnicy.
- Próba usunięcia podkreślenia rodzica z poziomu dziecka. Nie da się go cofnąć od środka; zmień rodzica albo nadaj dziecku
inline-block. - Oczekiwanie
text-underline-offsetw skrócie. To osobna właściwość. - Umieszczanie grubości w skrócie.
text-decoration: underline 2pxdziała w Chrome i Firefoksie, ale Safari odrzuca całą deklarację. Użyjtext-decoration-thickness.
Najczęściej zadawane pytania
Jak podkreślić tekst w CSS?
Użyj na elemencie text-decoration: underline;. Do wyglądu linii dodaj text-decoration-color, text-decoration-style, text-decoration-thickness i text-underline-offset.
Jak usunąć podkreślenie z linku?
Ustaw text-decoration: none; na elemencie a. Zadbaj, żeby linki nadal się wyróżniały w inny sposób (kolor plus podkreślenie przy najechaniu lub fokusie), bo wielu czytelników rozpoznaje linki po podkreśleniu.
Jak zmienić kolor podkreślenia?
Użyj text-decoration-color albo skrótu: text-decoration: underline #f59e0b;. Bez tego linia ma kolor tekstu.
Jak dodać odstęp między tekstem a podkreśleniem?
Użyj text-underline-offset, na przykład text-underline-offset: 4px;. Większe wartości przesuwają linię dalej pod tekst.
Dlaczego nie mogę usunąć podkreślenia z elementu dziecka?
Podkreślenie narysowane przez rodzica jest malowane w poprzek jego dzieci i nie da się go usunąć od środka. Usuń je na elemencie, który je ustawia, albo nadaj dziecku display: inline-block, do którego dekoracja rodzica nie dociera.