@media | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS |
9.0+ | 1.0+ | 9.2+ | 1.3+ | 1.0+ | 1.0+ | 1.0+ |
Краткая информация
Значение по умолчанию | all |
---|---|
Ссылка на спецификацию | http://www.w3.org/TR/CSS21/media.html#at-media-rule |
Версии CSS
CSS 1 | CSS 2 | CSS 2.1 | CSS 3 |
---|---|---|---|
Описание
Правило @media позволяет указать тип носителя, для которого будет применяться указанный стиль. В качестве типов выступают различные устройства, например, принтер, КПК, монитор и др. В табл. 1 перечислены некоторые из них.
Тип | Описание |
---|---|
all | Все типы. Это значение используется по умолчанию. |
aural | Речевые синтезаторы, а также программы для воспроизведения текста вслух. Сюда, например, можно отнести речевые браузеры. |
braille | Устройства, основанные на системе Брайля, которые предназначены для слепых людей. |
handheld | Наладонные компьютеры и аналогичные им аппараты. |
Печатающие устройства вроде принтера. | |
projection | Проектор. |
screen | Экран монитора. |
tv | Телевизор. |
Синтаксис
@media тип1 [, тип2] { Описание стиля }
Значения
После ключевого слова @media идет один или несколько типов носителя, перечисленных в табл. 1; если их больше одного, то они разделяются между собой запятой. После чего следуют обязательные фигурные скобки, внутри которых идет обычное описание стилевых правил.
Пример 1
XHTML 1.0CSS2.1IECrOpSaFx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. 0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>@media</title> <style type="text/css"> @media screen { /* Стиль для отображения в браузере */ body { font-family: Arial, Verdana, sans-serif; /* Рубленый шрифт */ font-size: 0.9em; /* Размер шрифта */ color: #000080; /* Цвет текста */ } h2 { background: #faf0e6; /* Цвет фона под текстом */ border: 2px dashed #800000; /* Рамка вокруг заголовка */ color: #a0522d; /* Цвет текста */ padding: 7px; /* Поля вокруг текста */ } h3 { color: #556b2f; /* Цвет текста */ margin: 0; /* Убираем отступы */ } p { margin-top: 0.5em; /* Отступ сверху */ } } @media print { /* Стиль для печати */ body { font-family: Times, 'Times New Roman', serif; /* Шрифт с засечками */ } h2, h3, p { color: #000; /* Черный цвет текста */ } } </style> </head> <body> <h2>Метод ловли льва в пустыне</h2> <h3>Метод последовательного перебора</h3> <p>Пусть лев имеет габаритные размеры LxWxH, где L — длина льва от кончика носа до кисточки хвоста, W — ширина льва, а H — его высота.После чего пустыню разбиваем на ряд элементарных прямоугольников, размер которых совпадает с шириной и длиной льва. Учитывая, что лев может находиться не строго на заданном участке, а одновременно на двух из них, клетку для ловли следует делать повышенной площади, а именно 2Lx2W. Благодаря этому мы избежим ошибки, когда в клетке окажется пойманным лишь половина льва или, что хуже, только его хвост.</p> <p>Далее последовательно накрываем каждый из размеченных прямоугольников пустыни клеткой и проверяем, пойман лев или нет. Как только лев окажется в клетке, процедура поимки считается завершенной.</p> </body> </html>
В данном примере вводится два стиля — один для изменения вида элементов при их обычном отображении в браузере, а второй — при выводе страницы на печать. При этом облик документа для разных носителей может сильно различаться между собой, например, как это показано на рис. 1 и рис. 2.
Рис. 1. Страница для отображения в окне браузера
Рис. 2. Страница, предназначенная для печати
Просмотреть документ, у которого CSS установлен как тип print можно, если распечатать определенную страницу. Или пойти на хитрость и временно заменить слово print на screen, чтобы отобразить итог в браузере. Именно так был получен рис. 2.
Команда @media применяется в основном для формирования одного стилевого файла, который разбит на блоки по типу устройств. Иногда же имеет смысл создать несколько разных CSS-файлов — один для печати, другой для отображения в браузере — и подключать их к документу по мере необходимости. В подобном случае следует воспользоваться тегом <link> с атрибутом media, значением которого выступают те же типы, перечисленные в табл. 1.
Пример 2
HTML5CSS2.1IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>@media</title> <link media="print, handheld" rel="stylesheet" href="print.css"> <link media="screen" rel="stylesheet" href="main. css"> </head> <body> <p>...</p> </body> </html>
В данном примере используются две таблицы связанных стилей, одна для отображения в браузере, а вторая — для печати документа и его просмотре на КПК. Хотя на страницу загружаются одновременно два разных стиля, применяются они только для определенных устройств.
@-правила
CSS по теме
- @media
Статьи по теме
- Типы носителей
Статьи по теме
Рецепты CSS
CSS учебник
Широкое развитие различных платформ и устройств заставляет разработчиков делать под них специальные версии сайтов, что достаточно трудоёмко и проблематично. Вместе с тем, времена и потребности меняются, и создание сайта для различных устройств является неизбежным и необходимым звеном его развития. С учетом этого в CSS введено понятие типа носителя, когда стиль применяется только для определённого устройства. В табл. 4.
1 перечислены некоторые типы носителей.Тип | Описание |
---|---|
all | Все типы. Это значение используется по умолчанию. |
aural | Речевые синтезаторы, а также программы для воспроизведения текста вслух. Сюда, например, можно отнести речевые браузеры. |
braille | Устройства, основанные на системе Брайля, которые предназначены для слепых людей. |
handheld | |
Печатающие устройства вроде принтера. | |
projection | Проектор. |
screen | Экран монитора. |
tv | Телевизор. |
В CSS для указания типа носителей применяются команды @import и @media, с помощью которых можно определить стиль для элементов в зависимости от того, выводится документ на экран или на принтер.
Ключевые слова @media и @import относятся к эт-правилам. Такое название произошло от наименования символа @ — «эт», с которого и начинаются эти ключевые слова. В рунете для обозначения символа @ применяется устоявшийся термин «собака». Только вот использовать выражение «собачье правило» язык не поворачивается.
При импортировании стиля через команду @import тип носителя указывается после адреса файла. При этом допускается задавать сразу несколько типов, упоминая их через запятую, как показано в примере 4.1.
Пример 4.1. Импорт стилевого файла
HTML5CSS 2.1IECrOpSaFx
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Импорт стиля</title> <style> @import "/style/main.css" screen; /* Стиль для вывода результата на монитор */ @import "/style/smart.css" print, handheld; /* Стиль для печати и смартфона */ </style> </head> <body> <p>. ..</p> </body> </html>
В данном примере импортируется два файла — main.css предназначен для изменения вида документа при его просмотре на экране монитора, и smart.css — при печати страницы и отображении на смартфоне.
Браузер Internet Explorer до седьмой версии включительно не поддерживает типы носителей при импорте стилевого файла.
Команда @media позволяет указать тип носителя для глобальных или связанных стилей и в общем случае имеет следующий синтаксис.
@media тип носителя 1 { Описание стиля для типа носителя 1 } @media тип носителя 2 { Описание стиля для типа носителя 2 }
После ключевого слова @media идёт один или несколько типов носителя, перечисленных в табл. 4.1, если их больше одного, то они разделяются между собой запятой. После чего следуют обязательные фигурные скобки, внутри которых идёт обычное описание стилевых правил.
В примере 4.2 показано, как задать разный стиль для печати и отображения на мониторе.Пример 4.2. Стили для разных типов носителей
HTML5CSS 2.1IECrOpSaFx
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Типы носителей</title> <style> @media screen { /* Стиль для отображения в браузере */ BODY { font-family: Arial, Verdana, sans-serif; /* Рубленый шрифт */ font-size: 90%; /* Размер шрифта */ color: #000080; /* Цвет текста */ } h2 { background: #faf0e6; /* Цвет фона */ border: 2px dashed maroon; /* Рамка вокруг заголовка */ color: #a0522d; /* Цвет текста */ padding: 7px; /* Поля вокруг текста */ } h3 { color: #556b2f; /* Цвет текста */ margin: 0; /* Убираем отступы */ } P { margin-top: 0.5em; /* Отступ сверху */ } } @media print { /* Стиль для печати */ BODY { font-family: Times, 'Times New Roman', serif; /* Шрифт с засечками */ } h2, h3, P { color: black; /* Чёрный цвет текста */ } } </style> </head> <body> <h2>Как поймать льва в пустыне</h2> <h3>Метод случайных чисел</h3> <p>Разделим пустыню на ряд элементарных прямоугольников, размер которых совпадает с размером клетки для льва.После чего перебираем полученные прямоугольники, каждый раз выбирая заданную область случайным образом. Если в данной области окажется лев, то мы поймаем его, накрыв клеткой.</p> </body> </html>
В данном примере вводится два стиля — один для изменения вида элементов при их обычном отображении в браузере, а второй — при выводе страницы на печать. При этом облик документа для разных носителей может сильно различаться между собой, например, как это показано на рис. 4.1 и рис. 4.2.
Рис. 4.1. Страница для отображения в окне браузера
Рис. 4.2. Страница, предназначенная для печати
Просмотреть документ, у которого CSS установлен как тип print можно, если распечатать определенную страницу или воспользовавшись предварительным просмотром в браузере (Файл > Предварительный просмотр). Или пойти на хитрость и временно заменить print на screen, чтобы отобразить итог в браузере. Именно так был получен рис. 4.2.
Команда @media применяется в основном для формирования одного стилевого файла, который разбит на блоки по типу устройств. Иногда же имеет смысл создать несколько разных CSS-файлов — один для печати, другой для отображения в браузере — и подключать их к документу по мере необходимости. В подобном случае следует воспользоваться тегом <link> с атрибутом media, значением которого выступают все те же типы, перечисленные в табл. 4.1.
В примере 4.3 показано, как создавать ссылки на CSS-файлы, которые предназначены для разных типов носителей.
Пример 4.3. Подключение стилей для разных носителей
HTML5CSS 2.1IECrOpSaFx
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Разные носители</title> <link media="print, handheld" rel="stylesheet" href="print.css"> <link media="screen" rel="stylesheet" href="main. css"> </head> <body> <p>...</p> </body> </html>
В данном примере используются две таблицы связанных стилей, одна для отображения в браузере, а вторая — для печати документа и его просмотре на смартфоне. Хотя на страницу загружаются одновременно два разных стиля, применяются они только для определённых устройств.
Аналогично можно использовать и глобальные стили, добавляя атрибут media к тегу <style> (пример 4.4).
Пример 4.4. Стиль для смартфона
HTML5CSS 2.1IECrOpSaFx
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Разные носители</title> <style media="handheld"> BODY { width: 320px; /* Ширина страницы */ } </style> </head> <body> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. </p> </body> </html>
В данном примере ширина для устройств типа handheld ограничена размером 320 пикселов.
Вопросы для проверки
1. Паша решил для своего сайта сделать версию для печати. Какую строку ему следует использовать в коде?
- <link media=»printer» rel=»stylesheet» href=»print.css»>
- @import «palm.css» print;
- @import url(«printer.css») printer;
- @media «palm.css» print;
- <style media=»print»>
2. В какой момент подключается стиль для принтера?
- Во время печати документа.
- Сразу после загрузки страницы.
- Как только браузер найдёт в коде подходящий стиль или ссылку на стилевой файл.
- После обнаружения компьютером принтера.
- После того, как принтер сообщит браузеру о своем наличии.
3. В какой строке кода содержится ошибка?
@media hanheld { BODY { color: #080; background: #ffe; }
- @media hanheld {
- BODY {
- color: #080;
- background: #ffe;
- }
Ответы
1. @import «palm.css» print;
2. Во время печати документа.
3. }
@Media print css – 2 Ответа
Если это точная структура вашего html, то это будет работать на вас.
@media print { nav, div > div:not(.to-print), div + div:not(.to-print) { display: none; } } /* So you can see the styles working on the elements you want to hide outside of print */ nav, div > div:not(.to-print), div + div:not(.to-print) { color: red; }
<nav> .... navigation menu </nav> <div> <div></div> <div> <h3>My div to display in print mode<h3> <section> <article>. ...content....</article> </section> </div> <div></div> </div> <div> .... HTML elements </div>
Вы можете распечатать @media и @media, чтобы определить, что будет напечатано и что будет показано на экране.
@media print { .to-print { --css to show content-- } } @media screen { .to-print { --css to not show content-- } }
или
Создайте новый css и включите его так:
<link rel="stylesheet" type="text/css" href="/print.css" media="print">
Ещё вопросы
- 1Android — Java — Доступ к закрытой переменной в Main-Activity из другого экземпляра класса
- 1ESRI Карта управления PanTo
- 0Попытка создать PIVOT в MySQL с помощью хранимой процедуры не приведет к добавлению столбцов, имеющих только нулевые записи.
- 0Проблемы с cin
- 0IE 10 не принимает пользовательское значение атрибута типа тега <li>
- 0Радиокнопки по обе стороны от JQuery Mobile Listview
- 0ng-выбран с истиной или ложью
- 1Создание XML в C # с использованием шаблонов с заполнителями
- 0Медленный запрос при использовании DISTINCT в MYSQL с различными другими условиями (10 миллионов записей)
- 0UiRouter — состояние равно нулю
- 1Как включить активную инициализацию при вызове метода Hibernate
- 1Изменить цвет фона каждой строки в ExpandableListView?
- 0Почему цикл for в c ++ обращается к области памяти в неинициализированном месте по сравнению с поведением обычного cout?
- 0JavaScript jQuery appendTo и плагин работают вместе
- 0Проверка определенного синтаксиса с помощью preg_match
- 1Вложенные лямбда-выражения
- 1Проверка, вводит ли пользователь одну и ту же строку дважды, используя массив
- 0Подсчитать элемент до смещения
- 0jQueryUI — автозаполнение с помощью файла json
- 1Записать в каждую таблицу CSV с последующим заголовком
- 0Получить значение текстового поля из ячейки
- 1Сделайте клик на символе табуляции и измените карету правильно
- 1Лучший способ улучшить суммирование элементов сложной матрицы в Numpy по сравнению с MATLAB
- 1Создание приложения для Android
- 0Используя регулярные выражения, замените CSS ID или класс на PHP
- 1стиль пейджера в скине gridview в asp. net
- 0Mysql-запрос для объединения двух таблиц, используя отношение многие ко многим
- 1Установка ширины и высоты JComponent в качестве переменных экземпляра
- 0Div разочаровывает с JQuery высота авто
- 0AngularJS V1.4.7 директива templateUrl динамический путь
- 1При получении ошибок типа не удается прочитать свойства ‘contact’ и ‘name’ из undefined
- 1Синхронные сокеты все еще допускают внешние действия пользователя?
- 1Вычислить корреляцию между функциями и целевой переменной
- 1Ошибка конфигурации: отсутствует регион в конфигурации (AWS)
- 1Почему иногда нам нужен префикс [attr.] Для привязки
- 0MySQL скрипт для добавления вывода запроса в качестве ввода в другой запрос
- 0Почему определение метода не является обязательным?
- 1Как запускать примеры проектов прямо с сайта разработчика в Eclipse?
- 0Отправка изображения с наложением текста в электронном письме
- 0Почему функция отображения мешает выравниванию текста?
- 1сравнение столбцов в 2 файлах CSV
- 0Редактировать текущий мастер формы для успешного размещения данных
- 1Как удалить строку из jtable
- 1NetBeans, работающий на Java-программе с main в непубличном классе
- 1Regex находит и печатает совпадения многогранника внутри одного совпадения
- 0Функция keyup выполнена, хотя она не вызывается
- 0Почему следующий SQL-запрос работает, несмотря на неправильный синтаксис?
- 0Как правильно сохранить строку с кавычками в базе данных для дальнейшего отображения?
- 1Нужна помощь в очистке моего кода парсера XML
- 0Заставить приложение angular js на heroku использовать http вместо https?
Как настроить таблицу стилей для печати — Smashing Magazine
- Чтение за 20 мин. CSS, Техники, Распечатать
- Поделиться в Twitter, LinkedIn
Об авторе
Кристиан когда-то был очень активен в сообществе Sketch и даже написал книгу о приложении для дизайна. В настоящее время работает евангелистом Gravit …
Подробнее о Кристиан ↬
В то время, когда кажется, что у каждого есть планшет, который позволяет потреблять все в цифровом виде, а единственная настоящая бумага, которую мы используем, — это туалетная бумага, может показаться странным писать о давно забытой привычке печатать веб-страницы. страница. Тем не менее, как ни странно это может показаться провидцам и производителям планшетов, мы все еще далеки от реальности безбумажного мира. [Ссылки проверены 08.02.2017] На самом деле тонны бумаги уплывают из принтеров по всему миру каждый день, потому что не у всех есть планшеты, а компьютер не всегда находится под рукой. Более того, многие из нас считают, что письменный текст лучше потребляется в автономном режиме. Поскольку я люблю готовить, иногда распечатываю рецепты дома или электронные письма и скриншоты на работе, хотя делаю это как можно реже из соображений окружающей среды.В то время, когда кажется, что у каждого есть планшет, который позволяет потреблять все в цифровом виде, а единственная настоящая бумага, которую мы используем, — это туалетная бумага, может показаться странным писать о давно забытой привычке печатать веб-страницы. Тем не менее, как ни странно это может показаться провидцам и производителям планшетов, мы все еще далеки от реальности безбумажного мира.
Дополнительная литература на SmashingMag:
- Дизайн для печати с помощью CSS
- Дизайн макетов CSS с помощью Flexbox прост как пирог
- Жаргон индустрии веб-дизайна: глоссарий и ресурсы
- Вывод библиотек шаблонов на новый уровень
На самом деле тонны бумаги выходят из принтеров по всему миру каждый день, потому что не у всех есть планшеты и не всегда есть компьютеры. в пределах досягаемости. Более того, многие из нас считают, что письменный текст лучше потребляется в автономном режиме. Поскольку я люблю готовить, иногда распечатываю рецепты дома или электронные письма и скриншоты на работе, хотя делаю это как можно реже из соображений окружающей среды.
Таблица стилей для печати полезна, а иногда даже необходима. Некоторые читатели могут захотеть сохранить вашу информацию локально в виде хорошо отформатированного PDF-файла, чтобы обращаться к ней позже, когда у них не будет подключения к Интернету. Однако в эпоху адаптивного веб-дизайна о стилях печати часто забывают. Хорошей новостью является то, что таблицу стилей для печати на самом деле очень легко создать: вы можете следовать паре простых приемов CSS, чтобы создать приятный опыт для читателей и показать им, что вы приложили дополнительные усилия, чтобы сделать пользователя немного лучше. опыт. Итак, с чего начать?
Еще после прыжка! Продолжить чтение ниже ↓
Начало работы
Давайте рассмотрим процесс настройки таблицы стилей печати. Лучший способ — начать с нуля и полагаться на таблицу стилей браузера по умолчанию, которая по умолчанию довольно хорошо заботится о выводе на печать. В этом случае вставьте все объявления для печати в конце вашей основной таблицы стилей и заключите их в это четкое правило:
@медиа печать { … }
Чтобы это сработало, мы должны подготовить две вещи:
- Включить все стили экрана в отдельное правило
@media screen {…}
; - Не указывать тип носителя для сокращенной таблицы стилей:
В редких случаях использование экранных стилей для печати является дизайн таблицы стилей печати. Хотя таким образом было бы проще сделать два вывода похожими по внешнему виду, решение не является оптимальным, поскольку экран и печать — это разные котлы. Многие элементы нужно будет сбросить или оформить по-другому, чтобы они нормально выглядели на листе бумаги. Но самыми большими ограничениями являются ограниченная ширина страницы и потребность в лаконичном и четком выводе. Лучше строить стили печати отдельно от стилей экрана. Это то, что мы будем делать на протяжении всей этой статьи.
Конечно, вы можете разделить объявления screen и print на два файла CSS. Просто установите тип носителя для вывода на экран на media="screen"
и тип носителя для печати на media="print"
, опустив его для первого, если вы хотите использовать таблицу стилей экрана.
Для иллюстрации я создал простой веб-сайт вымышленной винодельни Smashing Winery.
Наш пример сайта.
Все необходимое для корректного отображения экрана на месте. Но как только среда меняется с виртуальных пикселей на настоящую бумагу, единственное, что имеет значение, — это фактическое содержимое.
Две страницы неизмененного предварительного просмотра. Шапка пока не оптимальна, а основная навигация и футер лишние.
Поэтому в качестве первой задачи скроем все лишнее: а именно основную навигацию и футер.
заголовок навигации, нижний колонтитул { дисплей: нет; }
В зависимости от типа веб-сайта вы также можете рассмотреть возможность скрытия изображений по умолчанию. Если изображения большие, это было бы разумно, чтобы сэкономить вашим пользователям некоторые расходы на печать. Но если изображения в основном поддерживают содержание, и их удаление повредит смыслу, просто оставьте их. Что бы вы ни решили, ограничьте изображения до определенной ширины, чтобы они не растекались по бумаге. Я обнаружил, что 500 пикселей — это хороший компромисс.
картинка { максимальная ширина: 500 пикселей; }
В качестве альтернативы вы также можете положиться на испытанный и надежный max-width: 100%
, который отображает изображения в их максимальном размере, но не больше, чем ширина страницы.
Вы можете использовать простой трюк, чтобы получить высококачественные изображения при печати. Просто предоставьте версию с более высоким разрешением для каждого необходимого изображения и измените его размер до исходного размера с помощью CSS. Подробнее об этой технике читайте в статье «Печать изображений с высоким разрешением» на A List Apart.
Конечно, видео и другие интерактивные элементы следует спрятать, потому что на бумаге они бесполезны. К ним относятся
,
,
и
элементов. Вы также можете рассмотреть возможность замены каждого видеоэлемента изображением в таблице стилей печати.
С исчезновением основной навигации, нижнего колонтитула и изображений реальный текст становится все ближе к центру внимания. Но предстоит еще поработать, особенно с заголовком.
Подгонка под нужный размер
Чтобы определить поля страницы, вы можете использовать правило @page
, чтобы просто применить поля по всей странице. Например:
@страница { поле: 0,5 см; }
устанавливает поля страницы со всех сторон равными 0,5 см. Вы также можете настроить поля для каждой второй страницы. Следующий код устанавливает поля левой страницы (1, 3, 5 и т. д.) и правой страницы (2, 4, 6 и т. д. ) независимо друг от друга.
@страница :слева { поле: 0,5 см; } @страница: справа { поле: 0,8 см; }
Вы также можете использовать псевдокласс :first
page, который описывает стиль первой страницы при печати документа:
@страница: первая { поля: 1 см 2 см; }
К сожалению, @page
не поддерживается в Firefox, но поддерживается в Chrome 2.0+, IE 8.0+, Opera 6.0+ и Safari 5.0+. @page :first
поддерживается только в IE8+ и Opera 9.2+. ( спасибо за подсказку, Designshack )
Теперь давайте настроим некоторые общие настройки для шрифтов. Большинство браузеров по умолчанию устанавливают Times New Roman, потому что считается, что шрифты с засечками приятнее для глаз при чтении на бумаге. Мы можем использовать Georgia с размером шрифта 12 пунктов и немного большей высотой строки для лучшей читаемости.
тело { шрифт: 12pt Georgia, "Times New Roman", Times, с засечками; высота строки: 1,3; }
Однако, чтобы сохранить некоторый контроль, мы должны явно установить размеры шрифта ниже. Диаграмма на ReedDesign дает нам представление об этом; но со всеми размерами экрана и разрешениями это только приблизительные оценки.
ч2 { размер шрифта: 24pt; } h3 { размер шрифта: 14pt; поле сверху: 25px; } в сторону h3 { размер шрифта: 18pt; }
Кроме особых случаев (например,
, который в противном случае был бы слишком близок к предыдущему абзацу), нам не нужно трогать поля или внешний вид каких-либо элементов, потому что они довольно хорошо обрабатываются настройками по умолчанию. Если вам не нравится, что некоторые элементы имеют отступ, например
,
и
, вы всегда можете сбросить их поля:
цитата, ул { маржа: 0; }
Или вы можете переопределить стиль маркеров по умолчанию в ненумерованных списках…
ul {стиль списка: нет}
…и заменить на пользовательский; например, двойная стрелка (и пробел, чтобы оставить место):
ли { содержание: "" "; }
Вы также можете немного выделить
, увеличив его и выделив текст курсивом.
В настоящее время в заголовке осталось обработать
заголовок и логотип. Первый существует только для целей доступности и скрыт для отображения на экране с помощью CSS. Хотя мы могли бы использовать его как своего рода заголовок в распечатке, чтобы указать источник контента, давайте попробуем что-нибудь более привлекательное. Было бы неплохо отображать реальный логотип вместо скучного текста?
К сожалению, часть логотипа «Винодельня» белая и поэтому не идеальна для печати на светлой бумаге. Вот почему в исходном коде есть две версии логотипа: одна для экрана, другая для печати. Последнее изображение не имеет текста alt
, иначе программы чтения с экрана повторяли бы чтение «Smashing Winery».
Во-первых, нам нужно скрыть логотип экрана и заголовок
. В зависимости от актуальности изображений, возможно, мы уже решили скрыть их вместе с другими ненужными элементами:
заголовок h2, заголовок навигации, нижний колонтитул, img { дисплей: нет; }
В этом случае мы должны вернуть печатный логотип. Конечно, вы можете использовать соседний родственный селектор для задания ( заголовок img + img
), чтобы сохранить имя класса и жить с ним, не работающим в Internet Explorer 6.
заголовок .print { дисплей: блок; }
В противном случае вы можете просто использовать заголовок .screen
(или заголовок :first-child
), чтобы скрыть основной логотип. И тогда останется второй логотип. Имейте в виду, что в макетах для печати отображаются только изображения, встроенные через тег
. Фоновых изображений нет.
Вуаля! Теперь у нас есть красивый заголовок для нашей распечатки, в котором ясно показан источник всего. В качестве альтернативы вы все еще можете удалить второй логотип из исходного кода и использовать заголовок
заголовок, который мы отключили ранее (другими словами, убираем его с
display: none
line). Возможно, вам нужно будет скрыть оставшийся логотип, как мы это делали раньше. Кроме того, размер шрифта можно увеличить, чтобы он четко распознавался как заголовок веб-сайта.
заголовок h2 { размер шрифта: 30pt; }
В качестве небольшого дополнения заголовок распечатки может содержать URL-адрес веб-сайта. Это делается путем применения псевдоэлемента :after
к тег
, который, к сожалению, не будет работать в IE до версии 8; но поскольку это всего лишь небольшой бонус, мы можем жить с недостатком IE.
заголовок: после { содержание: «www.smashing-winery.com»; }
Чтобы узнать, что еще могут делать эти псевдоэлементы, прочтите описание в Mozilla Developer Network.
Еще одна особенность IE с 6 по 8 заключается в том, что теги HTML5 не могут быть напечатаны. Поскольку мы используем эти теги на веб-сайте-примере, нам придется применить HTML5shiv Реми Шарпа в заголовке. Shiv позволяет не только стилизовать теги HTML5, но и печатать их. Если вы уже используете Modernizr, это прекрасно, потому что в него включена заточка.
<скрипт src="js/html5.js">
К сожалению, поведение IE по-прежнему немного глючит, даже когда применяется эта заточка. Теги HTML5, которые были оформлены для макета экрана, необходимо сбросить, иначе стиль будет принят для распечатки.
Некоторые разработчики добавляют короткое сообщение в качестве дополнения (или альтернативы) к отображаемому URL-адресу, напоминая пользователям, где они находились, когда распечатывали страницу, и чтобы проверить наличие свежего контента. Мы можем сделать это с помощью :псевдоэлемент перед
, чтобы он отображался перед логотипом. Опять же, это не будет работать в IE 6 или 7.
заголовок: перед { дисплей: блок; content: "Спасибо, что разместили наш контент на www.smashing-winery.com. Пожалуйста, заходите в ближайшее время, чтобы узнать о новых предложениях вкусного вина из нашей винодельни."; нижняя граница: 10px; граница: 1px сплошная #bbb; отступ: 3px 5px; стиль шрифта: курсив; }
Чтобы отличить его от фактического содержимого, мы выделили ему серую рамку, немного отступов и курсив. Наконец, я сделал его блочным элементом, чтобы граница проходила вокруг него, и дал логотипу отступ.
Чтобы сделать его более незаметным, мы могли бы переместить это сообщение в конец страницы и добавить его к основному контейнеру страницы, который имеет класс .content
. Если это так, мы будем использовать элемент :after
и верхнее поле, чтобы отделить его от содержимого боковой панели. Насколько я понимаю, URL-адрес является достаточным указанием, поэтому я бы положился на него и опустил сообщение.
Наконец, нам нужно удалить границу логотипа, чтобы он не отображался в устаревших браузерах, и переместить <заголовок>
от содержимого:
картинка { граница: 0; } заголовок { нижняя граница: 40px; }
Заголовок показан двумя разными способами, один с логотипом и простым URL, а другой с сообщением и заголовком в виде простого текста.
Очевидно, что на бумаге ссылки не кликабельны и поэтому бесполезны. Вы можете попытаться создать обходной путь, заменив ссылки QR-кодами на лету, но решение может оказаться неосуществимым. Чтобы использовать ссылки, вы можете отображать URL-адрес после каждой строки анкорного текста. Но текст, изобилующий URL-адресами, может отвлекать и мешать чтению; и, по возможности, желательно избавить читателя от лишней информации.
Лучшим решением является псевдоэлемент :after
. Он отображает URL-адрес после каждого текста привязки, заключенного в квадратные скобки. И размер шрифта уменьшен, чтобы сделать его менее навязчивым.
п а: после { содержание: "(" attr(href) ")"; размер шрифта: 80%; }
В качестве меры предосторожности мы ограничили этот метод ссылками внутри
элементов. Чтобы сделать еще один шаг, мы могли бы выбрать отображение только URL-адресов внешних ссылок. Селектор атрибутов идеально подходит для этого: 9=»https://»]: после {
содержание: «(» attr(href) «)»;
размер шрифта: 90%;
}
Возможности для ссылок в печатных документах кажутся почти безграничными, поэтому давайте попробуем еще. Чтобы отличить все внутренние ссылки, давайте перед ними укажем домен веб-сайта (опуская все остальные свойства, чтобы все было кратко и ясно):
п а: после { содержимое: " " attr(href) ")"; }
Затем мы можем скрыть внутренние ссылки ( #
), потому что отображать особо нечего:
Но есть одна вещь, которую нужно помнить, особенно с внешними ссылками. Некоторые из них очень длинные, например, в библиотеке разработчиков Safari. Такие ссылки могут легко сломать макет, как и при выводе на экран. К счастью, об этом позаботится специальное свойство:
. п а { перенос слов: прерывание слова; }
Разбивает длинные URL-адреса, когда они достигают определенного предела или, как в нашем случае, когда они превышают ширину страницы. Просто добавьте это свойство в первое из приведенных выше объявлений. Хотя это свойство в основном поддерживается во многих браузерах — даже в IE 6 — оно работает только в Chrome при печати. В то время как Firefox автоматически разбивает длинные URL-адреса, Internet Explorer не имеет для этого возможности.
Наконец, мы установили черный цвет ссылки, чтобы сделать ее более удобной для читателей.
а { цвет: #000; }
URL-адреса, внутренние или внешние, теперь отображаются рядом со ссылками с особой обработкой.
Аарон Густафсон пошел еще дальше и создал небольшой скрипт Footnote Links. Согласно описанию:
Этот сценарий создает список URI из любых тегов в указанном контейнере и добавляет список в виде сносок к документу в указанном месте. Любым элементам, на которые есть ссылки, присваивается динамически присваиваемый номер, соответствующий ссылке в списке сносок.
Статья Аарона в A List Apart «Улучшение отображения ссылок для печати» дает более полное представление об идее, лежащей в основе этого скрипта.
Пока мы на этом, было бы разумно сообщить читателям, откуда берутся цитаты, например те, что заключены в теги
и
. Просто добавьте атрибут
cite
(который будет URL-адресом) после кавычек, например:
вопрос: после { содержание: " (Источник: " attr(cite) ")"; }
Бок о бок
Мы еще не занимались содержимым боковой панели. Несмотря на то, что по умолчанию он появляется после основного контента, давайте уделим ему особое внимание. Чтобы она была различима, мы добавим боковой панели серую верхнюю границу и безопасный буфер размером 30 пикселей. Последнее свойство, display: block
, гарантирует правильное отображение границы.
в сторону { верхняя граница: 1px сплошная #bbb; поле сверху: 30px; дисплей: блок; }
Чтобы еще больше отделить его, мы могли бы установить специальное свойство печати:
разрыв страницы до: всегда;
Содержимое боковой панели будет перемещено на новую страницу при печати. Если мы сделаем это, мы можем опустить все остальные свойства.
Боковая панель на экране (слева) и в распечатанном виде (справа). Я затенил все остальное, чтобы сделать его более очевидным.
Мы могли бы сделать то же самое для комментариев. Комментарии не отображаются в примере, но их все же стоит затронуть. Поскольку они иногда занимают много времени, может быть разумно не указывать их в распечатке (просто установите 9Дисплей 0046: нет для всего контейнера). Если вы хотите показать комментарии, установите хотя бы page-break-before
. Вы также можете использовать page-break-after: всегда
, если есть содержимое для печати на новой странице. Свойства page-break-before
и page-break-after
поддерживаются во всех основных браузерах.
Мы также можем использовать свойства вдов
и сирот
. Термины происходят от традиционной печати, и они принимают числа в качестве значений. 9Свойство 0046 widows устанавливает минимальное количество строк в абзаце, которые необходимо оставить в верхней части страницы, прежде чем полностью переместить их на новую страницу. Свойство orphans
задает количество строк в нижней части страницы. Свойства orphans
и widows
поддерживаются в IE 8+ и Opera 9.2+, но, к сожалению, не в Firefox, Safari или Chrome.
Теперь, когда мы позаботились о боковой панели, таблица стилей для печати готова! Вы можете скачать это здесь. Файл полностью задокументирован и поэтому может служить полезным справочным материалом или отправной точкой.
Заполненная таблица стилей печати.
Просто для развлечения
Вы можете спросить: «Почему мы не можем просто разместить боковую панель рядом с основным контентом, как на самом веб-сайте?» Ну, вывод на экран и на печать немного отличается. В отличие от первого, распечатки не очень широкие и поэтому не занимают много места для заполнения. Но в зависимости от размера шрифта длина строки может превышать максимум 75 символов, что затрудняет чтение.
В этом случае мы могли бы, конечно, ограничить ширину основного контента (желательно не слишком сильно — мы не должны устанавливать длину строки менее 55 символов), а затем полностью расположить боковую панель прямо под ней, так же, как на экране дисплея. Но описание этого метода выходит за рамки этой статьи, поэтому обратитесь к таблице стилей экрана примера веб-сайта (номера строк 112 и 141 и ниже).
По моему скромному мнению, избегайте таких экспериментов. Хотя в принципе макеты для печати имеют безграничные возможности, лучше сосредоточиться на содержании и удалить все остальное. Лучший способ обеспечить оптимальную длину строки — просто уменьшить ширину страницы или увеличить размер шрифта.
Preview Made Easy
Print Preview Тима Коннелла — это небольшой удобный плагин jQuery, который воспроизводит встроенную функцию предварительного просмотра, но с одним отличием. Вместо того, чтобы открывать отдельную страницу, он показывает гладкий оверлей с кнопками «Закрыть» и «Печать» вверху. Он также имеет удобный ярлык «P». Вы также можете проверить демо-страницу.
Упущенная возможность
Представьте, что вы можете посетить любую страницу, нажать «Печать» и получить оптимизированную версию страницы для просмотра на бумаге. К сожалению, мы не живем в этом идеальном мире. Некоторые веб-сайты по-прежнему полагаются на JavaScript для создания версий для печати, а многим другим дизайнерам просто все равно. Но это упущенная возможность. Тщательно составленная таблица стилей печати может использоваться не только для печати, но и для оптимизации разборчивости при чтении с экрана.
Как владелец веб-сайта, вы можете определить отображаемые изображения (если они есть), оптимальный шрифт и размер, а также представление других элементов. Вы можете сделать контент более привлекательным, чем версии, созданные Instapaper и Readability, уделив печатной версии дополнительное внимание, которого она заслуживает.
Будущее
Хотя использование CSS3 для макетов экрана в настоящее время довольно распространено, в среде печати он еще не совсем зарекомендовал себя. У W3C есть обширное описание «Paged Media», но, к сожалению, на данный момент поддержка очень ограничена, Opera и Chrome — единственные браузеры, которые поддерживают некоторые связанные с ним свойства. При достойной поддержке можно было бы использовать правило @page
для установки размеров страницы, переключения в альбомный режим, изменения полей и многого другого. Даже медиа-запросы были задуманы для ответа на разные размеры страниц.
Давайте рассмотрим несколько примеров веб-сайтов, оптимизированных для печати.
А Список Отдельно Гладкий дизайн с несколькими столбцами упрощен до одного столбца во всю ширину, что интуитивно отражает разумную иерархию веб-сайта. Названия статей и авторы больше не являются активными ссылками. И красивая чистая типографика сохраняется нетронутой благодаря совместимым шрифтам и простым цветам; изменение шрифта не требуется, хотя значение размера шрифта немного увеличивается. Рекламные и партнерские стили скрыты, и в результате получается простая, чистая печатная страница, которая легко согласуется с любым принтером или настройкой страницы в документе. A List Apart является образцовым, за исключением одного важного момента: логотип нигде не появляется на распечатке.
Затерянные мировые выставки Гладкая печатная страница помогает нести визуальные эффекты веб-сайта выставок «Затерянный мир». Основной заголовок и его красочный фон заменены на упрощенную версию в стиле предварительного просмотра. Однако некоторые изображения можно было удалить, чтобы сэкономить дорогие чернила для принтера. ( Обновлено ).
Утренние новости Можно было бы ожидать, что большинство новостных веб-сайтов будут использовать функцию предварительного просмотра перед печатью, но это не так. The Morning News подготовила свой контент к печати без особого беспокойства, счастливо исключив фоновые изображения и цвет, но при этом донеся свое сообщение.
Джеймс Ли Джеймс Ли разработал свой личный веб-сайт исключительно хорошо для этой цели, тщательно сохранив все пробелы и ключевые элементы. Логотип является частью печатного продукта, а навигационные ссылки — нет: они очень умны, потому что навигация не имеет ценности на печатной странице, если она не является информативной сама по себе. Невеб-шрифты преобразуются в простые печатные (см. «Другое…»). Блестяще выполнено для печати.
TechCrunch Недавний редизайн TechCrunch изменил не только визуальный дизайн сайта, но и мелкие детали, которые необходимо учитывать при просмотре сайта на мобильном устройстве или при распечатке. Макет печати очень чистый и минималистичный, без лишних деталей, но и без ссылок на реальную страницу, которая была распечатана. Логотип TechCrunch также отсутствует.
Р/ГА Хотя логотип отсутствует в печатной версии этого веб-сайта, внимание уделяется размещению контента внутри. В то время как веб-версия имеет простые линии и чистое пространство, печатная страница сжимает элементы, чтобы наилучшим образом использовать пространство. Сильная сетка и эффективная типографика усиливают эффект. В этом примере некоторые изображения также могут быть удалены.
Мастер студии Отличная работа функции предварительного просмотра перед печатью. Страница была тщательно разработана по сетке, и для ее подготовки к печати требуется совсем немного; некоторое внимание к цвету фона текста и не более того. К сожалению, логотип является фоновым изображением и поэтому исключен.
Бутылочная ракета Creative Хотя этот логотип также не представлен в распечатке, ребята из Bottlerocket Creative очень хорошо адаптировали свой типографский стиль для просмотра в автономном режиме. Было бы легко предположить, что дизайн был создан в основном с помощью изображений, но тщательное внимание к шрифту становится очевидным при ближайшем рассмотрении.
ОмниТИ OmniTI оптимизировала свой контент для печати не за счет уменьшения основного столбца, а за счет увеличения размера текста и предотвращения скопления изображений. Игривый вид соответствует хорошему интервалу. Единственный недостаток? Многие разрывы строк были удалены, из-за чего некоторые слова и предложения пересекались друг с другом.
В заключение
При подготовке вашего веб-сайта к печати читателями необходимо учитывать многое. Этот процесс заставляет вас тщательно изучать каждый элемент вашего контента, как никогда раньше, и все потому, что кому-то понадобится печатная копия вашей работы. Тем не менее, прежде всего, важно понимать разницу между печатью и фактическим чтением. Возможно, эти методы помогут вам визуализировать контент для мобильных устройств. Что может быть лучше, чтобы убить двух зайцев одним выстрелом, чем разработать макет для мобильных устройств, одновременно рассматривая возможность печати, чтобы убедиться, что ваш контент безупречно печатается для автономного архивирования? Время, которое вы инвестируете, может удвоиться.
Для получения дополнительной информации о подготовке содержимого к печати, в том числе путем изменения CSS, ознакомьтесь со следующими статьями:
- Полное руководство, Трентон Мосс, Webcredible
- 6 вещей, которые я узнал о CSS для печати из HTML5 Boilerplate, Джошуа Джонсон, DesignShack
- CSS-Tricks наконец-то опубликованы CSS, Chris Coyier, CSS-Tricks
- CSS Print Profile, W3C
- Media Queries, W3C 10 минут
Правило @media
Если вы делали адаптивный дизайн, вы уже знаете о правиле @media . Помимо различных размеров экрана, @media также позволяет ориентироваться на «печатные» носители. Вот пример:
Используя это правило, вы можете указать свой стандартный CSS как обычно, а затем добавить некоторые пользовательские стили, которые будут использоваться только при печати.
p { поле: 1em 0; }
@media print {
/* Скрывать ссылки на статьи при печати. */
.related-articles { display: none; }
}
Если вы хотите «обнулить» все свои стандартные стили экрана и начать с нуля, вы можете обернуть свои стили экрана в другое правило @media :
@media screen {
/* стандартные стили здесь . */
}@media print {
/* стили печати здесь. */
}
Свойства разрыва страницы
Чтобы обеспечить плавное перемещение содержимого по страницам, вам необходимо управлять разделением содержимого между страницами. Например, это выглядит неуклюже, если внизу страницы появляется большой заголовок — вместо этого вы хотите, чтобы он начинался на новой странице. Точно так же вы можете по возможности избегать таблиц, занимающих несколько страниц.
Вы можете сделать это, используя разрыв страницы перед , разрыв страницы после и разрыв страницы внутри . Для этих свойств можно установить значение всегда или избегать .
h2 {
/* Элементы h2 всегда начинаются вверху новой страницы. */
page-break-before: всегда;
}section.city-map {
/* этот раздел всегда занимает отдельную страницу или страницы. */
page-break-before: всегда;
page-break-after: всегда;
}table {
/* таблицы по возможности не разбиваются на страницы. */
page-break-inside: избежать;
}
Совет: повторяйте заголовки таблиц
Если в вашем документе есть таблицы, занимающие несколько страниц, их будет трудно читать при печати, если заголовки таблиц не повторяются в начале каждой страницы. Это довольно легко сделать — просто используйте в своей таблице элементы thead и tbody .
<таблица>
<заголовок>
Город
Население
27 миллионов
(2018)
При печати таблица будет выглядеть примерно так:
Совет. Добавление или удаление содержимого
хотите добавить содержимое, которое отображается только при печати. Например, вы можете захотеть связать URL-адреса для печати. Вы можете сделать это с помощью :after псевдоэлемент:
@media print {
a[href]:after {
content: «( » attr (href) «)»;
}
}
Вы также можете скрыть или показать определенные элементы только при печати. Комбинируя @media и display это можно сделать довольно легко.
/* скрыть водяной знак на экранах. */
.watermark {
отображение: нет;
}@media print {
/* скрыть навигацию при печати. */
навигация {
отображение: скрыть;
}
/* показывать водяной знак при печати */
.watermark {
display: initial;
}
}
Совет. Используйте эмуляцию мультимедиа CSS для разработки
Чтобы ускорить обратную связь во время разработки, можно настроить браузер на отображение стилей печати. Чтобы сделать это в Chrome на Mac, откройте инструменты разработчика, затем используйте сочетание клавиш command-shift-P для «Выполнить команду» и найдите «Эмулировать тип носителя для печати CSS».
Другие браузеры будут иметь аналогичную функцию в своих инструментах разработки.
К сожалению, чтобы увидеть разрывы страниц, вам придется каждый раз вручную печатать в PDF.
Расширенный совет: сироты и вдовы
Свойства сирот и вдов управляют тем, как текст в элементе разбивается на страницы. Иногда изменение этих значений может улучшить читабельность печатного документа.
p {
/* если до разрыва страницы
не меньше трех строк, переместите элемент в начало новой страницы. */
сирот: 3;
}
Слева внизу для сирот установлено значение 2, поэтому второй абзац начинается перед разрывом страницы. Установив сирот на 3, как показано справа, абзац переместится в начало следующей страницы.
Свойство widows противоположно свойству orphans — оно определяет минимальное количество строк, которые могут быть в начале новой страницы.
Совет для продвинутых пользователей: правило @page
С помощью правила @page можно настроить поля страницы для определенных страниц.
@page:first {
/* На первой странице нет полей. */
поле: 0;
}@page {
/* Установка поля на всех остальных страницах. */
поля: 2 см;
}
К сожалению, поддержка этого браузером в настоящее время немного ограничена, и вы можете использовать только псевдоселекторы :first , :last , :left , :right и :blank выберите страницы.
Теперь вы знакомы с важными свойствами макета печати, которые поддерживаются современными браузерами, такими как Chrome, Firefox и Safari.
К сожалению, поддержка более продвинутых функций макета печати в современных браузерах обычно ограничена. Например, браузеры не предоставляют стандартный способ добавления пользовательского содержимого верхнего или нижнего колонтитула с помощью CSS. Вы можете проверить проект paged.js , который предлагает полифилл для многих функций макета печати, которые в настоящее время отсутствуют в браузерах.
Наконец, если вы используете веб-приложение и хотите добавить функциональность PDF, ознакомьтесь с Paperplane — нашим простым в использовании API преобразования HTML в PDF.
Типы носителей CSS и страницы для печати
Типы носителей CSS и принтер дружественные страницы
«Сёрфинг в Интернете» традиционно означал пялиться в компьютер. монитор, хотя все меняется, и быстро. По мере развития сети она становится все более разнообразным, доступным даже для изобретателей Эла Гора. наверное, не мог предугадать. Мы все знакомы с печатью страницы для просмотра в автономном режиме, хотя теперь поддерживается создание веб-страниц для просмотра на портативных устройствах, проекционных экранах, телевизорах, для людей с инвалидность и многое другое. Все это здорово, но это происходит не просто так. собственный. Мы, вебмастер, должны приложить сознательные усилия, чтобы добавить это поддержку, и один интересный способ — через CSS. В этом уроке я обсудить типы мультимедиа в CSS и, в частности, как CSS можно использовать для Преобразуйте обычные веб-страницы, чтобы сделать их удобными для печати.
Типы мультимедиа CSS
Медиа относится к типу устройства, используемого для отображения веб-страницы, например, экран компьютера. С появлением все большего количества нетрадиционных устройств, таких как карманный компьютер, мобильный телефон или даже ваши часы, желающие получить доступ к Интернету, разработка вашего веб-сайта становится больше, чем просто браузерной игрой. Ты хочешь ваша веб-страница, чтобы хорошо выглядеть на нескольких устройствах. К счастью, процесс нет ничего сложного, как это может показаться, с поддержкой уровня CSS 2 для Типы носителей являются одними из простых инструментов, которые вы можете использовать, чтобы сделать свой удобство просмотра сайта на разных носителях.
Начиная с CSS-2, поддерживаются следующие 10 типов носителей:
Тип носителя Описание все Подходит/предназначен для всех устройств (по умолчанию).
слуховой Предназначен для синтезаторов речи.
шрифт Брайля Предназначен для устройств тактильной обратной связи с шрифтом Брайля.
рельефный Предназначен для постраничных принтеров Брайля.
портативный Предназначен для портативных устройств (обычно небольших экран, монохромный, ограниченная пропускная способность).
печать Предназначен для печатных документов (относится к документам также просматривать в режиме предварительного просмотра).
выступ Предназначен для проецируемых презентаций (например, проекторы или печать на прозрачные пленки). экран Предназначен для экранов компьютеров. телетайп Предназначен для носителей, использующих сетку символов с фиксированным шагом (например: телетайпы или терминалы). телевизор Предназначен для устройств телевизионного типа. Некоторые из вышеперечисленных элементов могут показаться незнакомыми обычному веб-мастеру. например шрифт Брайля, который считывает текст с экрана для пользователя (т.е. полезный слепому).
— 3 способа указания типов мультимедиа CSS
Существует 3 способа присоединения типа мультимедиа к таблице стилей, поэтому наш CSS применяется только в том случае, если для просмотреть страницу:
1) Связанные таблицы стилей:
css">
С приведенным выше объявлением «print.css» будет применяться только к страницы при ее печати (или просмотре в режиме предварительного просмотра в браузере). Вы можете добавить дополнительные связанные таблицы стилей, ориентированные на другие типы носителей, как Что ж.
В качестве примечания: для XML-документов эквивалент вышеперечисленного будет быть:
2) Импортированные таблицы стилей:
Используемые здесь импортированные таблицы стилей имеют то преимущество, что загружена условно, то есть таблица стилей будет загружена только если устройство соответствует указанному в атрибуте media. В малом устройства с пропускной способностью, такие как карманные компьютеры, любая экономия на ненужной пропускной способности может быть значительным. Недостатком этой технологии в настоящее время является отсутствие поддержки браузера/устройства по сравнению с методом 1) выше.
3) Встроенные таблицы стилей с помощью правила @media:
Как видите, любые объявления CSS, которые вы хотите, применяются только для «Проекция» должна быть заключена в блок @media.
- Введение в учебник (типы мультимедиа CSS)
- Создание удобных для печати страниц с помощью CSS
Создание удобных для печати страниц с помощью CSS
Печать Разное
Веб-обзор
январь 2000 г.Хотя вы можете этого не осознавать, Интернет является мультимедийным источником информации. Нет, я говорю не о мультимедиа — аудио- и видеопотоках, например, — а о фактическом носителе, через который нам передается веб-контент. Для подавляющего большинства пользователей среда является визуальной: мониторы, которые мы используем каждый день для отображения страниц. Но многие также обращаются к средствам печати, создавая «твердые копии» страниц с помощью своих лазерных принтеров.
Однако главной целью веб-дизайна является визуальная составляющая, и дизайн многих веб-страниц не очень хорошо распечатывается. Панели навигации, рекламные баннеры и другие подобные вещи загромождают распечатки и затрудняют их чтение. Сколько раз вы видели в Интернете страницу, на одной стороне которой есть ссылка, которая гласит: «Нажмите здесь, чтобы открыть версию для печати»?
Конечно, есть и другие носители — два таких примера — аудиобраузеры и портативные устройства, — но средством вывода, которое больше всего беспокоит авторов, по-прежнему является принтер. CSS2 предлагает способ решить эту проблему, давая авторам возможность создавать таблицы стилей, зависящие от носителя. В этом месяце мы рассмотрим, как можно оформить одну страницу как для экрана (монитора), так и для вывода на печать, и предоставим пример, который вы можете попробовать использовать в Internet Explorer 5 для Windows или MSIE 4. 5 для Macintosh.
Создание ассоциации
Существует множество способов связать таблицы стилей для конкретных носителей с документом. Самый привычный способ — использовать элемент
LINK
и просто добавить атрибутmedia
:В предыдущем примере мы видим, что таблице стилей
print.css
присвоенmedia
изprint 9.0047 ; таким образом, его стили будут использоваться только при печати документа. Эти стили не повлияют на отображение документа при просмотре с использованием монитора, аудиобраузера или любого другого устройства, не связанного с печатью.
В настоящее время существует десять определенных типов носителей:
- все
- слуховой
- шрифт Брайля
- рельефный
- портативный
- печать
- проекция
- экран
- телетайп
- телевизор
Эти типы носителей подробно описаны в главе 7 спецификации CSS2. Наиболее важным является значение
all
, которое является значением по умолчанию для любой таблицы стилей, не имеющей определенногоносителя
.Существуют и другие способы назначения медиафайлов таблицам стилей. Например, вы можете перечислить один или несколько типов мультимедиа в операторе @import:
@import url(paged.css) print,projection;
Таким образом, стили из
paged.css
будут использоваться как впечати
, так и впроекции
, оба из которых известны как постраничные носители . Для таблиц стилейLINK
ed также можно указать несколько носителей. Следующие два утверждения эквивалентны:URL-адрес импорта (print.css) печать, проекция;
Есть еще один способ применить стили, специфичные для медиа:
@media
правило. Вот пример:<СТИЛЬ type="text/css"> @медиа печать { ТЕЛО {размер шрифта: 10pt; высота строки: 120%; фон: белый;} } @медиаэкран { ТЕЛО {размер шрифта: средний; высота строки: 1em; фон: серебро;} } СТИЛЬ>
Рестайлинг для печати
Давайте теперь посмотрим на реальный пример таблиц стилей с альтернативными носителями. Чтобы эти примеры работали, вам нужно использовать MSIE5/Win или MSIE4.5/Mac, и будет полезно (хотя и не обязательно), если у вас есть под рукой принтер. Navigator 4.x не поддерживает альтернативные носители ни на одной платформе, поэтому эти примеры не помогут.
Во-первых, давайте предположим простую страницу текста с различными элементами: абзацами, заголовками, гиперссылками и так далее. Этот файл называется
latinesque.html
, и мы хотим отображать его по-разному в зависимости от того, находится ли он на мониторе или на бумаге. Сначала мы напишем таблицу стилей для отображения на экране (помните, что о вкусах не спорят):/* стили отображения экрана */ ТЕЛО {цвет: серебристый; фон: черный;} A: ссылка {цвет: желтый; фон: #333333; украшение текста: нет;} A: посетил {цвет: белый; фон: #333333; украшение текста: нет;} A: активный {цвет: черный; фон: белый; украшение текста: нет;} h2, h3, h4 {цвет: #CCCCCC; фон: черный; отступ снизу: 1px; нижняя граница: 1px сплошной серый;}
Это даст нам страницу, похожую на ту, что показана в Примере 1. Обратите внимание на рекламный баннер, который является общей чертой многих сайтов.
Хорошо, теперь нам нужно решить, как должна выглядеть распечатанная страница. Мы выбираем простой, обычный стиль печати, без рекламного баннера, и поэтому таблица стилей получается такой:
/* стили печати */ ТЕЛО {цвет: черный; фон: белый;} A:ссылка, A:посетили {фон: белый; черный цвет; оформление текста: подчеркивание; вес шрифта: полужирный;} h2, h3, h4 {фон: белый; черный цвет; отступ снизу: 1px; нижняя граница: 1px сплошной серый;} DIV.adbanner {display: none;}
Мы добавили последний стиль, чтобы избавиться от рекламного баннера в печатной версии. Чтобы получить представление о том, как это будет выглядеть, взгляните на Пример 2. Поймите, что это экранная аппроксимация распечатки, но на данный момент так и будет.
Теперь в начало документа добавим следующие
элементов LINK
:css" медиа="экран">
Таким образом, мы получаем документ, показанный в Примере 3, который имеет вид на экране, как в Примере 1, но печатный вид, как в Примере 2 — загрузите его в MSIE, распечатайте и посмотрите, что произойдет!
(Если вы хотите увидеть еще один пример таблиц стилей для печати в действии, попробуйте распечатать CSS Support Grid.)
Только верхушка айсберга
Конечно, приведенные мной простые примеры — это только начало. Практически нет ограничений на то, что можно сделать с таблицами стилей на альтернативных носителях. Их правильное использование является ключом к созданию страниц, которые можно стилизовать для обычного вывода на экран, печати, разборчивого отображения на портативных устройствах, специальных стилей для слепых и многого другого. По мере того, как браузеры будут добавлять поддержку большего количества мультимедиа и больше способов настройки стилей для конкретных мультимедиа, мы вернемся к этой теме для получения дополнительной информации. А пока опробуйте на своих страницах несколько таблиц стилей для печатных СМИ и посмотрите, как вы можете сделать свой сайт лучше и доступнее, чем когда-либо.
Использование CSS для форматирования документов для печати
Если вы когда-либо распечатывали информацию о бронировании билетов или маршрутах до отеля из Интернета, вы, вероятно, не были впечатлены результатами. Поэтому вы можете не знать, что стили для печатных документов могут быть оформлены почти так же, как и на экране, с использованием каскадных таблиц стилей (CSS).
Разделение интересов
Ключевым преимуществом CSS является отделение содержимого от представления. Проще говоря, это означает вместо очень старомодной стилистической разметки, такой как:
Заголовок
Мы используем семантическую разметку:
Заголовок
Это не только намного чище, но и означает, что наша презентация отделена от нашего контента. По умолчанию браузеры отображают элементы h2 как крупный полужирный текст, но мы можем изменить этот стиль в любое время с помощью таблицы стилей:
h2 { вес шрифта: нормальный; }
Собирая эти объявления стилей в отдельный файл и ссылаясь на этот файл из нашего HTML-документа, мы можем еще лучше использовать разделение. Таблицу стилей можно использовать повторно, и мы можем изменить этот единственный файл в любое время, чтобы обновить форматирование в каждом документе, который его использует.
Включая таблицу стилей печати
Аналогично включению таблицы стилей экрана, мы можем указать таблицу стилей для печати. Таблица стилей экрана обычно включается так:
Однако дополнительный атрибут media позволяет выполнять таргетинг на основе контекста, в котором отображается документ. По умолчанию предыдущий элемент эквивалентен:
css" rel="stylesheet" media="all" />
Это означает, что таблица стилей будет применяться для любого носителя, на котором отображается документ. Однако атрибут носителя также может принимать значения печати и экрана:
В этом примере таблица стилей print.css будет использоваться только при печати документа. Это очень полезный механизм. Мы можем собрать все общие стили (например, семейство шрифтов или межстрочный интервал) в таблице стилей, которая применяется ко всем носителям, и форматирование для конкретных носителей в отдельных таблицах стилей. Опять же, это еще одно использование разделения интересов.
Некоторые примеры объявлений стилей
Чистый фон
Вы почти наверняка не хотите тратить чернила на печать цветного фона или фонового изображения. Начните со сброса всех значений по умолчанию для этих значений, которые могли быть установлены в вашем документе:
корпус {
фон: белый;
цвет: черный;
}
Вы также можете запретить печать любых фоновых изображений — они должны быть декоративными и, следовательно, не являться обязательной частью вашего контента:
* {
фоновое изображение: нет !важно;
}
Связано: Как установить фоновое изображение в CSS
Контроль полей
Другим очевидным моментом, который следует учитывать при печати, являются поля страницы. Хотя CSS предоставляет средства для установки размера полей, вы должны помнить, что ваш браузер и принтер также могут сами влиять на параметры полей.
Например, в диалоговом окне печати Chrome есть параметр поля со значениями, включая нет и пользовательский , который переопределяет все, что указано через CSS:
По этой причине рекомендуется оставить решение о марже читателю на общедоступных веб-страницах. Однако для личного использования или для создания макета по умолчанию установка полей печати с помощью CSS может оказаться подходящей. Правило @page позволяет устанавливать поля и должно использоваться следующим образом:
@page {
поля: 2 см;
}
CSS также имеет возможности для более сложных макетов печати, таких как изменение поля в зависимости от того, является ли страница нечетной (справа), четной (слева) или титульной страницей.
К сожалению, это плохо поддерживается, особенно параметр титульной страницы, но его можно использовать в минимальной степени. Следующие стили создают страницы с немного большими нижними полями, чем верхними, и немного большими полями на внешнем краю страницы, чем на корешке:
@page {
поле слева: 20 мм;
поле справа: 20 мм;
поле-верхнее: 40 мм;
поле внизу: 50 мм;
}
@page :left {
поле слева: 30 мм;
}
@page :right {
поле-справа: 30 мм;
}
Сокрытие ненужного содержимого
Не все содержимое подходит для печатной версии вашего документа. Если на вашей странице есть баннерная навигация, реклама или боковая панель, вы можете запретить отображение этих сведений в версии для печати, например:
.#contents, div.ad { display: none; }
Фиксирующие звенья
Гиперссылки явно неуместны в печатных материалах, поэтому вы, вероятно, захотите удалить все стили, которые отличают их от окружающего текста:
{украшение текста: нет; цвет: наследовать; }
Однако вы все равно можете захотеть, чтобы читатели имели доступ к исходным URL-адресам, и простое решение — автоматически вставлять их после связанного текста:
a[href]:after {
content: "( "attr(href) ")";
размер шрифта: 90%;
цвет: #333;
}
Этот CSS дает следующие результаты:
a[href]:after специально нацелен на позицию после ( :после ) каждый элемент ссылки ( a ), который на самом деле имеет URL-адрес ( [href] ). Объявление content здесь вставляет значение атрибута href в скобках. Обратите внимание, что для управления отображением сгенерированного контента могут применяться другие правила стиля.
Обработка разрывов страниц
Чтобы избежать разрывов страниц, оставляющих изолированное содержимое или неловко прерывающих его посередине, используйте свойства разрыва страницы: page-break-before , разрыв страницы после и разрыв страницы внутри . Например:
таблица { разрыв страницы внутри: избегать; }
Это должно помочь не допустить, чтобы таблицы занимали несколько страниц, при условии, что ни одна из них не выше одной страницы. Аналогично:
h2, h3 { перед разрывом страницы: всегда; }
Это означает, что такие заголовки всегда начинают новую страницу. Это может вызвать проблемы, если вы сразу же после h2 своей страницы поставите h3, поскольку h2 в конечном итоге окажется на странице сам по себе. Чтобы избежать этого, просто отмените разрыв страницы с помощью селектора, который нацелен на этот конкретный экземпляр, например:
h2 + h3 { перед разрывом страницы: избегать; }
Просмотр стилей печати
Во всех случаях ваш браузер и операционная система должны обеспечивать функцию предварительного просмотра перед печатью, часто как часть стандартного диалогового окна печати.
Браузер Chrome упрощает проверку и даже отладку стилей печати с помощью инструментов разработчика, как показано в этом примере, показывающем резюме с таблицей стилей печати. Сначала откройте главное меню и выберите Дополнительные инструменты , а затем Инструменты разработчика опция:
На появившейся новой панели выберите Меню , затем Дополнительные инструменты , затем Рендеринг :
Затем прокрутите вниз до параметра Эмулировать тип мультимедиа CSS . Раскрывающийся список позволяет переключаться между режимами печати и просмотра вашего документа на экране:
.При эмуляции таблицы стилей печати стандартный браузер стилей доступен для просмотра и изменения правил живого стиля. Имейте в виду, что эмуляция вывода на печать на экране по-прежнему не является 100% точной. Браузер ничего не знает о размере бумаги, и 9Правило 0466 @page нельзя эмулировать.
Печать в PDF
Удобной функцией современных операционных систем является возможность печати в файл PDF. По сути, все, что вы можете напечатать, можно вместо этого отправить в файл PDF — неудивительно, поскольку в конце концов файл PDF должен представлять собой печатный документ.
Это делает HTML в сочетании с таблицей стилей для печати отличным средством для создания высококачественного документа, который можно отправить как вложение, а также распечатать.
Печать различных документов
Вы можете использовать таблицу стилей для печати для создания качественных документов, включая все, что угодно, от резюме до рецептов или объявлений о мероприятиях. Веб-страницы обычно выглядят некрасиво и содержат нежелательные детали при печати, но небольшое количество настроек стиля может значительно улучшить результаты печати. Сохранение окончательных результатов в формате PDF — это быстрый способ создания привлекательных профессиональных документов.
Идет в печать – A List Apart
Примечание от редакции: Обсуждаемая ниже таблица стилей для печати использовалась в ALA 2.0, чей редизайн CSS в феврале 2001 года помог открыть эру современной верстки CSS. Некоторые подробности ниже относятся только к этому макету, а не к ALA 3.0. Но принципы, которые Эрик Мейер обсуждает в этой статье, так же верны и широко применимы сегодня, как и тогда, когда эта статья впервые появилась в ALA.
Вы уже видели их раньше: ссылки с надписью «щелкните здесь, чтобы просмотреть версию для печати» или подобные слова. Каждый раз, когда вы переходите по одной из этих ссылок, вы загружаете отдельный документ, в котором представлена точно такая же информация, но с другим макетом и, возможно, с другой разметкой.
Статья продолжается ниже
Это означает, что кто-то (или скрипт) должен был взять исходный документ и преобразовать его в урезанную версию, более подходящую для вывода на печать. Может быть, этим кем-то был даже ты.
На помощь приходит печать таблиц стилей#section2
Одно из замечательных свойств CSS заключается в том, что он позволяет авторам создавать стили для конкретного носителя для отдельного документа. Мы довольно привыкли к стилю для экрана, но думать о других медиа еще не стало привычкой. И, как свидетельствуют все «удобные для печати» ссылки, наше представление о печатном носителе ограничивалось воссозданием документа другим способом.
Зачем беспокоиться, если возможность предложить вашим читателям лучший обзор вашего материала в печатном виде не дальше, чем хорошо структурированный документ и таблица стилей для конкретного носителя?
Вы можете взять любой (X)HTML-документ и просто оформить его для печати, не касаясь разметки. Беспокойство по поводу перекоса версий между веб-версией и печатной версией внезапно ушло в прошлое. Лучше всего то, что это просто сделать. (Дополнительную информацию об основных принципах создания таблиц стилей для конкретных носителей в целом и стилей печати в частности см. в разделе «Печатать по-разному» на сайте meyerweb.com.)
Давайте посмотрим, как в A List Apart появились новые стили печати, которые обошли ошибку браузера и, в конце концов, сделали распечатку намного лучше.
Исправление плавающей ошибки #section3
Как вы можете видеть, посетив запись Bugzilla #104040, браузеры на основе Gecko, такие как Netscape 6.x или Mozilla, имеют проблемы с печатью длинных плавающих элементов. Если плавающий элемент проходит за нижнюю часть печатной страницы, остальная часть плавающего элемента фактически исчезнет, так как она не будет напечатана на следующей странице.
Если у вас есть сайт в стиле A List Apart, и все содержание статьи содержится в одном большом поплавке, то это означает, что читатели увидят только первую страницу статьи.
Исправление, как оказалось, состоит в том, чтобы развернуть содержимое при печати страницы. Проще говоря, все, что вам нужно сделать, это присвоить любому большому плавающему элементу значение
float: none
. Это возвращает плавающий элемент в «нормальный поток» документа, который печатается, как и следовало ожидать, страница за раз до конца документа.Вот что я порекомендовал Зельдману сделать для ALA, и как только он это сделал, проблема с печатью была решена. Браузеры на основе Gecko все еще имеют ошибку (на момент написания этой статьи), но, по крайней мере, ее можно легко обойти.
Вот таблица стилей для печати, которую A List Apart использовал после устранения ошибки с плавающей запятой:
#menu { дисплей: нет; } #обертка, #содержание { ширина: авто; граница: 0; маржа: 0 5%; заполнение: 0; поплавок: нет !важно; }
Хорошее начало. Эта таблица стилей полностью удаляет правое меню из документа, поэтому оно не печатается (отображается: нет;), и сбрасывает поля и отступы содержимого статьи, так что текст будет вытекать с одной стороны каждой страницы для печати. область к другой.
Проблема, как я понял, заключалась в том, что слишком много стилей, предназначенных для экрана, просачивались на печать.
Если мы посмотрим на
head
из недавней статьи ALA, мы обнаружим (среди множества других вещей) следующие строки:У нас есть таблица стилей
print.css
, которая ограничена печатным носителем. с использованием атрибутаносителя
. Таблица стилейnucss2.css
, которая импортируется, чтобы скрыть ее от Navigator 4.x, будет использоваться во всех носителях , поддерживаемых пользовательским агентом. Это экран, печать, проекция, звук — что угодно. Если мы не будем осторожны, мы можем получить фоновые цвета и размеры шрифта в пикселях на нашем печатном выходе.Это трагедия? Нет, но большинство браузеров не печатают фон; и пиксельные шрифты, хотя и хороши для экранных медиа, не так полезны в печатных СМИ.
Итак, давайте что-нибудь сделаем с этими и некоторыми другими проблемами компоновки.
Белые фоны#section5
Многие фоновые цвета применяются к элементам правой боковой панели. Поскольку это исключено для печати, нам не нужно беспокоиться об изменении чего-либо на боковой панели. Это сразу устраняет многочисленные потенциальные головные боли.
Поскольку принтеры не печатают белым цветом, мы хотим установить белый фон страницы. Мы также хотим удалить любые фоновые изображения, которые могли просочиться внутрь.
Если мы просто воспользуемся свойством
background
, мы сможем выполнить обе задачи с одним значением. Чтобы оставить себе немного гибкости, мы установим фонbody
белым, а элементы содержимого и обертки — прозрачным фоном (таким образом позволяя белому цвету страницы просвечивать):тело { фон: белый; } #меню { дисплей: нет; } #обертка, #содержание { ширина: авто; маржа: 0 5%; заполнение: 0; граница: 0; поплавок: нет !важно; черный цвет; фон: прозрачный; }
Устанавливать цвет переднего плана так, чтобы он соответствовал цветам фона, не обязательно, но это всегда хорошая идея. Теперь у нас есть два не плавающих элемента (
#wrapper, #content
) без видимого фона и страница с белым фоном.Вы можете быть обеспокоены тем, что Navigator 4.x делает ужасные вещи со значением
Transparent
, но не унывайте: NN4.x обращает внимание только на таблицы стилей, которые имеют значениеmedia
равноеscreen
. Как и в случае с@import
, стили в нашей таблице стилей для печати навсегда скрыты от слезящихся глаз Navigator 4. Так что не беспокойтесь.Размер шрифта для печати#section6
Таблица стилей для всех носителей определяет размер нашего печатного текста до
11px высотой
, что кажется плохим выбором. Семейство шрифтов (сначала Georgia, а затем шрифты с засечками) прекрасно подходит для печати, где обычно предпочтение отдается шрифтам с засечками. Только размер нуждается в изменении. Таким образом:корпус { фон: белый; размер шрифта: 12pt; }
«Подожди!» вы, наверное, восклицаете. «Еретик! Все знают, что баллы — это зло! Тодд Фарнер так сказал!
Ну да, он это сделал, и он был совершенно прав — для экранных носителей точки — ужасный выбор. В печати баллы имеют такое же значение, как и десятилетия назад. Так как мы - это стиль для печати, установка размера шрифта
body
на 12 пунктов на самом деле хорошая вещь.Конечно, вы можете выбрать любой размер, который вам нравится, но 12 пунктов — очень распространенный размер. А так как все мультимедийные стили Зельдмана определяют размеры элементов в содержании статьи по отношению к корпусу
Существующие стили для оболочки и содержимого
div
s задают для левого и правого полей значение5%
. Это означает, что с обеих сторон статьи будет «пустое место», и каждая пустая область будет составлять 10% ширины области печати страницы. Это потому, что содержаниеdiv
находится внутри обертки, и у каждого по 5% с каждой стороны. Сложите их, и вы получите 10%.Исходные стили для всех медиа задают 15% отступа справа от содержимого
div
. Маржа уже дает нам 10%, так что нам просто нужны дополнительные 5%. Это достаточно просто сделать:div#content { поле слева: 10%; }
Другим вариантом было бы оставить поле в покое и присвоить левому отступу значение
5%
. Поскольку контентdiv
не имеет видимого фона, любой подход должен иметь одинаковый эффект.К сожалению, у некоторых браузеров возникают проблемы с корректной обработкой отступов, поэтому в настоящее время лучше перемещать элементы с отступами, когда это возможно.
Один из сложных вопросов заключался в том, что делать с гиперссылками. Очевидно, что в печати они будут не так полезны, как на экране, но часто важно указать, что в оригинале были ссылки. Итак, вот что я придумал:
a:ссылка, а: посетил { цвет: #520; фон: прозрачный; вес шрифта: полужирный; оформление текста: подчеркивание; }
Это дает ссылкам достаточно темный цвет, чтобы быть близким к черному на выходе в градациях серого, но при этом использовать темно-красный цвет, который будет отображаться на цветной распечатке. Выделение жирным шрифтом и подчеркивание гарантируют, что текст ссылок будет выделяться.
В браузере, полностью совместимом с CSS2, мы можем вставлять URL-адреса ссылок в скобках после каждой из них, что делает их довольно полезными для всех, у кого есть копия распечатки и удобный веб-браузер. Вот правило, которое ограничивает этот эффект «контентом»
div
и, таким образом, избежать вставки URL-адреса в заголовок:#content a:link:after, #content a:посетили:после { содержание: "(" attr(href) ") "; размер шрифта: 90%; }
Попробуйте в браузере на основе Gecko, таком как Mozilla или Netscape 6.x. После каждой ссылки в распечатке вы должны увидеть URL-адрес ссылки в скобках.
В любом браузере, который не понимает правило, не должно быть никаких побочных эффектов — ссылки будут по-прежнему темно-красными, подчеркнутыми и выделенными жирным шрифтом. У них просто не будет URL-адреса после текста ссылки, вот и все.
Обратите внимание, что пробелы до и после скобок на самом деле являются частью приведенного выше правила — пробелы должны присутствовать в правиле, чтобы их можно было вставить в документ.
С этим новым правилом связана одна эстетическая проблема, поскольку оно приводит к тому, что значение атрибута ссылки
href
вставляется в документ дословно.Если мы посмотрим на код ALA-страниц, мы быстро заметим, что существует множество «корневых» URL-адресов, таких как
/issues/144
. Они будут добавлены в документ точно такими, какие они есть, что делает их менее полезными, чем если бы они отображались как абсолютный URL-адрес. 9= — это селектор CSS3. Валидатор CSS W3C может проверять только соответствие CSS1 и CSS2. Неспособный понять селектор CSS3, валидатор W3C сообщит об этом как об ошибке, даже если он полностью действителен в соответствии с рекомендациями кандидатов на селекторы CSS3.Расширение шапки#section9
Делая окончательный обзор стилей печати, я понял, что шапка сайта раздражает меня. Дело было не в том, что оно существовало, а в том, что оно имело «подчеркивание» как часть изображения. Эта линия, конечно же, заканчивалась краем изображения. Мне пришло в голову, что можно немного схитрить и сделать так, чтобы линия тянулась на ширину текста статьи.
Первым шагом было придание содержимому
div
верхней границы, которая, как и подчеркивание на графике, представляла собой сплошную темно-красную линию толщиной в один пиксель. Так как я собирался создать видимую верхнюю границу для содержимого, мне также показалось хорошей идеей вставить отступ между границей содержимого.раздел # содержание { поле слева: 10%; обивка-верх: 1em; верхняя граница: 1px сплошная #930; }
Само по себе это нарисовало бы линию прямо под изображением шапки. Оказывается, указанная графика завернута в
div
сам по себе, поэтому нижнее поле этогоdiv
используется для извлечения остального содержимого в себя.раздел # мачта { нижняя граница: -8px; } div#mast img { вертикальное выравнивание: снизу; }
Эти простые правила приводят к тому, что верхняя граница содержимого
div
совмещается с подчеркиванием в заголовке. Граница на самом деле накладывается на графику, но поскольку цвета совпадают, трудно (если не невозможно) понять, что происходит. Даже если браузер решит поместить графику поверх верхней границы содержимого, графика и рамка все равно будут выровнены и создадут иллюзию.Второе показанное правило, с
vertical-align
, работает с интересным поведением Mozilla, которое видно только тогда, когда документ отображается в «стандартном» режиме, как и все статьи ALA. См. мою статью Netscape DevEdge «Изображения, таблицы и загадочные промежутки» для получения дополнительной информации об этом поведении и различных обходных путях (включая тот, который использовался выше). См. также «Лучше жить с помощью XHTML» в ALA 137.Что касается цвета фона изображения шапки, то на самом деле нет никакого способа удалить его, кроме как сделать эти пиксели прозрачными в самом изображении. Мы могли бы установить соответствующий цвет фона на шапке
div
, но это, вероятно, было бы излишним для такого светлого фона.Это все, что мы сделали для этого редизайна, но это, конечно, не предел возможностей.
Возиться с цветами, чтобы сделать их более удобными для печати, — это одна из возможностей, как и настройка полей столбца, чтобы они основывались на пунктах (или пиках, или даже дюймах) вместо процентов. В печатном мире у вас почти столько же возможностей для дизайна, сколько и на экране.
Одна область, которую мы не прорабатывали так глубоко, как могли бы, — это размер шрифта. Количество классов, например
superfine
, осталось использовать стили для всех носителей на основе размеров пикселей. Изменение их размера для печати так же просто, как то, что мы сделали для элемента body — просто напишите правило, которое обращается к рассматриваемому элементу (элементам), и присваивает новое значениеfont-size
.Например, мы могли написать
.superfine {font-size: 9pt;}
… или любое другое значение, которое показалось нам подходящим.