Przekreślony tekst w HTML i CSS - jak zrobić go poprawnie?

Przykładowy kod HTML z przekreślonym tekstem pokazujący, jak zmienić rozmiar czcionki.

Napisano przez

Jacek Zając

Opublikowano

25 wrz 2026

Spis treści

Gdy na stronie trzeba pokazać starą cenę, nieaktualną informację albo zadanie, które zostało wykonane, sama linia przechodząca przez środek liter to dopiero początek. W tym poradniku pokazuję, jak zrobić przekreślony tekst w HTML i CSS, kiedy wybrać element , kiedy , a kiedy zwykłą regułę stylów, oraz jak uniknąć problemów z czytelnością i dostępnością.

Najważniejsze decyzje zależą od znaczenia przekreślenia

  • stosuj, gdy informacja jest nieaktualna albo przestała być istotna.
  • wybierz przy oznaczaniu usuniętej treści lub zmian w dokumencie.
  • CSS text-decoration: line-through sprawdzi się, gdy przekreślenie ma charakter wizualny.
  • Nie używaj , ponieważ ten element jest przestarzały.
  • Dostępność wymaga, aby znaczenie przekreślenia nie wynikało wyłącznie z wyglądu.

Jak semantycznie przekreślić tekst w HTML

Najprostszy przypadek wygląda tak, że informacja nadal znajduje się na stronie, ale nie jest już aktualna. Wtedy używam elementu . Przeglądarka domyślnie rysuje przez jego zawartość poziomą linię, a kod od razu mówi, że dana treść straciła aktualność.

Promocja obowiązuje do 31 maja 15 czerwca.

Element pasuje także do nieaktualnej ceny, dawnej nazwy produktu albo informacji o wydarzeniu, które już się zakończyło. Nie oznacza jednak, że tekst został formalnie usunięty z dokumentu. To rozróżnienie jest małe wizualnie, ale ważne semantycznie.

Jeżeli pokazujesz zmianę w dokumencie, lepszy będzie element . Informuje on o usunięciu fragmentu treści i może zostać uzupełniony o atrybuty datetime oraz cite.

Termin spotkania: 12 września 19 września.

W praktyce wykorzystałbym przy historii zmian, redagowaniu regulaminu albo prezentowaniu poprawionej treści. Para i pokazuje wtedy nie tylko efekt wizualny, ale też co usunięto i co dodano.

Rozwiązanie Znaczenie Przykładowe użycie
Treść nieaktualna lub nieistotna Dawna cena, zakończona promocja
Treść usunięta w ramach zmiany dokumentu Stary zapis regulaminu
CSS Efekt wizualny bez dodatkowej semantyki Oznaczenie wykonanego zadania
Przestarzały sposób formatowania Nie stosować w nowych projektach

Przykładowy kod CSS dla nagłówków: h1 z linią nad tekstem, h2 z przekreślonym tekstem, h3 z podkreśleniem.

Jak uzyskać przekreślenie za pomocą CSS

Jeśli linia ma być wyłącznie elementem wyglądu, najczyściej użyć właściwości text-decoration. To rozwiązanie daje kontrolę nad kolorem, stylem i grubością dekoracji bez zmieniania znaczenia samego tekstu.

.przekreslenie {
  text-decoration: line-through;
}

W HTML klasę można przypisać na przykład do elementu :

Zadanie wykonane

Do bardziej dopracowanych interfejsów przydają się dodatkowe właściwości. Możesz zmienić kolor linii, jej styl oraz grubość, choć ta ostatnia opcja wymaga ostrożności, bo zbyt mocne przekreślenie pogarsza czytelność.

.stara-cena {
  color: #777;
  text-decoration-line: line-through;
  text-decoration-color: #c62828;
  text-decoration-style: solid;
  text-decoration-thickness: 2px;
}

W sklepie internetowym często lepiej przekreślić wyłącznie starą cenę, a nową wyróżnić osobnym elementem. Dzięki temu użytkownik nie musi domyślać się, która wartość jest aktualna.

