15 минут на подготовку к печати
Евгений, 18 апреля 2007
Нужно ли уделять внимание тому, как страница выглядит при печати? Проверив несколько сайтов наугад, я убедился, что большинство дизайнеров считают, что нет, но я слишком часто убеждался в обратном, чтобы согласиться с ними.
Особенно критична корректность и аккуратность печатной версии для сайтов компаний предоставляющих, офф-лайн услуги, например банков, туристических и строительных компаний, консервативная часть их клиентов часто вместо посещения сайта просит печатную версию у своей секретарши или знакомого, который лучше них обращается с компьютером.
Как я понял после своего небольшого исследования, большинство разработчиков мало задумываются о том, как можно распечатать содержимое их сайта, в лучшем случае CMS поддерживает функцию «версия для печати» отчасти компенсируя их невнимательность, и создавая совершенно лишние запросы к серверу.
Конечно, не хочется тратить время на функцию, которая будет использоваться небольшим процентом пользователей, но я предлагаю подготовить страницу к печати за 15 минут. Что мы должны получить можете увидеть, включив предварительный просмотр печати в браузере прямо сейчас.
Технология
Сразу откажемся от генерирования специальной версии страницы для печати с помощью CMS, это не логично и годится разве, что для тех, кто не знает что такое CSS.
Для того чтобы указать стили используемые при печати используем правило @media print {
}.
Я предпочитаю помещать стили для печати в конце файла, с основными стилями, чтобы печатная версия файла имела схожее с оригиналом оформление.
При подключении файла стилей должна использоваться директива
<link rel="stylesheet" href="/path/style.css" type="text/css" media="all" />
обратите внимание на media=«all», этот атрибут можно опустить, но нельзя использовать media=«screen».
Убираем лишнее
При печати не нужны многие элементы сайта, такие как навигация, реклама, счетчики, сайдбары со всем их содержимым, формы, их нужно убрать, указав display:none, для примера у меня получались такая строчка:
#sidebar, #main-menu, .counters, .edit-form, .post-meta-single,
.post-buttons, .navigation, #footer p.float-right {
display:none;
}
Чтобы оставшиеся элементы красиво располагались на бумаге один за другим, занимая всю ее ширину, нужно установить float:none и width:auto.
#header, #wrapper, .column-home,
.column-wide, .column-narrow, #footer {
float:none;
width:auto;
}
Если вы используете цвет или изображения в фоне их нужно отключить с помощью свойства background:none;
Типографика
Теперь, когда страница достаточно корректно отображается при печати, добавим несколько штрихов, чтобы она была красивой и удобной.
При чтении текста с бумаги более удобны и привычны готические шрифты, поэтому стоит решить, какой из них вы будете использовать, я остановился на традиционной гарнитуре times.
Размер шрифта и высота строки тоже требуют дополнительной коррекции.
body {
font-family: times;
font-size:12pt;
}
p, ul, ol {
line-height:14pt;
}
Возможно, стоит немного подкорректировать размеры заголовков, но это уже по вашему желанию.
h1{font-size:1.7em;}
h2{font-size:1.4em;}
h3{font-size:1.2em;}
h4{font-size:1.1em;}
h5{font-size:1em;}
h6{font-size:1em;}
Ссылки
Уберем подчеркивание ссылок, которое при печати ни к чему, для этого можно использовать border:none или text-decoration:none в зависимость от того, какое из свойств использовалось, я предпочитаю border, потому что он расположен чуть ниже подчеркивания и благодаря этому не так сильно ухудшает читабельность.
a { border:none; }
Стоит добавить адрес страницы или хотя бы сайт, потому что если колонтитулы при печати будут отключены, его легко забыть, а найти страницу по напечатанной версии будет сложно.
Я сделал это с помощью свойства селектора after и свойства content.
#header h1:after {
content:" www.designformasters.info";
font-size:0.5em;
line-height:2em;
}
Конечно, это не работает в IE, но в нем много всего не работает, остается надежда на колонтитулы.
Можно отображать адрес в скобках после каждой ссылки, но это существенно ухудшает восприятие текста и внешний вид страницы, так что вам решать.
a[href]:after {
content:" (" attr(href) ") "; font-size: 90%;
}
a[href^="/"]:after {
content:" (http://www.designformasters.info" attr(href) ") ";
}
a[href^="#"]:after {
content:""
}
И опять таки это не работает в IE.
Существует замечательный метод подготовки ссылок к печати, работающий во всех браузерах, с помощью JavaScript, они собираются все вместе и вставляются в конце документа, в виде сносок не ухудшая читабельность текста, но это уже за рамками 15 минут.
Основой для этого материала стала статья ALA's New Print Styles

















