Несколько лет назад я делал пет-проект — конструктор резюме. Кейс был такой, что хотелось сразу же печатать созданное резюме при нажатии сочетания клавиш Ctrl+P в браузере.
Однако проблема в том, что помимо самого резюме на печать попадало не только само резюме, а все кнопки, поля и прочие элементы страницы для его настройки.
Такие кейсы можно решать при помощи CSS медиазапроса @media print:
css1@media print { 2 /* стили для печати */ 3} 4
То есть во время печати мы можем скрыть все ненужные элементы:
css1@media print { 2 .navbar, .footer, .controls { 3 display: none; 4 } 5} 6
Ну или ещё проще:
css1@media print { 2 .no-print { 3 display: none; 4 } 5} 6
А сам класс .no-print проставлять на все скрываемые при печати элементы.
Также есть ещё специальные CSS свойства печати, например, break-inside, которое дополнительно настраивает можно ли переместить блок со страницы на страницу при печати, что особенно актуально для целостных блоков типа “контакты” в резюме. Если указать break-inside: avoid, то такой элемент не сможет быть расположен на двух страницах сразу, а перенесётся весь, если для него не хватает места.
В реальной практике также особенно полезно использовать подобные поднастройки стилей для печати кастомных чеков, накладных, этикеток для маркетплейсов и прочих документов, что иногда реально верстаются где-то кроме ворда.
Статья была полезной?
Читайте также:
— 2 минуты
Как реагировать на изменения объекта
В JavaScript обычные объекты не умеют уведомлять о своих изменениях, однако...
— 1 минута
Что такое Fullscreen API
Fullscreen API — это интерфейс для работы с полноэкранным режимом в веб-бра...
— 2 минуты
Что такое Server-Sent Events
SSE — это технология для однонаправленного соединения между сервером и клие...