249 zł 199 zł

Moja praktyczna zasada jest prosta: HTML opisuje znaczenie, a CSS wygląd. Jeśli przekreślenie coś komunikuje, zaczynam od właściwego elementu HTML. Jeśli jest tylko ozdobą komponentu, wybieram klasę CSS.

Praktyczne zastosowania w interfejsie

Stara i nowa cena

Przekreślona cena jest jednym z najbardziej rozpoznawalnych zastosowań tej techniki. Stara wartość powinna być mniej wyrazista, ale nadal możliwa do odczytania. Nową cenę warto oznaczyć pogrubieniem i zadbać o wystarczający kontrast.

399 zł 299 zł

Sam wygląd nie powinien być jedynym komunikatem o promocji. Dodanie tekstu „cena regularna” i „cena promocyjna” pomaga osobom korzystającym z czytnika ekranu oraz użytkownikom, którzy mogą mieć trudność z rozpoznaniem delikatnej linii.

Lista zadań

W aplikacji typu to-do przekreślenie może sygnalizować wykonane zadanie. Tutaj zazwyczaj stosuję klasę CSS, ponieważ status zadania jest stanem komponentu, a nie zmianą treści dokumentu.

  • Przygotować makietę strony
  • .zadanie--wykonane span {
      color: #6b7280;
      text-decoration: line-through;
    }

    Trzeba jednak pamiętać, że sama linia nie wystarczy. Checkbox powinien mieć stan zaznaczenia, a element może otrzymać dodatkowy opis, na przykład „wykonane”. W ten sposób interfejs pozostaje zrozumiały także bez patrzenia na ekran.

    Przeczytaj również: Cień w CSS - Jak tworzyć naturalne efekty i unikać błędów?

    Poprawiona treść

    W changelogu, dokumentacji lub edytorze treści użyłbym razem z . Takie oznaczenie pokazuje historię zmiany i jest bardziej precyzyjne niż dekorowanie tekstu klasą.

    Wersja: 2.4 2.5

    To rozwiązanie ma sens wtedy, gdy odbiorca powinien zobaczyć zarówno poprzednią, jak i aktualną wersję. Jeżeli stary tekst nie ma już żadnej wartości dla użytkownika, lepiej usunąć go z interfejsu zamiast zostawiać wiele przekreślonych fragmentów.

    Najczęstsze błędy i problemy z dostępnością

    Początkujący często sięgają po , bo ten znacznik był kiedyś popularny w prostych stronach HTML. Dzisiaj jest przestarzały i nie powinien pojawiać się w nowych projektach. Zastąp go elementem semantycznym albo CSS-em.

    Drugim błędem jest używanie przekreślenia jako jedynego sposobu przekazywania informacji. Czerwona linia może oznaczać cenę nieaktualną, błąd, wykonane zadanie albo usunięty fragment. Bez dodatkowego tekstu lub właściwego kontekstu znaczenie może być niejasne.

    • Nie przekreślaj całych długich akapitów, jeśli użytkownik nadal ma je czytać.
    • Nie używaj samego koloru do rozróżnienia starej i nowej wartości.
    • Nie ukrywaj ważnych informacji wyłącznie za pomocą display: none lub przekreślenia.
    • Sprawdzaj wygląd na telefonie, ponieważ cienka linia może zlewać się z małym tekstem.

    Ważny jest też kontrast. Szary tekst ze szarą linią wygląda elegancko, ale na jasnym tle może stać się prawie niewidoczny. Ja zwykle zaczynam od normalnej czytelności tekstu, a dopiero później zmniejszam jego wyrazistość, zamiast od razu stosować bardzo jasny kolor.

    Jeżeli przekreślenie jest elementem interakcji, na przykład przycisku lub statusu, przetestuj komponent klawiaturą i czytnikiem ekranu. Efekt wizualny nie zastępuje informacji tekstowej, dlatego stan „wykonane”, „usunięte” albo „nieaktualne” powinien być możliwy do odczytania także w inny sposób.

    Jak wybrać właściwe rozwiązanie w projekcie

    Decyzję można sprowadzić do jednego pytania: czy przekreślenie opisuje znaczenie treści, czy tylko jej wygląd? Gdy chodzi o nieaktualność, wybierz . Gdy oznaczasz zmianę w dokumencie, sięgnij po . Gdy budujesz styl komponentu, zastosuj text-decoration: line-through.

    Przed wdrożeniem sprawdź jeszcze trzy rzeczy: czy użytkownik wie, co oznacza linia, czy aktualna wartość jest wystarczająco widoczna oraz czy informacja pozostaje dostępna bez rozpoznawania koloru i dekoracji. Taki krótki test wyłapuje większość problemów, które później wracają podczas poprawiania interfejsu.

    Linia przez tekst powinna coś komunikować

    Technicznie przekreślenie jest proste, ale dobry frontend wymaga właściwego dopasowania narzędzia do znaczenia. , i CSS nie są zamiennikami jeden do jednego, choć w przeglądarce mogą wyglądać podobnie.

    Najbezpieczniej zacząć od semantyki, a dopiero potem dopracować wygląd. Dzięki temu interfejs będzie czytelny dla użytkownika, zrozumiały dla technologii asystujących i łatwiejszy do utrzymania, gdy projekt zacznie się rozrastać.

    FAQ - Najczęstsze pytania

    Element <s> oznacza treść nieaktualną lub nieistotną, na przykład dawną cenę albo zakończoną promocję. <del> stosuje się, gdy fragment został usunięty w ramach zmiany dokumentu, na przykład w regulaminie lub historii wersji. Można uzupełnić go atrybutami datetime i cite oraz połączyć z elementem <ins>.

    Użyj właściwości text-decoration: line-through;, na przykład w klasie przypisanej do elementu <span>. CSS pozwala także ustawić kolor, styl i grubość linii za pomocą właściwości text-decoration-color, text-decoration-style i text-decoration-thickness.

    Starą cenę możesz umieścić w elemencie <s>, a aktualną wyróżnić elementem <strong>, na przykład 399 zł w <s> i 299 zł w <strong>. Warto dodać opisy „cena regularna” i „cena promocyjna”, aby znaczenie wartości było jasne także bez rozpoznawania samej linii.

    <strike> jest przestarzałym elementem i nie powinien być używany w nowych projektach. Zastąp go elementem semantycznym <s> lub <del>, a jeśli przekreślenie ma wyłącznie charakter wizualny, zastosuj CSS. Sama linia nie powinna być jedynym sposobem przekazywania informacji, dlatego status warto uzupełnić tekstem, stanem checkboxa albo innym czytelnym oznaczeniem.

    Oceń artykuł

    Ocena: 0.00 Liczba głosów: 0

    Tagi:

    html css dostępność semantyka historia zmian

    Udostępnij artykuł

    Jacek Zając

    Jacek Zając

    Nazywam się Jacek Zając i od sześciu lat zajmuję się programowaniem webowym. Moja przygoda z tym obszarem zaczęła się od chęci stworzenia własnej strony internetowej, co szybko przerodziło się w pasję do tworzenia aplikacji i rozwiązań, które mogą ułatwiać życie innym. Lubię dzielić się wiedzą, szczególnie w zakresie podstaw programowania oraz budowania responsywnych aplikacji internetowych. W moich tekstach staram się w przystępny sposób wyjaśniać złożone zagadnienia, porównując różne podejścia i technologie, a także zwracając uwagę na aktualne trendy w branży. Zawsze dbam o to, aby informacje, które przekazuję, były rzetelne i zrozumiałe, a także aby były zgodne z najnowszymi standardami. Moim celem jest nie tylko przekazywanie wiedzy, ale także inspirowanie innych do rozwijania swoich umiejętności w programowaniu.

    Napisz komentarz