Jak dodać nową linię
Wstaw <br> tam, gdzie ma się zacząć nowa linia. To element pusty, więc nie ma znacznika zamykającego:
Adres łamie się dokładnie przy każdym <br>. Drugi akapit zostaje w jednej linii, choć w kodzie ma znak nowej linii: HTML traktuje znaki nowej linii, tabulatory i ciągi spacji jak jedną spację. Właśnie dlatego istnieje <br>.
<br>, <br/> i <br /> dają ten sam element. Używaj tej formy, której używa twój projekt (JSX i XHTML wymagają ukośnika).
br vs p: podział to nie odstęp
<br> kończy linię w obrębie tego samego akapitu. Nowy <p> zaczyna nowy akapit, z odstępem nad nim i pod nim dzięki domyślnym marginesom. Układanie kolejnych <br>, żeby zrobić odstęp, działa, ale jest kruche i przekazuje złą informację:
Oba pola wyglądają podobnie, ale pierwsze to dla czytnika ekranu jeden akapit, a zmiana odstępów oznacza edycję każdej strony. W drugim odstęp to jedna linia CSS.
Dobre zastosowania <br>: adresy, wiersze i teksty piosenek oraz linie w podpisie, gdzie podział należy do tekstu. Do wszystkiego innego używaj akapitów, list albo nagłówków.
Zachowanie znaków nowej linii z tekstu
Gdy tekst pochodzi z innego miejsca (pola komentarza, bazy danych, skryptu), zawiera prawdziwe znaki nowej linii zamiast znaczników <br>. Reguła CSS white-space: pre-line sprawia, że przeglądarka pokazuje te znaki jako podziały linii:
Ten sam napis wyświetla się w jednej linii w szarym polu i w trzech liniach w niebieskim. To także bezpieczniejsze niż wstawianie znaczników <br> do tekstu użytkownika przez innerHTML, co pozwoliłoby użytkownikom wstrzyknąć HTML. Żeby zachować także spacje i wcięcia, użyj white-space: pre, opisanego na stronie spacje w HTML.
Łamanie długich słów: wbr
Długie słowo albo URL bez spacji może wychodzić poza wąskie pole. <wbr> oznacza miejsce, w którym przeglądarka może złamać linię, jeśli musi, a poza tym nic nie robi:
Pierwsza ścieżka wychodzi poza pole; druga łamie się w miejscach <wbr>. Dla tekstu, nad którym nie masz kontroli, właściwość CSS overflow-wrap: anywhere łamie długie słowa w dowolnym miejscu.
Blokowanie łamania linii
Czasem chcesz czegoś odwrotnego: utrzymać razem "10 km" albo numer telefonu. Masz dwa narzędzia:
to spacja, przy której przeglądarka nie złamie linii, więc "10" i "km" zostają razem. white-space: nowrap trzyma cały span w jednej linii. Zamień na zwykłą spację albo usuń klasę, a przy tej szerokości oba teksty rozdzielą się na dwie linie.
Częste błędy
- Naciskanie Enter w kodzie i oczekiwanie nowej linii. Znaki nowej linii w HTML to spacje. Użyj
<br>, osobnych elementów albowhite-space: pre-line. - Układanie
<br><br><br>dla odstępu. Używaj akapitów imargin. - Budowanie listy z
<br>. Użyj<ul>lub<ol>z<li>, które czytniki ekranu ogłaszają jako listę. - Pisanie
</br>. To niepoprawne. Pisz<br>. - Dodawanie
<br>do tekstu użytkownika przezinnerHTML. UstawtextContenti użyjwhite-space: pre-line.
Najczęściej zadawane pytania
Jak dodać nową linię w HTML?
Wstaw <br> tam, gdzie ma się zacząć nowa linia: Line one<br>Line two. Naciśnięcie Enter w pliku HTML nie działa, bo przeglądarki traktują znaki nowej linii w kodzie jak zwykłe spacje.
Pisać <br>, <br/> czy <br />?
Wszystkie trzy działają w HTML i dają ten sam element. <br> to zwykła forma HTML; wersje z ukośnikiem są akceptowane dla zgodności z XHTML i JSX. Samo </br> jest niepoprawne, choć przeglądarki czytają je jako kolejne przejście do nowej linii.
Kiedy używać <br> zamiast <p>?
Użyj <br>, gdy podział linii jest częścią samej treści, jak w adresie czy wierszu. Dla osobnych akapitów stosuj osobne elementy <p>, a odstępy rób marginesem w CSS, zamiast układać kolejne znaczniki <br>.
Jak zachować podziały linii z tekstu bez dodawania znaczników <br>?
Nadaj elementowi white-space: pre-line w CSS. Przeglądarka pokaże wtedy każdy znak nowej linii w tekście jako podział linii, nadal scalając nadmiarowe spacje. Przydaje się to przy komentarzach użytkowników i tekście wczytywanym przez JavaScript.
Jak zablokować łamanie linii w HTML?
Umieść tekst w elemencie z white-space: nowrap albo połącz dwa słowa twardą spacją , żeby zawsze zostały w tej samej linii.