Книга css3 3е издание Серия Бестселлеры OReilly
Скачать 20.28 Mb.
|
веб-страницы добавить следующий код (самое под- ходящее место для этого — непосредственно перед тегом ): Метатеги HTML предоставляют дополнительную информацию о содержимом страницы и могут дать браузерам дополнительные инструкции о способах отобра- жения страницы на дисплее. В данном случае viewport обозначает экран браузера, а для атрибута content устанавливается ширина экрана браузера, равная ширине экрана смартфона. То есть браузерам мобильных устройств, склонным к уменьше- нию масштаба, предписывается этого не делать, настроив ширину экрана на теку- щую ширину дисплея смартфона. ПРИМЕЧАНИЕ Кроме использования метатега viewport, есть еще один способ заставить смартфон не предприни- мать попыток сжатия вашей страницы, а вывести вместо этого ее в 100%-ном размере. Разработ- чики из CSS Working Group добавили к CSS правило @viewport, которое позволяет делать все то же самое, что и с метатегом viewport, но в вашей таблице стилей. Благодаря этому можно отка- заться от добавления тега к каждому HTML-файлу сайта и просто добавить одно правило @viewport к своей таблице стилей: @viewport { width: device-width; } Это правило нужно добавить в самом начале таблицы стилей до объявления самих стилей. К сожа- лению, в настоящее время правило @viewport еще не работает на всех браузерах и требует для тех браузеров, которые его не понимают, добавлять префикс производителя. Дополнительные сведения о правиле @viewport можно получить на сайтах http://dev.opera.com/articles/view/an-introduction-to- meta-viewport-and-viewport/ и http://dev.w3.org/csswg/css-device-adapt/. Медиазапросы В CSS3 введено такое понятие, как медиазапросы. Они позволяют назначать стили страницам на основе ширины и высоты окна целевого браузера. Используя данный метод, можно создавать пользовательские стили для браузеров мобильных телефо- нов, планшетных и настольных компьютеров и тем самым настраивать представле- ние сайта таким образом, чтобы он выглядел наилучшим образом на каждом типе устройства. Смысл адаптивного дизайна состоит в том, чтобы дать посетителям вашего сайта наиболее читаемое и привлекательное представление. Обычно это означает настрой- ку дизайна под наилучший вид на окнах браузеров различной ширины. Многие 468 Часть 3. Макет страницы разработчики ориентируются на три целевых экрана, относящихся к трем наиболее распространенным устройствам просмотра веб-содержимого: смартфонам, планшет- ным и настольным компьютерам. При условии существования широкого разнообра- зия размеров экранов этих устройств (у вас могут быть небольшие телефоны, боль- шие телефоны, 7-дюймовые планшетные компьютеры, 10-дюймовые планшетные компьютеры и т. д.) единой ширины для всех этих устройств не существует. Нужно просто иметь в виду, что целью является хороший внешний вид страницы при раз- личной ширине экрана. Можно просто протестировать различные дизайнерские решения при окнах различной ширины, чтобы увидеть, когда дизайн в четыре ко- лонки должен превращаться в дизайн в две или в одну колонку. Стратегии использования медиазапросов Хотя для принятия решения о внесении изменений в дизайн, позволяющего придать ему наиболее удачный внешний вид на различных устройствах, рекомендуется ис- пользовать метод проб и ошибок, существует несколько общих стратегий медиаза- просов. Настройка количества колонок (столбцов). Несколько расположенных в ряд колонок неплохо смотрятся на больших мониторах (и даже на планшетных компьютерах в альбомном режиме), но не подходят для телефонов. Кроме того, четырех колонок, наверное, будет многовато для большинства планшетных ком- пьютеров в книжном режиме экрана, поэтому сведение страницы к двум или трем колонкам, по всей видимости, вполне подходит для медиазапросов, наце- ленных на планшетные компьютеры. Исключение плавающих элементов в сти- лях медиазапросов, предназначенных для планшетных компьютеров, позволя- ет ставить контейнеры с содержимым страницы друг на друга. Эта технология будет рассмотрена в обучающем уроке этой главы. Гибкие параметры ширины. Дизайн с фиксированными параметрами ширины можно использовать для браузеров настольных компьютеров. Именно так годами и поступали дизайнеры, но для более узких экранов планшетных компьютеров и телефонов элементы с фиксированным дизайном не поместятся в окно. Страни- ца шириной 960 пикселов будет слишком большой для имеющихся у телефонов 320 или 480 пикселов. Для телефонов и планшетных компьютеров более удачным подходом будет установка параметров ширины div -контейнеров с содержимым на Auto или на 100% . Эти установки превратят дизайн вашей страницы из фиксиро- ванного в свободный или гибкий. Иными словами, независимо от ширины экрана телефона, div -контейнеры поместятся на нем на все 100 %. Если человек держит iPhone в книжном режиме (при ширине экрана 320 пикселов), а затем быстро поворачивает телефон горизонтально (изменяя ширину экрана до значения 480 пик- селов), div -контейнеры, настроенные на Auto или на 100% просто изменят свой раз- мер, чтобы поместиться в новом пространстве. Сжатие пустых пространств. Обширные пустоты между заголовками, графи- кой и другими элементами страницы дают свободное пространство для дизай- нерских решений на 23-дюймовом мониторе, но приводят к разбросанности и не- рационально использованному пространству на небольших телефонных экранах, заставляя посетителей чаще прибегать к прокрутке. Сужение полей и отступов Глава 14. Адаптивный веб-дизайн 469 позволяет поместить на таких небольших экранах больше полезной информа- ции. Настройка размеров шрифтов. Контраст между большими жирными заголов- ками и набранным мелким шрифтом основным текстом неплохо выглядит на мониторах настольных компьютеров, но на портативных устройствах излишне крупные заголовки труднее читаются и совершенно необоснованно занимают полезное пространство. А вот некоторое укрупнение на телефонах шрифта ос- новного текста зачастую облегчает его чтение. Иначе говоря, создавая стили медиазапросов, обращайте внимание на размеры шрифтов. Изменение навигационных меню. У вас может быть красиво оформленная го- ризонтальная панель навигации, которая занимает всю верхнюю часть веб-стра- ницы и состоит из десятка кнопок, направляющих посетителей на просмотр разных разделов вашего сайта. К сожалению, по мере сужения окна браузера эти кнопки могут не поместиться на экран. Они разобьются на нем на две, три и более строки. Пример такого явления будет показан в обучающем уроке дан- ной главы. Возможно, в том, что навигационная панель займет не одну, а не- сколько строк экрана, не будет ничего страшного, но ведь эта панель может занять в верхней части страницы слишком много места, заставляя пользовате- лей задействовать прокрутку, чтобы добраться до первых строк реального ин- формационного наполнения. К сожалению, в CSS не предлагается простых и понятных решений этой про- блемы. На многих сайтах для динамического превращения навигационного меню в раскрывающееся HTML-меню используется JavaScript. В таком случае это меню занимает весьма небольшое пространство экрана (чтобы этому на- учиться, обратитесь по адресу http://css-tricks.com/convert-menu-to-dropdown/ ). Но есть и другие решения. Обзор различных подходов к преодолению этой про- блемы, применяемых на некоторых сайтах, дан на страницах http://bradfrostweb. com/blog/web/responsive-nav-patterns/ и http://bradfrostweb.com/blog/web/complex- navigation-patterns-for-responsive-design/ Скрытие содержимого на портативных устройствах. Многие разработчики скрывают содержимое в мобильных версиях сайтов. На мониторе настольного компьютера просмотр нескольких колонок и сотен строк текста дается довольно легко, а вот слишком много информации на телефоне может показаться совершен- но излишним. CSS можно использовать для того, чтобы просто скрыть содержи- мое, которое, на ваш взгляд, не нужно показывать пользователям мобильных устройств, для чего требуется установить для CSS-свойства display значение none Но все же нужно иметь в виду, что, скрывая содержимое, вы отстраняете по- сетителя от той информации, которая предоставляется на вашем сайте. Для тех, кто ранее посещал ваш сайт, используя настольный компьютер, а теперь посе- щает его же с помощью телефона, будет крайне неприятно увидеть, что совсем недавно просматриваемая ими важная информация теперь куда-то исчезла. Кроме того, даже если вы скроете содержимое с помощью CSS, сам код HTML никуда не денется, заставляя мобильный телефон впустую тратить время и тра- фик на загрузку неиспользуемого HTML. 470 Часть 3. Макет страницы Использование фонового изображения. Если поместить на экран 960-пиксель- ный баннер, то ни один телефон не покажет его без сжатия. Можно, конечно, предоставить достаточно небольшое изображение, способное поместиться на экране телефона, или же воспользоваться вместо него фоновыми изображени- ями CSS. Можно, например, создать div -контейнер и добавить к нему следу- ющий класс: . Затем в таблице стилей для браузера настоль- ного компьютера установить ширину и высоту div -контейнера, соответствующую размеру большого логотипа, используя свойство background-image для вставки изображения в фон. Например: .logo { width: 960px; height: 120px; background-image: url(images/large_logo.png) } Затем можно поместить в эту таблицу стилей еще один стиль, используемый для мобильных телефонов, который изменяет размеры div -контейнера и ис- пользует другое фоновое изображение: .logo { width: 320px; height: 60px; background-image: url(images/small_logo.png) } В разделе «Изменчивые изображения» данной главы вы научитесь масштаби- ровать изображения, вставляемые в HTML с помощью тега , чтобы они помещались в окна браузеров различной ширины. ПРИМЕЧАНИЕ Обзор различных стратегий, которыми можно воспользоваться для изменения раскладки страницы для различных устройств, можно найти по адресу www.lukew.com/ff/entry.asp?1514. Создание контрольных точек Медиазапросы позволяют отправлять браузерам различные стили на основе ши- рины экранов этих браузеров. Например, браузеру можно сказать следующее: «Если твой экран шире 480 пикселов, применяй эти стили» или «Если твой экран шире 480 пикселов, но уже 769 пикселов, применяй эти стили». Различные значе- ния ширины, указываемые вами, — 480, 769 и т. д. — в адаптивном дизайне часто называют контрольными точками (breakpoints). А с каких вообще значений нужно начинать разбивать дизайн на контрольные точки? Проще всего это определить, если взять готовый дизайн для настольного ком- пьютера и открыть страницу в веб-браузере. Захватите щелчком кнопки мыши точку регулирования размера окна и медленно уменьшайте ширину окна. В опре- деленный момент страница приобретет совершенно неприглядный вид. Например, станет тесно ее четырем колонкам. Точка, в которой дизайн теряет приемлемый внешний вид, становится хорошим кандидатом на контрольную точку, то есть этот размер вполне подходит для определения нового медиазапроса и для загрузки но- вых стилей, чтобы удалить одну или две колонки. Глава 14. Адаптивный веб-дизайн 471 Нередко создаются три набора медиазапросов для трех различных контрольных точек — один для смартфонов, другой для планшетных компьютеров, а третий для настольных мониторов. Конкретные значения контрольных точек зависят от кон- кретного дизайна (а также от конкретного устройства), но чаще всего отправной точкой служит экран, имеющий ширину меньше 480 пикселов, который получает один набор стилей, экран шириной между 481 и 768 пикселами получает второй набор стилей, а все, что по ширине больше 768 пикселов, получает дизайн, предна- значенный для настольных компьютеров. Но все это в конечном счете остается на ваше усмотрение. Некоторые дизайнеры допускают расширение зоны планшетных компьютеров до 1024 пикселов, а стили для настольных компьютеров начинают отправлять тем браузерам, чья ширина окна превышает 1024 пиксела. Некоторые дизайнеры даже доходят до определения четырех или пяти кон- трольных точек, чтобы их творения хорошо смотрелись на более широком диапа- зоне экранов. Подробности определения порядка создания этих контрольных точек с использованием медиазапросов будут рассмотрены в подразделе «Создание ме- диазапросов» данного раздела. Для чего сначала разрабатывать дизайн: для настольных или для мобильных систем? Следует рассмотреть еще один вопрос: с расчетом на какое устройство нужно при- ступать к разработке дизайна? Вам не нужно создавать три отдельных набора сти- лей по одному для каждого из устройств, на которые вы нацелены. Вы можете и должны сначала создать исходный дизайн, то есть дизайн, работающий без ме- диазапросов. Затем можно создать стили медиазапросов для замены исходных стилей и переформатирования страницы под конкретную ширину экрана. Для это- го существуют два основных подхода. Предпочтение настольным системам. Дизайн сайта можно разрабатывать с прицелом на настольные системы. Введите все требуемые колонки. Отра- ботайте дизайн до совершенства, чтобы он хорошо выглядел на большом мо- ниторе. Теперь это будет ваш исходный дизайн. Все стили можно убрать во внешнюю таблицу стилей и привязать эту таблицу к страницам вашего сайта обычным образом. Затем добавьте медиазапросы для планшетных и телефонных устройств. Стили этих медиазапросов будут подстраивать дизайн для настольных систем под но- вые условия — удалять колонки, уменьшать шрифт заголовков и т. д. Преиму- щество такого подхода в том, что браузеры, не понимающие медиазапросов, получат основные стили для настольных систем. Большинство телефонов по- нимают медиазапросы, но устаревающие браузеры настольных систем, напри- мер Internet Explorer 8 и более ранние версии, их не понимают. Следовательно, подход, при котором предпочтение отдается настольным системам, означает, что Internet Explorer 8 получит нужные ему стили для создания полноценной презентации на настольных системах. Предпочтение мобильным системам. Можно сделать все наоборот и сначала разработать дизайн для мобильных систем. В таком случае в обычную внешнюю таблицу стилей помещаются основные стили, предназначенные для небольшого 472 Часть 3. Макет страницы экрана, а потом в медиазапросах дизайн дорабатывается для планшетных и на- стольных устройств путем добавления колонок и других корректировок для больших экранов. Какой бы метод вы ни выбрали, нужно использовать обычную внешнюю таблицу стилей, привязанную к веб-странице обычным образом. В эту таблицу стилей вклю- чаются все стили, являющиеся общими применительно к различным устройствам. Например, для всех версий сайта требуются одинаковая цветовая палитра и одинако- вые шрифты. Можно также использовать одинаковые стили для ссылок, изображений и других HTML-элементов. Иными словами, вам не нужно создавать для каждого устройства три абсолютно отдельных набора стилей, начните с одного набора, приме- няемого ко всем браузерам как телефонов, так и планшетных и настольных систем, а затем уточните дизайн для устройств, на которые нацелены медиазапросы. Создание медиазапросов Запрос представляет собой вопрос, заданный веб-браузеру: «Равна ли ширина эк- рана 480 пикселам?» Если ответ положительный, браузер запускает таблицу сти- лей именно для устройства с данной шириной экрана (предоставляемая вами таб- лица стилей, рассмотренная ранее). Код, выполняющий эту задачу, очень похож на код для любой внешней таблицы стилей: К этой стандартной ссылке на таблицу стилей добавился только еще один атрибут media , устанавливающий условия, при которых браузер использует указанную табли- цу. В показанном выше примере браузер загружает внешнюю таблицу стилей small. css , когда кто-нибудь просматривает ваш сайт с помощью браузера, ширина окна ко- торого составляет 480 пикселов. Скобки вокруг запроса — (width: 480px) — являются обязательным элементом. Если их не поставить, браузер проигнорирует запрос. ПРИМЕЧАНИЕ Медиазапросы понятны большинству браузеров мобильных и настольных устройств, но непонятны Internet Explorer 8 и более ранним версиям. Устаревшие версии Internet Explorer можно заставить понимать ваши медиазапросы, если добавить к тегу |