CSS для печати страниц

  —  1 минута

#theory#useful#code#web
Читать статью в Telegram

Несколько лет назад я делал пет-проект — конструктор резюме. Кейс был такой, что хотелось сразу же печатать созданное резюме при нажатии сочетания клавиш Ctrl+P в браузере.

Однако проблема в том, что помимо самого резюме на печать попадало не только само резюме, а все кнопки, поля и прочие элементы страницы для его настройки.

Такие кейсы можно решать при помощи CSS медиазапроса @media print:

css
1@media print {
2    /* стили для печати */
3}
4

То есть во время печати мы можем скрыть все ненужные элементы:

css
1@media print {
2  .navbar, .footer, .controls {
3    display: none;
4  }
5}
6

Ну или ещё проще:

css
1@media print {
2  .no-print {
3   display: none;
4  }
5}
6

А сам класс .no-print проставлять на все скрываемые при печати элементы.

Также есть ещё специальные CSS свойства печати, например, break-inside, которое дополнительно настраивает можно ли переместить блок со страницы на страницу при печати, что особенно актуально для целостных блоков типа “контакты” в резюме. Если указать break-inside: avoid, то такой элемент не сможет быть расположен на двух страницах сразу, а перенесётся весь, если для него не хватает места.

В реальной практике также особенно полезно использовать подобные поднастройки стилей для печати кастомных чеков, накладных, этикеток для маркетплейсов и прочих документов, что иногда реально верстаются где-то кроме ворда.

Статья была полезной?