CSS Printing: A Comprehensive Guide for Beginners
Здравствуйте, будущие мастера CSS! Сегодня мы окунемся в fascinирующий мир CSS печати. Как ваш доброжелательный сосед-преподаватель информатики, я рад взять вас с собой в это путешествие. Не волнуйтесь, если вы никогда не писали ни строчки кода – мы начнем с самых азов и будем продвигаться往上. Так что возьмите杯 кофе (или чай, если это ваше дело), и давайте начнем!
CSS Printing - Using A Print Style Sheet
Вы когда-нибудь пытались напечатать веб-страницу, только чтобы обнаружить, что она не похожа на то, что вы видите на экране? Вот где на помощь приходят стили для печати! Они как магические заклинания, которые transforms ваш веб-контент в友好 для打印机 форматы.
Давайте начнем с простого примера:
<head>
<link rel="stylesheet" type="text/css" href="screen.css" media="screen">
<link rel="stylesheet" type="text/css" href="print.css" media="print">
</head>
В этом фрагменте мы говорим браузеру использовать разные стили для экрана и печати. Атрибут media
– это наше secret weapon здесь. Когда вы просматриваете страницу на экране, она использует screen.css
. Но нажмите кнопку печати, и бам! print.css
берет верх.
CSS Printing - Using Media Queries and @page At-Rule
Теперь давайте повысим наш уровень с помощью media queries и правила @page. Это как динамическая пара CSS печати!
@media print {
body {
font-size: 12pt;
color: #000;
background-color: #fff;
}
@page {
margin: 1in;
}
}
Этот код говорит: "Эй, браузер, когда ты печатаешь, сделай текст 12pt, черный на белом, и дай мне 1-дюймовый отступ вокруг". Часть @media print
– это наш media query, а @page
настраивает наш макет страницы.
CSS Printing - Print Requests Detection
Не было бы замечательно, если бы ваша веб-страница могла узнать, когда кто-то пытается ее напечатать? Ну, она может! Вот как:
window.addEventListener('beforeprint', function() {
console.log('Printing...');
});
window.addEventListener('afterprint', function() {
console.log('Finished printing');
});
Этот фрагмент JavaScript как крошечный шпион, шепчущий нам, когда начинается и заканчивается печать. Супер полезно для последних-minute правок!
CSS Printing - Using @page at-rule
Правило @page как магическая палочка для управления вашими напечатанными страницами. Давайте посмотрим, как это работает:
@page {
size: A4;
margin: 0;
}
@page :first {
margin-top: 2cm;
}
Здесь мы устанавливаем все страницы на размер A4 без отступов, но даем первому листу особый отступ в 2 см сверху. Это как расстилать красную дорожку для вашего контента!
CSS Printing - Using @media Query
Мы уже видели @media, но давайте углубимся:
@media print {
.no-print {
display: none;
}
a[href^="http"]:after {
content: " (" attr(href) ")";
}
}
Этот фрагмент прячет элементы с классом no-print
и добавляет URL после любых внешних ссылок. Это как если бы у вас был личный assistant, наводящий порядок на вашей веб-странице для печати!
CSS Printing - Use Of afterprint Event
помните нашего крошечного JavaScript шпиона из прошлого примера? Давайте пустим его в дело:
window.addEventListener('afterprint', function() {
document.body.style.backgroundColor = 'lightblue';
alert('Hope you enjoyed your printout!');
});
Этот код изменяет цвет фона после печати и показывает friendly сообщение. Это как оставлять крошечное письмо-прощание для ваших пользователей!
CSS Printing - Link To An External Style Sheet
Last but not least, давайте напомним, как связать внешний стиль для печати:
<link rel="stylesheet" type="text/css" href="print.css" media="print">
Эта строка – ваш golden ticket к友好 для打印机 веб-страницам. Просто создайте файл под названием print.css
, добавьте ваши стили для печати, и все готово!
Method | Description | Example |
---|---|---|
Print Style Sheet | Separate CSS file for print media | <link rel="stylesheet" type="text/css" href="print.css" media="print"> |
Media Queries | CSS rules that apply only when printing | @media print { body { font-size: 12pt; } } |
@page At-Rule | Controls page-specific properties | @page { margin: 1in; } |
Print Request Detection | JavaScript to detect print attempts | window.addEventListener('beforeprint', function() { ... }); |
afterprint Event | JavaScript to run code after printing | window.addEventListener('afterprint', function() { ... }); |
И вот вы и сделали,folks! Вы только что сделали свои первые шаги в мир CSS печати. Помните, что практика делает perfect, так что не бойтесь экспериментировать. Кто знает? Вы можете стать Пикассо стилей для печати! До свидания, счастливого кодирования!
Credits: Image by storyset