Element HTML - Jak używać, by kod był czytelny?

HTML5 Tag Cheat Sheet z WebsiteSetup.org, zawiera listę tagów HTML5, w tym <article> do definiowania artykułów.

Napisano przez

Jacek Zając

Opublikowano

22 maj 2026

Spis treści

Element

 rozwiązuje bardzo konkretny problem: pozwala pokazać tekst dokładnie w takim układzie, w jakim został zapisany w źródle. To ważne przy fragmentach kodu, logach z terminala, ASCII arcie, prostych schematach czy tekstach, w których odstępy mają znaczenie. Poniżej pokazuję, jak działa ten element, kiedy naprawdę warto go użyć i jak go stylizować, żeby nie psuł czytelności na mniejszych ekranach.

Najważniejsze zasady pracy z elementem

  • zachowuje spacje, tabulatory i nowe linie, więc układ tekstu nie jest „spłaszczany”.
  • Najczęściej łączę go z , gdy pokazuję wielolinijkowy fragment kodu.
  • Jeśli blok jest szeroki, dodaję overflow-x: auto, zamiast bezmyślnie łamać linie.
  • Znaki <, > i & trzeba w treści escapować, bo zawartość nadal jest parsowana jako HTML.
  • Do ASCII art i podobnych bloków warto dodać opis alternatywny, bo czytnik ekranu nie „zobaczy” układu tak jak wzrok.

Czym jest element
 i kiedy ma sens

Najprościej mówiąc,

 służy do treści, w której formatowanie jest częścią znaczenia. Przeglądarka nie ma zgniatać białych znaków, tylko zachować układ z pliku źródłowego. Zwykły akapit nie nadaje się do tego dobrze, bo HTML traktuje wielokrotne spacje i entery jako coś, co można uprościć.

Ja używam tego elementu wtedy, gdy czytelnik ma zobaczyć dokładnie to samo, co autor wpisał w kodzie, na przykład:

  • fragment kodu z wcięciami i podziałem na linie,
  • wynik działania programu lub terminala,
  • prosty schemat ASCII,
  • krótki tekst, w którym układ wersów lub odstępów jest celowy,
  • techniczne notatki, gdzie kolejność i proporcje linii są istotne.

To nie jest jednak zamiennik dla wszystkiego, co „da się jakoś ustawić spacjami”. Jeśli potrzebuję akapitu, używam

