Typ strony wydruku {page}
W jaki sposób wydrukować część stron poziomo, a pozostałe pionowo?
@page strona { cecha: wartość } selektor { page: strona }
Jako cecha i wartość można wstawić jedną lub więcej deklaracji odpowiednich dla kontekstu strony.
Selektorem może być dowolny znacznik blokowy - np. table - tabela.
Załóżmy, że nasza strona to np. opracowanie naukowe. Składa się ono przeważnie z tekstu, ale zawiera również kilka rozbudowanych tabel posiadających dużą liczbę kolumn. W takiej sytuacji tekst najlepiej by było wydrukować w orientacji pionowej, ale wtedy tabele mogą się nie zmieścić w szerokości kartki papieru. Nie chcielibyśmy też całego dokumentu drukować w orientacji poziomej, ponieważ w ten sposób ułożony na kartce tekst niewygodnie się czyta. Nie chcielibyśmy również zmuszać użytkownika, żeby osobno drukował strony dokumentu zawierające akapity tekstu, a potem ręcznie przestawiał orientację papieru, aby wydrukować zbyt szerokie tabele.
Na szczęście dzięki CSS można rozwiązać ten problem. Strony wydruku mogą zostać nazwane przy pomocy reguły @page strona
. Następnie taką nazwę wystarczy przypisać do wybranego elementu przy pomocy dowolnego selektora CSS. Pierwsze z tych poleceń wystarczy wstawić w arkuszu stylów tylko raz, a drugie możemy użyć tyle razy, ile potrzebujemy. Na wszelki wypadek dobrze jest również wymusić przełamanie strony.
Przykład {page}
📋 Zaznacz kod ▶ Edytuj na żywo
@page poziomo { size: landscape; } table { page: poziomo; page-break-before: always; page-break-after: always; }
Przeglądarki
![]() Chrome | ![]() Firefox | ![]() Edge | ![]() Opera | ![]() Safari | Poziom wsparcia min. 2,5 roku | |
---|---|---|---|---|---|---|
page: wartość | 85 2020-08-25 | 🟡 110 2023-02-14 | 85 2020-08-27 | 71 2020-09-15 | ≤13.1 2020-03-24 |
Komentarze
- VBService
07.12.2024 17:03
Luke: "Tutaj piszą, że "się nie da".
https://stackoverflow.com/questions/1763639/how-to-deal-with-page-breaks-when-printing-a-large-html-table".
jest też taki komentarz:
"I added long table in div in html file, Then I added @media print{ thead { display: table-header-group;} tfoot...
Zobacz więcej - Luke
24.04.2014 20:29
Tutaj piszą, że "się nie da".
https://stackoverflow.com/questions/1763639/how-to-deal-with-page-breaks-when-printing-a-large-html-table
Zobacz więcej - Tuomi
24.04.2014 20:28
Tak. To kod mojego CSSa...
Zobacz więcej - DeXTeD
24.04.2014 20:20
Hmm, a próbowałeś do td zamiast tr?
Zobacz więcej - Tuomi
24.04.2014 20:15
Niestety, dalej jest tak, że górna ramka wiersza zostaje a dolna jest na następnej stronie.
Zobacz więcej - DeXTeD
24.04.2014 13:10
[...] Chyba powinno załatwić sprawę.
Zobacz więcej - Tuomi
23.04.2014 23:37
Witam.
Chciałem się zapytać jak zrobić przełamanie drukowania, ale w tabeli, tzn żeby <tr></tr> było przenoszone na kolejną stronę. Próbowałem różnych sposobów i ciągle jest bez zmian, tzn.: gdy kończy się strona to widać początek kolejnego wiersza, którego kontynuacja jest na...
Zobacz więcej - bla
28.02.2013 18:18
Mam taki problem z poleceniem, natomiast nie działa jeśli dodam go w 'div'. Inaczej jak dodam do 'table', działa na tabelę, ale tytuł tabeli zostawia na poprzedniej stronie. Jakieś propozycje?
Zobacz więcej