Ksanytch 18 апреля, 2007 13:02 #
!
В самом деле! Сайт на экране может выглядеть отлично, но при печати часто просто улет: то DIV не вмещается в страницу и строки обрезаются справа, то фреймы наползают друг на друга или же шапка занимает чуть ли не 50% листа, а вся инфа размазана клочками по уйме страниц. Уважаемые разработчики! Внемлите рецептам этой статьи! Помните, что масса людей не имеет Сети, им инфа нужна в печатном виде.
Игорь 18 апреля, 2007 13:21 #
Нежные мои
«При печати не нежны многие элементы сайта…»
Спасибо за статью
Евгений 18 апреля, 2007 15:40 #
Исправлено
Спасибо, за замечание.
Когда уже Word начнет проверять не только правильность написания слова, но и уместность его присутствия.
Катя 18 апреля, 2007 22:53 #
Без JavaScript можно!
По поводу сносок на ссылки в конце: JavaScript не обязателен, а нужен лишь CSS в умелых руках :-). Нашла чудный пример на этом сайте (параграф "Links"). Собственно, зайдя на него и можно глянуть на "предварительный просмотр".
Евгений 18 апреля, 2007 23:27 #
К сожалению вы ошибаетесь.
Посмотрел, пример по вашей ссылке, там используется JavaScript именно из той статьи ALA на которую я дал ссылку с текстом "замечательный метод подготовки ссылок к печати", и там это написано.
А вообще статья на мою похожа, автор тоже взял за основу ALA's New Print Styles
yopopt 30 июня, 2007 17:18 #
"Я сделал это с помощью свойства селектора after и свойства content."
Мне кажется лучше вместо этого добавить в тег(в данном случае h1) другой тег (<span>) и скрывать его при просмотре в браузере. А при печати показывать.
#header h1 span {
display:none;
}
Заголовок www.designformasters.info
Евгений 30 июня, 2007 21:40 #
Это действительно лучше и работает в IE.
Я немного изменил, предложенный вами метод, и добавил еще один блок с такими же параметрами как и главное меню, который при печати отображается вместо него.
Собственно, PrintPreview…
BrokenBrake 3 июля, 2007 1:45 #
Ну все правильно...
Только вот размеры шрифтов для печати лучше все же в пунктах указывать, на мой взгляд. Я делаю так.
Может, потому что начинал в полиграфии? :)
Comicz 31 июля, 2007 10:05 #
Ещё меня недавно разозлил клиент, который настоятельно требовал ссылку "версия для печати", причём css для @media="print" ,бы готов и работал так, как нужно...
Ksanytch 31 июля, 2007 15:21 #
Странно
А что злиться-то? На некоторых сайтах такая есть кнопка и оч.хор. работает! Биг респект таким! Хотя иногда под этой кнопкой скрывается команда "Печать!" без предпреждений - во прикол. А может клиенту просто продемонстрировать превью печати - что ничего не уплывает, макет красивый и он успокоится?
BrokenBrake - насчет пунктов/пикселей у меня самого есть сомнения. Хотя я и для экрана тоже предпочитаю pt. Так в одних толковых книгах рекомендуют pt, Артемий Лебедев ваще заявил, что РХ - дурной тон. А на одном форуме меня заклевали: Лебедев - не авторитет, даешь пихели! И привели скриншоты с разных браузеров с разным разрешением. Странно, я видел другие скрины, доказывающие, что лучше - pt. Есть ли академически обоснованная рекомендация когда что?
BrokenBrake 31 июля, 2007 15:33 #
Ksanytch, я про пункты имел в виду именно только стили для печати. А так, вообще, обычно использую em. Академически обоснованных рекомендаций, наверно, нет.
Есть лишь предостережения. Например наш самый любимый самизнаетекакой браузер не масштабирует шрифты, размеры которых указаны в пикселях.
BrokenBrake 31 июля, 2007 15:34 #
Наврал нечаянно :) сорри. Сам уже забыл, что чаще всего использую.
В общем, обычно пользуюсь ключевыми словами. Medium, small, large, x-small и так далее. На мой взгляд, оптимальный вариант.
Ksanytch 31 июля, 2007 17:39 #
Рецептик
Да, оф коз, для печати - pt, для экрана - смолл и пр. А нащот браузера - есть в мсие, канешна, плюсики и всё такое. Но я уж давно пересел на Оперу: в ней Ctrl+колесо масштабируют весь экран с графикой, шрифтами и проч. - ну ооочень удобно. А вот мсие с лисой - не очень.
Вот интересный рецепт приведен в книжке "Пуленепробиваемый дизайн" (must have). Автор берет абсолютный размер small и делает обманку IE:
body {
font-size: small;
}
* html>body {
font-size: x-small; /* для IE5 */
f\ont-size: small; /* для остальных IE */
}
* html - используется фефект IE - указывается размер только для IE.
f\ont-size - IE5 проигнорирует бэкслэш и ему подсовывается x-small для IE5 и small для остальных IE.
artoodetoo 20 августа, 2007 5:29 #
Спасибо за статью!
Ссылка таки должна быть, но это из другой оперы. Например, если статья или комментарии к статье в экранном варианте занимают несколько страниц, то в "версии для печати" лучше их иметь в едином документе.
Лучшее для веб-мастеров и блогеров за октябрь 2007 » Журнал для веб-мастеров и блогеров от школы создания сайтов 1 ноября, 2007 8:59 #
[...] 15 минут на подготовку к печати Нужно ли уделять внимание тому, как страница выглядит при печати? Проверив несколько сайтов наугад, я убедился, что большинство дизайнеров считают, что нет, но я слишком часто убеждался в обратном, чтобы согласиться с ними. [...]