. Jeśli listy, używam
    albo
      . Jeśli tabeli, to .
      ma sens wtedy, gdy sam układ tekstu niesie informację
      , a nie tylko dekorację. Kiedy to już widać, warto przyjrzeć się temu, co dokładnie dzieje się ze spacjami i nowymi liniami.

      Jak
       traktuje spacje, taby i nowe linie

      Wewnątrz

       spacje, tabulatory i znaki końca linii są zachowywane. Dzięki temu zachowujesz wcięcia, pusty wiersz między blokami albo kolumnowy układ tekstu. To właśnie dlatego ten element jest tak wygodny przy kodzie i prostych wyjściach z konsoli.

      Jest tu jednak jeden detal, który potrafi zaskoczyć: pierwszy znak nowej linii bezpośrednio po otwierającym tagu jest usuwany przez parser HTML. W praktyce oznacza to, że taki zapis:

      Pierwsza linia
      Druga linia
      

      nie zacznie się pustym wierszem po renderowaniu. To drobiazg, ale jeśli ktoś wkleja treść „jak leci”, potem zastanawia się, skąd wziął się ten brakujący znak na początku.

      Warto też pamiętać o tabulatorach. Domyślnie ich szerokość zwykle odpowiada 8 spacji, ale można ją kontrolować CSS-em przez tab-size. W kodzie źródłowym często ustawiam to na 2 albo 4, bo taki układ jest po prostu czytelniejszy dla większości fragmentów frontendu.

      Druga ważna rzecz: zawartość

       nadal jest traktowana jak HTML. Jeśli wewnątrz pokazujesz prawdziwy kod, znak < trzeba zapisać jako <, a & jako &. Bez tego przeglądarka spróbuje zinterpretować fragment jako znaczniki, a nie jako tekst. Gdy ten fundament jest jasny, można przejść do łączenia 
      z innymi elementami semantycznymi.

      Jak łączyć
       z ,  i 

      Jeśli pokazuję kod, nie ograniczam się do samego

      . Najczęściej łączę go z , bo to właśnie ten element mówi: „to jest kod”. 
      odpowiada za układ, a za znaczenie. To rozróżnienie jest ważniejsze, niż się wydaje, bo semantyka pomaga zarówno przeglądarce, jak i narzędziom wspomagającym.

      Element Kiedy go używam Co wnosi
      Gdy układ znaków musi zostać zachowany Nie zgniata białych znaków i utrzymuje podział na linie
      Gdy pokazuję nazwę funkcji, fragment kodu albo wielolinijkowy snippet Oznacza treść jako kod, nawet jeśli jest tylko jedną linią
      Gdy prezentuję wynik programu lub terminala Sygnalizuje, że to przykładowy output
      Gdy pokazuję wpisywane przez użytkownika polecenie Oznacza dane wejściowe z klawiatury

      Mój domyślny wzorzec dla wielolinijkowego fragmentu kodu wygląda tak:

      function greet(name) {
        return `Cześć, ${name}`;
      }

      Jeśli pokazuję dialog z terminala, naturalnie wchodzą w grę i . Taki układ od razu mówi czytelnikowi, co jest wynikiem, a co poleceniem. To prosty sposób na czytelną i semantycznie poprawną dokumentację, szczególnie w artykułach technicznych i tutorialach. Kiedy semantyka jest ustawiona, zostaje jeszcze warstwa wizualna, która decyduje o tym, czy blok da się komfortowo czytać.

      Jak stylizować blok, żeby nie rozsypał się na mobile

      Domyślne style przeglądarki są użyteczne, ale rzadko wystarczają. Zwykle dostaję blok o stałej szerokości czcionki i zachowanym układzie, ale bez dopracowania odstępów, tła czy zachowania na małych ekranach. Dlatego prawie zawsze dorzucam kilka reguł CSS, które poprawiają czytelność i nie zmieniają znaczenia treści.

      pre {
        overflow-x: auto;
        padding: 1rem;
        border-radius: 0.75rem;
        background: #111827;
        color: #e5e7eb;
        white-space: pre;
        tab-size: 4;
      }
      
      pre code {
        font: inherit;
      }

      Najważniejsza reguła to overflow-x: auto. Dzięki niej długi blok nie rozpycha całego layoutu, tylko daje poziomy przewijany obszar. Na mobile to zwykle lepsze rozwiązanie niż agresywne zawijanie kodu, bo łamanie identyfikatorów, ścieżek czy łańcuchów znaków obniża czytelność.

      W praktyce mam trzy najczęstsze warianty:

      Wartość CSS Efekt Kiedy ją wybieram
      white-space: pre Zachowuje spacje i nie zawija linii Dla kodu, logów i treści, w których układ ma zostać nienaruszony
      white-space: pre-wrap Zachowuje odstępy, ale pozwala zawijać linie Gdy treść ma być czytelna na wąskich ekranach, a utrata idealnego układu nie jest problemem
      white-space: normal Spłaszcza białe znaki Nie do
      , tylko do zwykłych akapitów

      Jeśli pokazuję długie URL-e, JSON albo bardzo długie nazwy klas, czasem rozważam pre-wrap, ale robię to ostrożnie. W kodzie złożonym z wielkich bloków tekstu wolę przewijanie, bo nie psuje struktury. W tym elemencie estetyka nigdy nie powinna wygrywać z czytelnością techniczną. A gdy wygląd jest już opanowany, najłatwiej wpaść w kilka klasycznych błędów.

      Najczęstsze błędy przy użyciu

      Najwięcej problemów widzę wtedy, gdy ktoś traktuje

      jak skrót do „ładnych odstępów”. To zły trop. Ten element nie służy do udawania layoutu, tylko do zachowania znaczącego układu tekstu. Jeśli chcesz mieć większą przerwę między akapitami, lepiej zrób to CSS-em niż wciskaj treść do preformatowanego bloku.

      • Używanie
        do zwykłych akapitów
        - wtedy tekst wygląda „technicznie”, choć semantycznie nim nie jest.
      • Wklejanie kodu bez escapowania znaków - przeglądarka zaczyna interpretować fragmenty HTML zamiast je wyświetlać.
      • Brak przy przykładach kodu - blok nadal działa wizualnie, ale traci jasny sygnał semantyczny.
      • Ignorowanie szerokości bloku - długie linie rozwalają układ, jeśli nie dodasz przewijania.
      • Próba „naprawy” kodu wieloma spacjami - to zwykle kończy się nieczytelnym źródłem i trudnym utrzymaniem treści.

      Do tego dochodzi jeszcze jeden błąd, który łatwo przeoczyć: kopiowanie treści do

       bez sprawdzenia, czy użytkownik naprawdę musi widzieć dokładnie taki zapis. Jeśli celem jest tylko uporządkowana informacja, często lepsza okaże się lista, tabela albo zwykły akapit. To prowadzi wprost do kwestii dostępności i sensownych alternatyw.

      Dostępność i alternatywy, gdy treść nie jest zwykłym blokiem tekstu

      Przy preformatowanych blokach bardzo łatwo zapomnieć, że nie każdy odbiera stronę wzrokiem. Screen reader odczyta treść sekwencyjnie, więc ASCII art, rozbudowany układ znaków albo „rysunek” z tekstu może stracić sens. W takich sytuacjach dodaję opis alternatywny albo zastanawiam się, czy ten blok w ogóle powinien zostać pokazany jako obraz tekstowy.

      Jeśli treść jest ilustracyjna, a nie kodowa, sensowne bywa połączenie z

      i
      , a w samym
      dodanie roli i etykiety opisowej. Taki zapis może wyglądać tak:

      Użytkownik  ->  Serwer  ->  Baza danych
        
      Schemat przepływu danych w uproszczonej formie tekstowej

      Jeżeli blok ma tylko ozdabiać stronę, bez konkretnej informacji, lepiej go po prostu nie robić. W podobnych sytuacjach wybieram inne elementy:

        • lub
            - gdy treść jest listą kroków lub punktów.
          1. - gdy dane mają układ kolumnowy i wierszowy.
          2. - gdy cytuję cudzą wypowiedź.
          3. - gdy użytkownik ma coś edytować, a nie tylko oglądać.
          4. To ważne rozróżnienie:

             jest do wyświetlania treści, a nie do tworzenia pól edycyjnych czy imitowania layoutu. Jeśli ten podział mam w głowie, wybór odpowiedniego elementu staje się prostszy i mniej przypadkowy. Na końcu zostaje już tylko praktyczny test, czy dany blok naprawdę pomaga czytelnikowi.

            Jak korzystać z
             tak, by pomagał, a nie przeszkadzał

            Gdy projektuję taki blok, przechodzę przez krótki zestaw pytań. Czy układ znaków coś znaczy? Czy treść jest kodem, wynikiem programu, czy może zwykłą informacją, którą lepiej pokazać inaczej? Czy na małym ekranie użytkownik będzie musiał walczyć z układem? Jeśli na któreś z tych pytań odpowiadam „nie wiem”, wracam do semantyki i wybieram prostsze rozwiązanie.

            • Używam
              tylko wtedy, gdy zachowanie odstępów ma realną wartość.
            • Łączę go z , lub , jeśli treść ma znaczenie techniczne.
            • Escapuję znaki specjalne zawsze, gdy pokazuję kod jako tekst.
            • Dodaję overflow-x: auto, żeby blok nie niszczył układu strony.
            • Sprawdzam, czy treść ma sens także dla osób korzystających z technologii wspomagających.

            W dobrze napisanym frontendzie

             nie jest ozdobą, tylko precyzyjnym narzędziem. Jeśli użyję go świadomie, dostaję czytelny kod, poprawną semantykę i przewidywalne zachowanie na różnych ekranach. Jeśli użyję go „na skróty”, szybko zrobi się z niego źródło problemów. I właśnie dlatego lubię ten element, bo zmusza do porządku w treści, a nie tylko w CSS-ie.

          FAQ - Najczęstsze pytania

          Element <pre> służy do wyświetlania preformatowanego tekstu, zachowując wszystkie spacje, tabulatory i nowe linie. Jest idealny do kodu, logów, ASCII artu i treści, gdzie formatowanie jest częścią znaczenia.

          Nie, <pre> odpowiada za układ wizualny, a <code> za semantyczne oznaczenie kodu. Najczęściej używa się ich razem: <pre><code>...</code></pre>, aby zapewnić zarówno prawidłowe formatowanie, jak i znaczenie.

          Kluczowe jest użycie CSS: `overflow-x: auto;`. Dzięki temu długie linie tekstu nie rozbiją layoutu, lecz pojawią się w przewijanym obszarze, co znacznie poprawia czytelność na urządzeniach mobilnych.

          Tak, zawartość <pre> jest nadal parsowana jako HTML. Znaki takie jak <, > i & należy escapować (np. &lt;, &gt;, &amp;), aby przeglądarka wyświetliła je jako tekst, a nie interpretowała jako znaczniki.

          Nie używaj <pre> do zwykłych akapitów, list czy tabel. Jest przeznaczony tylko do treści, gdzie układ tekstu (np. wcięcia, puste linie) ma kluczowe znaczenie informacyjne. Do innych celów są odpowiedniejsze elementy HTML.

          Oceń artykuł

          Ocena: 0.00 Liczba głosów: 0

          Tagi:

          pre html element pre w html jak używać tagu pre

          Udostępnij artykuł

          Jacek Zając

          Jacek Zając

          Nazywam się Jacek Zając i od dziewięciu lat zajmuję się programowaniem webowym. Moja przygoda z tą dziedziną zaczęła się od fascynacji tworzeniem stron internetowych, co szybko przerodziło się w pasję do nauczania innych. Lubię dzielić się wiedzą i pomagać osobom, które stawiają pierwsze kroki w programowaniu. Skupiam się na wyjaśnianiu złożonych zagadnień w przystępny sposób, aby każdy mógł zrozumieć podstawy i rozwijać swoje umiejętności. W moich artykułach poruszam różnorodne tematy związane z programowaniem webowym, od HTML i CSS po JavaScript i frameworki. Dokładam wszelkich starań, aby informacje, które prezentuję, były rzetelne, aktualne i łatwe do przyswojenia. Regularnie śledzę nowinki w branży, co pozwala mi na dostarczanie czytelnikom treści zgodnych z najnowszymi trendami. Wierzę, że dobrze zorganizowana wiedza to klucz do sukcesu w karierze programisty.

          Napisz komentarz