This document discusses creating adaptive layouts using CSS3 media queries. It defines the differences between adaptive and responsive design, with adaptive using predefined layouts for different screen sizes and responsive providing an optimal experience across devices. Key concepts for adaptive design are progressive enhancement and mobile-first. The document outlines main principles like flexible grid-based layouts, flexible media, and using media queries to apply CSS styles based on features like width, height, and orientation. It provides examples of media query syntax and supported media features.
5. MAIN CONCEPTS OF
ADAPTIVE DESIGN
progressive enhancement
mobile first
6. ADAPTIVE WEB DESIGN
“Adaptive Web Design (AWD) uses predefined layouts
that have been carefully constructed for a variety of
screen sizes.”
7. RESPONSIVE WEB DESIGN
“Responsive web design (RWD) is a web design
approach aimed at crafting sites to provide an optimal
viewing experience across a wide range of devices.”
14. MEDIA QUERIES
“Media Queries is a CSS3 module allowing content
rendering to adapt to a specific range of output
devices without having to change the content itself.”
15. DECLARE MEDIA QUERY
As in media types, there are three ways to invoke media-query-dependent styles:
First of all, as stylesheets in the link element of HTML:
<link rel="stylesheet" type="text/css" media="all and (color)" href="/style.css">
In CSS stylesheets using @import rules:
@import url("/style.css") all and (color);
And finally, using @media rules:
@media all and (color) { /* one or more css rule here… */ }
16. SYNTAX
screen
projector
color
width/height
@media type and (expression){ ... }
printer
tv
css code
integration
css rule orientation
aspect ratio
resolution
17. MEET THE MEDIA TYPES: ALL
Description: All devices listen to this
18. MEDIA TYPE: SCREEN
Description: Used primary for color computer screens and smartphones.
19. MEDIA TYPE: PRINT
Description: Used for paged material and for documents viewed on screen in print
preview mode.
20. MEDIA TYPE: TV
Description: Used for television-type devices (low resolution, color, limited-scrollability
screens, sound available)
22. MEET THE FEATURES
The following table contains the media features listed in the latest W3C recommendation
for media queries.
Feature Value Min/Max Description
width length yes Display width
height length yes Display height
device-width length yes Device width
device-height length yes Device height
orientation portrait or landscape no Device orientation
aspect-ratio ratio (w/h) yes Ratio of width to height
device-aspect-ratio ratio (w/h) yes Ratio of device-width to device-height
color integer yes Number of bits per color component
color-index integer yes
Number of entries in the output device’s
color lookup table
monochrome integer yes
Number of bits per pixel in the monochrome
frame buffer
resolution resolution yes
Density of pixels of output device, (integer
followed by dpi or dpcm)
23. MEDIA FEATURE: WIDTH/HEIGHT
Value: <length>
Media: all, but not speech (visual, tactile)
Accepts min/max prefixes: yes
/* width */
@media screen and (max-width: 600px) { ... }
@media screen and (min-width:200px) and (max-width:400px) { ... }
/* height */
@media screen and (max-height:768px) { ... }
@media (min-height:500px) and (max-height:580px) { ... }
24. MEDIA FEATURE: ORIENTATION
Value: <length>
Media: handheld, print, projection, screen, tty, tv
@media screen and (orientation: portrait) { … }
@media screen and (orientation: landscape) { … }
25. MEDIA FEATURE: RESOLUTION
Value: <resolution>
Media: handheld, print, projection, screen, tv
Accepts min/max prefixes: yes
/* apply to devices with at least 300 dots per inch of resolution: */
@media print and (min-resolution: 300dpi) { ... }
/* to replace the old (min-device-pixel-ratio: 2) syntax: */
@media screen and (min-resolution: 2dppx) { ... }
26. LOGICAL OPERATORS
Using logical operators in media queries such as:
AND
NOT
ONLY
@media all and (color) { ... }
@media not screen and (color) { ... }
@media only screen and (orientation: portrait) { ... }
OR (COMMA-SEPARATED LISTS)
@media all and (orientation: landscape),
all and (min-width: 480px) { ... }
28. SUPPORT OLD BROWSERS
css3-mediaqueries.js
make CSS3 Media Queries work in all browsers (JavaScript library) starts from:
IE 5+
Firefox 1+
Safari 2
31. CSS3 MEDIA QUERIES ARE
HERE TODAY!
A SINGLE WEBSITE
A SINGLE URL
EASY SEO AND MARKETING
LOW COST
32. RESOURCES
Aaron Gustafson, Adaptive Web Design: Crafting Rich Experiences with Progressive
Enhancement. — Easy Readers, 2011.
Ben Frain, Responsive Web Design with HTML5 and CSS3. — Packt Publishing Ltd,
2012.
Ethan Marcotte, Responsive Web Design. — A Book Apart, 2011.
Luke Wroblewski, Mobile First. — A Book Apart, 2011.
Hinweis der Redaktion
CSS3 Media Queries And Creating Adaptive Layouts
В наши дни интернет проникает во все большее количество устройств с самыми мыслимыми и немыслимыми размерами экранов. Все чаще и чаще сайты просматриваются при помощи устройств с тач-управлением, небольшими экранами. И вот, многие интернет-ресурсы оказались резко непригодными к использованию владельцами таких девайсов.
В свете подобных тенденций неразумно игнорировать сегмент интернет-пользователей, которые просматривают веб-сайты с помощью различных устройств. И не отстающие от времени веб-дизайнеры и их заказчики, конечно же, осознали острую необходимость в том, чтобы делать сайты максимально удобными для просмотра в новом формате.
Поэтому в наше время одной из важнейших задач веб-разработчика — это обеспечить пользователям максимально удобное взаимодействие с веб-сайтами и корректное отображение веб-страницы на любом разрешении любого экрана, сохранив при этом ее восприятие.
При этом не вынуждая посетителя пользоваться горизонтальной прокруткой и масштабированием.
На ряду с этим создать версии сайта для всех устройств невозможно ввиду безграничного количества разных размеров экранов и их разрешений, и мы не можем знать, какие еще разрешения появятся на рынке завтра.
Таким образом, были разработаны подходы учитывающие появившиеся задачи по созданию сайтов: Adaptive web design и Responsive web design.
Давайте же их рассмотрим.
Путаница в определениях
В последнее время термин адаптивный дизайн сайтов употребляется очень часто в неправильном значении.
Многие люди подразумевают под адаптивным именно отзывчивый дизайн, и для некоторых эти понятия чуть ли не идентичны, но это не так.
И как мы видим из изображения адаптивный веб дизайн это достаточно обширное понятие,
Адаптивный веб дизайн — это подход к проектированию и созданию веб-сайтов (который базируется на наборе макетов соответствующему девайсу/экрану).
Отзывчивый веб дизайн является техникой адаптации макета под различные устройства, и является составной частью адаптивного веб дизайна.
Отзывчивый веб-дизайн был описан впервые в статье на A List Apart. Название подхода взято по примеру отзывчивой архитектуры.
Отзывчивая архитектура здания предполагает адаптацию самого строения (формы, цвета) в зависимости от состояния окружающей среды.
В 2011 Этан Маркотте опубликовал одноименную книгу, в которой он собрал в единую технику некоторые давно известные приемы адаптации контента.
Он не изобрел ничего нового на тот момент, а просто систематизировал знания и предложил решения проблем для старых устройств и браузеров.
Но это и было действительно то, что нужно, во время множества ОС, устройств и браузеров.
Прежде чем ознакомиться с такой стратегией в разработке, как адаптивный веб-дизайн, стоит немножечко поговорить о концепциях и техниках (Основные принципы в адаптивном дизайне), на которых базируется данный подход. А именно, «mobile first" и "progressive enhancement".
Основная идея которых состоит в том, что сначала создается макет простейшая разметка, Содержимое при необходимости сокращают, удаляя второстепенные информационные блоки и оставляя самое важное.
Также этот макет должен себя отлично вести и на мобильных устройствах, и только в последствии наворачивается функционал в зависимости от поддержки их устройствами.
Применение постепенного улучшения (англ. progressive enhancement).
Идея progressive enhancement состоит в том, что сначала создается простейшая разметка документа, которая корректно отображается даже в самых простых браузерах.
Затем добавляются стили, интерактивность и прочее, используя каскадные таблицы стилей, JavaScript, SVG, Flash и все остальное, что можно вставить в страницу.
Проектирование для мобильных устройств с самых ранних этапов (англ. mobile first).
Mobile first - это подход, при котором проектирование сервиса начинается с адаптивной версии веб-сайта для мобильных устройств, а не с версии для больших экранов, как это делается повсеместно.
На этом этапе дизайнеры стремятся правильно передать смысл и основные идеи с использованием небольшого экрана и всего одной колонки. Содержимое при необходимости сокращают, удаляя второстепенные информационные блоки и оставляя самое важное.
Адаптивный веб-дизайн (Adaptive web design или AWD) – берет лучшее из этих идей «mobile first» и progressive enhancement (прогрессивного улучшения) и дополняет их.
В простом изложении, данная стратегия предполагает использование чистого HTML как базиса и дальнейших улучшений, и функций за счет использования слоев CSS и JavaScript.
Если для какого-то определенного браузера или устройства доступна какая-то новая функция, то ее можно использовать только после проверки на ее доступность, сохраняя обратную совместимость с не поддерживающими устройствами (например, тач-события).
В случае адаптивного дизайна элементы сайта могут скрываться, заменяться другими; могут меняться поведение и функции отдельно взятых элементов веб-сайта.
В адаптивном дизайне повсеместно используется JavaScript для управления поведением и функциями объектов на сайте.
Он требует работы с объектной моделью элементов на странице, подразумевает смену их иерархии/вложенности на разных устройствах.
Не является обязательным обеспечение одинакового вида сайта и его функционала в разных браузерах.
Возможно использование новых технологий, не поддерживаемых старыми версиями программ — потому что дизайн, как было сказано выше, адаптируется под определенные типы устройств.
В итоге получаем, что адаптивный веб-дизайн – это отзывчивый веб-дизайн плюс прогрессивные улучшения.
Формула построения адаптивного дизайна
[% + media-queries + %-media + JavaScript + magic]
Adaptive Web Design (AWD) uses predefined layouts that have been carefully constructed for a variety of screen sizes.
A particular layout is activated when the screen size of the device viewing the website is detected and matched with a style sheet.
Отзывчивый дизайн (Responsive web design или RWD)— это подход к созданию дизайна, при котором сайт разрабатывается с расчетом на то, чтобы обеспечить наиболее простое его использование: удобный просмотр сайта с минимумом ресайзов и лишних прокруток — на самом широком спектре устройств.
Отзывчивый дизайн создается с использованием адаптивной разметки (не путать с адаптивным дизайном).
При этом используются исключительно HTML и CSS — без подключения JavaScript для определения «отзвычивости» элементов дизайна.
Отзывчивая верстка определяет, как будут выглядеть элементы сайта на разных устройствах, однако эти элементы не скрываются/не заменяются другими, и их поведение, равно как и выполняемые ими функции, не меняется.
Отзывчивый веб-дизайн = «резиновый» макет, в то время как адаптивный веб-дизайн = «резиновый» макет + прогрессивное улучшение.
Формула построения отзывчивого дизайна
[% + media-queries + %-media]
“Responsive web design (RWD) is a web design approach aimed at crafting sites to provide an optimal viewing experience – easy reading and navigation with a minimum of resizing, panning, and scrolling – across a wide range of devices (from mobile phones to desktop computer monitors), based on screen size, platform and orientation.”
Особенности подходов
Несколько важных аспектов, в плане которых решения выполненные по методологии адаптивного и отзывчивого дизайна:
Скорость работы сайта.
Сайт, созданный по принципам адаптивного дизайна, может загружаться в несколько раз быстрее, так как пользователю будет необходимо загружать с сервера только те части дизайна, которые необходимы для работы сайта на его устройстве.
В случае с отзывчивым дизайном пользователь будет вынужден ждать, пока загрузятся все стили и изображения, не зависимо от используемого посетителем девайса.
Что является достаточно весомым минусом такого подхода.
Сложность разработки.
Создание сайта с адаптивным дизайном требует от разработчика более высокого профессионального уровня.
В частности, основательного опыта работы с JavaScript.
SEO-аспект. По слухам, Google намного более лояльно относится к отзывчивым сайтам, нежели к адаптивным.
На практике
На практике, отзывчивый дизайн, встречается достаточно часто, в отличие от адаптивного. Что и очевидно: ведь первый легче в реализации и освоении.
Большинство шаблонов, которые продаются на маркетплейсах, являются отзывчивыми, а не адаптивными.
Потому как этот подход не требует много, достаточно лишь создать адаптивный макет.
Адаптивный же дизайн чаще используется в серьезных и многофункциональных продуктах.
Самые очевидные примеры: в мобильная версия сети Вконтакте, почты от Google.
Какой из них наиболее оптимально подойдет именно вашей компании- решать конечно же только вам. Но помните, что прежде всего необходимо делать сайты полезными, в независимости от размеров экрана. И единого универсального решения создания сайта, на сегодняшний день не существует, и каждый проект необходимо рассматривать в индивидуальном порядке. Но пройдет еще совсем немного времени и мобильные веб-сайты станут неотличимы от приложений. В них будут применяться респонсив-верстка и адаптивные функции.
???
В частности, они выделяют следующие проблемы отзывчивого дизайна:
с точки зрения дизайна возникают проблемы с оптимизацией расположения контента: порядок информационных блоков, виджетов, медиа, да и дизайна в целом
зачастую стремление минимизации ведет к потере изюминки сайта, отличавшей его от множества других
проблемы у верстки возникают из-за роста кода, что для слабых мобильных устройств просто губительно, да и по сравнению с мобильной версией, загрузка страницы будет намного медленнее
растут затраты ресурсов и трафика при уменьшении браузером изображений
Media Queries еще не так хорошо работает при отображении различных вариантов изображения.
Теперь давайте рассмотрим основную концепцию отзывчивого веб-дизайна, которая предполагает, что макет сайта должен реагировать на условия, в которых просматриваются сайты, это и разрешение экрана, и ориентации, и платформа.
Для достижения этого эффекта используются основные три техническое компонента в отзывчивом дизайне:
1. Применение гибкого макета на основе сетки (адаптивная разметка) (англ. fluid grid, flexible, grid-based layout) – расположение всех элементов в рамках модульной сетки (макета, в котором значение размера ширины родительского элемента(ов) задаётся в процентах по отношению к разрешению монитора).
2. Использование гибких изображений (англ. flexible images and media).
Все элементы верстки и медиа-файлы (в т.ч. изображения) являются «резиновыми» (flexible) — их размеры зависят от размера экрана.
Все изображения должны масштабироваться, исходя из предельно допустимого значения ширины. Оптимальным является их отображение в натуральную величину.
При изменении пользователем окна браузера до размера менее самого изображения, оно автоматически уменьшается, чтобы вписываться по ширине в окно браузера наилучшим образом.
3. Работа с медиа-запросами (англ. media queries, a module from the CSS3 specification) – модулем CSS3, позволяющим задавать разные стили (или даже таблицы стилей) в зависимости от разрешения экрана, его размеров и прочих характеристик.
Правила CSS3, которые назначаются как атрибуты при вызове других правил из таблицы стилей, основанных на параметрах устройства вывода, таких как тип, ширина и высота окна браузера, разрешение, ориентация в пространстве (модулем CSS3, позволяющим задавать разные стили (или даже таблицы стилей) в зависимости от разрешения экрана, его размеров и прочих характеристик).
На основе этого дизайн сайта будет настраиваться автоматически, устраняя необходимость в дополнительных усилиях дизайна всякий раз, когда новое устройство будет появляться на рынке.
Как уже упоминалось отзывчивый дизайн создается с использованием адаптивной разметки (только не нужно путать с адаптивным дизайном).
Адаптивная разметка (adaptive layout) заключается в том, что на сайте создается один html-код и несколько вариантов стилей элементов дизайна и расположения элементов на модульной сетке.
Модульная сетка – это набор направляющих вдоль которых располагаются различные элементы.
Так меняя только CSS можно легко реализовывать отличную совместимость с разными экранами устройств (Эти варианты сменяют друг друга при изменении размеров экрана.)
То есть (Смысл такого макета в том, что) сайт динамически (в режиме реального времени) подстраивается под размер вашего устройства, и если размер дисплея вдруг расширится / сузится (как при ресайзе браузера или смене ориентации планшета), то и сайт на это отреагирует незамедлительно, без перезагрузок и задержек.
Сделать это просто: используя технологию CSS Media Queries для определения разрешения экрана, которые мы рассмотрим более детально на следующих слайдах.
Для создания такого макета необходимо использовать только относительные единицы измерения:
em для размера шрифтов и % для размеров элементов. (В редком использовании px тоже нет ничего плохого, но лучше свести их использование к минимуму.)
Чтобы пересчитать все в проценты, вот формула на все случаи жизни:
target ÷ context = result == (target / context) x 100 = result % -> (http://resources.sameerast.com/responsive-web-design-formula-easy-calculator.html)
размер нужного элемента(шрифта) в px разделить на размер родительского элемента(шрифта) в px = искомый результат в % (или em).
Относительный кегль для типографии и отступы тоже можно рассчитать по этой же формуле.
(Виды адаптивных макетов, существующие в настоящее время.
http://te-st.ru/2013/07/11/adaptive-web-design/
Фреймверки - есть множество CSS-фреймворков, но самые удобные, функциональные и часто используемые такие:
Responsive Grid System — простой и удобный CSS-фреймворк с 12, 16, 24 колонками.
Responsive HTML5 Aeon Framework — понятный 12-колоночный фреймворк со всеми последними «фичами» css3 и html5.
Foundation 3 — функциональный, удобный CSS-фреймворк из 12 колонок, готовых прототипов, последними веб-стандартами.
Bootstrap — знаменитый многофункциональный HTML/CSS-фреймворк, разработанный для Twitter.
Gumby - новый респонсив 960Grid CSS Framework.)
CREATING A FLEXIBLE GRID BASED LAYOUT
FLEXIBLE MARGINS AND PADDING
FLEXIBLE TYPESETTING
Давайте посмотрим как эта формула работает на примере двух колоночного макета.
Гибкие изображения
Для отзывчивого веб-дизайна одним из главных моментов является наличие гибких изображений на страницах, которые меняют свои размеры в зависимости от просматриваемого устройства.
Пропорциональное изменение размера изображения может быть достигнуто различными способами.
Масштабирование в CSS реализуется довольно просто как для изображений, так и для видео.
Самый простой и самый распространенный способ на данный момент это использование CSS max-width.
Необходимо установить максимальную ширину отображения медиафайла до 100% и браузер будет сжимать или расширять его.
Вы только прописываете лучшее качество и наибольший возможный размер, а CSS самостоятельно адаптирует до нужного размера.
Пример.
Реализовать гибкость изображений а также другие медиа-файлов можно просто с помощью CSS3 :
Правило max-width: 100% можно применять и к большинству элементов с фиксированной шириной.
Фактически мы можем добавить в селектор еще и другие медиаэлементы:img, embed, object, video { max-width: 100 %;}
Если мы хотим указывать требуемые размеры наших изображений и в тоже время получить возможность их пропорционального масштабирования.
То необходимо также указать значение высоты auto.
img { max-width: 100%; height: auto;}
Альтернативой масштабированию изображений является их обрезка с CSS. Другим способом является обрезка изображения с CSS overflow (например, overflow:hidden).
Это позволяет обрезать изображения динамически, и контейнеры вокруг них сдвигаются, чтобы соответствовать новым условиям отображения.
Применяя oveflow, изображения подгоняются динамически.
Развитие Media Queries
Медиа Запросы впервые появились как способ представления печатной версии веб-сайта как часть спецификации CSS2.
В 2001 году появился на свет первый черновой вариант CSS3, и медиа запросы стали рекомендуемым стандартом в июне 2012 года и является основополагающим элементом технологии отзывчивого веб-дизайна.
Итак, что же такое Media Queries?
Media Queries – это модуль CSS3, который позволяет адаптировать содержимое страниц для отображения его под устройствами с различными разрешениями экранов (настольных ПК, мобильных устройств, планшетов и т.к. ), основываясь на различных параметрах экрана дисплея – ширине, высоте, ориентации разрешении и т.д.
Проще говоря, применяются разные стили для каждого размера монитора и один и тот же сайт можно просматривать на самых разных устройствах, независимо от разрешения и формата экрана, – смартфонах, планшетах, ноутбуках и т.д. Также, вы можете иметь один стиль для большого дисплея, а другие стили специально для мобильных устройств. Это довольно интересно, поскольку позволяет отобразить содержимое без изменений, на любом устройстве.
Такой макет подстраивается под разрешение монитора и окна браузера, меняя при необходимости ширину макета, число колонок, размеры изображений и текста.
Медиа-запросы ограничивают ширину макета и при достижении этого значения (к примеру, за счёт уменьшения окна или при просмотре на устройстве с указанным размером) уже применяется другой стиль.
Медиа квери может быть подключен в head в html документе с помощью тега <link> используя необходимый нам медиа с его параметрами.
Это имеет смысл использовать когда необходимо создать несколько разных CSS-файлов — один для печати, другой для отображения в браузере — и подключать их к документу по мере необходимости.
В подобном случае следует воспользоваться тегом <link> с параметром media, значением которого выступают все те же типы.
Медиа квери также может быть подключен с помощью css правил @import и @media.
Правило @import позволяет импортировать содержимое CSS-файла в текущую стилевую таблицу/файл.
В качестве значения используется путь к стилевому файлу, который указывается внутри необязательной конструкции url().
И наконец, самое популярное правило @media, которое позволяет указать тип носителя, для которого будет применяться указанный стиль.
Команда @media применяется в основном для формирования одного стилевого файла, который разбит на блоки по типу устройств.
Синтакс
Медиа запросы начинаются с css правила @media, после чего следует условие, в котором используются типы носителей, логические операторы и по меньшей мере одно выражение, которое ограничивает таблицы стилей с помощью медиа свойств.
Если типов носителей несколько, то они разделяются между собой запятой. После чего следуют обязательные фигурные скобки, внутри которых идет обычное описание стилевых правил.
Пример.
@media тип носителя {
Описание стиля для типа носителя
}
Теперь же рассмотрим, какие именно типы носителей мы можем использовать с помощью медиа квери.
Существует следующая классификация media устройств:
ЧАСТО ПРИМЕНЯЮТСЯ
all - Все типы. Это значение используется по умолчанию.
screen - Экран монитора.
print - Печатающие устройства вроде принтера.
tv – Телевизор.
all - Все типы. Это значение используется по умолчанию.
Тип носителя screen - экран монитора
Тип print - Печатающие устройства вроде принтера.
width (min-width, max-width)
Тип носителя: все кроме speech Значение: размер
Описывает ширину отображаемой области.
Это может быть окно браузера или печатная страница.
height (min-height, max-height)
Тип носителя: все кроме speech Значение: размер
Высота отображаемой области.
Чаще всего этот параметр используется с такими свойствами
min-width: … px – используется, когда ширина окна просмотра больше или равна параметру width
max-width: … px – используется, когда ширина окна просмотра меньше или равна параметру width
Значением указывается число.
И поддерживается практически для всех типов носителей кроме speech
Пример.
@media (min-width:500px) {
/* some css code here */
}
Данное выражение будет применяться для всех устройств с шириной экрана большей либо равной 500px. all является значением по умолчанию, поэтому его можно опускать:
@media screen and (max-width: 600px) {
/* some css code here */
}
@media screen and (min-width:200px) and (max-width:400px) {
/* some css code here */
}
orientation
Тип носителя: handheld, print, projection, screen, tty, tvЗначение: landscape | portrait
Определяет, что устройство находится в альбомном режиме (ширина больше высоты) или портретном (ширина меньше высоты).
Пример. Использование ориентации устройства
@media screen and (orientation: portrait) { … }
@media screen and (orientation: landscape) { … }
Свойство ориентации доступно на следующих мобильных системах:
iOS4
Android 2+
Mobile Firefox
Bolt
MicroB
(mobile support taken from PPK’s The orientation media query)
resolution (min-resolution, max-resolution)
Тип носителя: handheld, print, projection, screen, tvЗначение: разрешение в dpi (точек на дюйм) или dpcm (точек на сантиметр)
Определяет разрешение устройства.
Пример
To apply a style sheet to devices with at least 300 dots per inch of resolution:
@media print and (min-resolution: 300dpi) { ... }
To replace the old (min-device-pixel-ratio: 2) syntax:
@media screen and (min-resolution: 2dppx) { ... }
@media
only screen and (min-resolution: 192dpi) and (min-width: 1300px),
only screen and (min-resolution: 2dppx) and (min-width: 1300px) {
/* Large screen, retina, stuff to override above media query */
}
Логические операторы, применяемые в медиа-запросах
Вы можете составлять сложные медиа запросы, используя логические операторы, такие как: не, и, или, только.
AND
Логическое И. Указывается для объединения нескольких условий.
Пример. Стиль для всех цветных устройств
@media all and (color) { ... }
NOT
Логическое НЕ. Указывается для отрицания условия.
The only keyword prevents older browsers that do not support media queries with media features from applying the given styles:
The not logical operator negates the query, specifying any query but the one identified. In the example below the expression applies to any device that does not have a color screen. Black and white or monochrome screens would apply here for example.
@media not screen and (color) {...}
ONLY
Применяется для старых браузеров, которые не поддерживают медиа-запросы.
Пример. Стиль для новых браузеров
@media only all and (not handheld) { ... }
The only logical operator is a new operator and is not recognized by user agents using the HTML4 algorithm, thus hiding the styles from devices or browsers that don’t support media queries. Below, the expression selects only screens in a portrait orientation that have a user agent capable of rending media queries.
‘OR’ (COMMA-SEPARATED LISTS)
В списке нет логического оператора ИЛИ, его роль выполняет запятая.
Перечисление нескольких условий через запятую говорит о том, что если хотя бы одно условие выполняется, то стиль будет применён.
Пример. Стиль для устройств с альбомной ориентацией или минимальной шириной 480 пикселов.
@media all and (orientation: landscape), all and (min-width: 480px) { ... }
Также при использовании операторов следует указывать скобки, чтобы менять приоритет операций.
CSS Media Queries Web Browser Support (http://caniuse.com/#search=Media Queries)
Браузеры которые поддерживают CSS3 Media Queries:
Internet Explorer 9+
Firefox 3.5+
Google Chrome 5+
Safari 4+
Opera 9.5+
Известные проблемы (2)
Firefox (9 и предыдущая?) Глючит мин-ширина медиа запросов не признанных, но правила внутри, обрабатываются и используются.
Opera 12.1 и IE9 неправильно отображает ширину полосы прокрутки для медиа запросов на основе ширины окна.
Обратите внимание что Internet Explorer 8 и ниже не поддерживают CSS media queries.
Если браузер не поддерживает данную фичу?
В этом случае, вам необходимо использовать JavaScript библиотеку, к примеру JS Google Library https://code.google.com/p/css3-mediaqueries-js/
Которая предоставляет возможность поддержки MQ с IE 5+, Firefox 1+, Safari 2
Non responsive website
https://www.apple.com/
http://www.amazon.com/
https://www.usps.com/
Live examples
http://mediaqueri.es/
http://liquidapsive.com/
CSS3 Media Queries Are Here Today!
Как вы видите, media queries не так уж и сложно использовать, и насколько просто создать адаптивный макет страницы с помощью CSS3, который способен подстраиваться под различные устройства и размеры экранов.
ПЛЮСЫ
A single website. Легче для поддержки и администрирования вашего сайта, так всего один сайт для всех устройств.
A single URL. Если определенному материалу соответствует только один URL, пользователям будет проще искать этот контент, распространять его и ссылаться на него. Не требуется выполнять переадресацию, чтобы показать на устройстве адаптированную версию веб-страницы.
Easy SEO and marketing. Алгоритмам Google легче связывать содержание с данными индексирования. Роботу Googlebot достаточно один раз просканировать страницы с адаптивным веб-дизайном, тогда как в случае с разными агентами пользователя для получения контента требуется многократное сканирование. Поэтому при использовании адаптивного дизайна Google может проиндексировать больше контента на сайте и использовать самые актуальные данные о содержании.
Low cost. Простая математика – один сайт дешевле чем два.
Эти технологии обладают невероятными возможностями и являются лишь отправной точкой в ваших начинаниях.
A single website. It’s easier to administer just one website for all devices.
A single URL. This makes sure your users will find you on mobile devices without having to wait for redirects, especially helpful on slower connections.
Easy SEO. There is no need to create specific content for mobile devices, while you still enjoy the benefits of your desktop website SEO on mobile devices.
Easy marketing. No extra work for the marketing department is required to promote your website on mobile.
Low cost. Simple math — one website is cheaper than two.
Resources
Books:
Aaron Gustafson, Adaptive Web Design: Crafting Rich Experiences with Progressive Enhancement. — Easy Readers, 2011.
Ben Frain, Responsive Web Design with HTML5 and CSS3. — Packt Publishing Ltd, 2012.
Ethan Marcotte, Responsive Web Design. — A Book Apart, 2011. (http://www.abookapart.com/products/responsive-web-design) ИЛИ Итан Маркотт, Отзывчивый веб-дизайн. — М.: Манн, Иванов и Фербер, 2012.
Luke Wroblewski, Mobile First. — A Book Apart, 2011. (http://www.abookapart.com/products/mobile-first) ИЛИ Люк Вроблевски, Сначала мобильные! — М.: Манн, Иванов и Фербер, 2012.
Articles:
Adaptive vs Responsive Design:
What’s the difference between adaptive and responsive web design? (http://goo.gl/dQf9uo)
3 articles that discuss the differences between "responsive" and "adaptive" web design (http://goo.gl/7Tkrin)
Responsive Web Design (http://alistapart.com/article/responsive-web-design)
Адаптивный и отзывчивый веб-дизайн (http://itkeys.ru/responsive-and-adaptive-design/)
Адаптивно-отзывчивый: разбираемся в терминологии (http://frontender.info/adaptive-vs-responsive-terminology/)
Адаптивный веб-дизайн: что это такое, зачем он нужен и его принципы (http://te-st.ru/2013/07/11/adaptive-web-design/)
CSS3 Media Queries And Creating Adaptive Layouts (http://goo.gl/ZGNz3n)
A Basic Responsive Grid Layout (http://goo.gl/oGLthK)
Адаптивная разметка (http://designformasters.info/posts/adaptive-layout/)
Media Queries:
MDN: Responsive Web design (https://developer.mozilla.org/en-US/docs/Web_Development/Responsive_Web_design)
MDN: CSS media queries (https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries)
W3C Media Query Specification (http://www.w3.org/TR/css3-mediaqueries/)
Smashing Magazine about Media Queries (http://www.smashingmagazine.com/tag/media-queries/)
Quick Tip: A Crash-Course in CSS Media Queries (http://goo.gl/aKHUF0)
Different Stylesheets for Differently Sized Browser Windows (http://css-tricks.com/resolution-specific-stylesheets/)
CSS Media Queries & Using Available Space (http://css-tricks.com/css-media-queries/)
Video:
Анна Селезнева (CPeople, Москва) — Адаптивный веб-дизайн (https://www.youtube.com/watch?v=fF02MWtATQQ)
Set of practical lessons about responsive design by LoftBlog (http://loftblog.ru/tag/responsive/)
A Crash Course in CSS Media Queries by NETTUTS (http://www.screenr.com/k3n)
Responsive Design - The View of the World Depends on the Glasses I Wear (http://goo.gl/8ryIZ1)
IE 10 Platform Preview 1: The Future of Adaptive Web Design (http://goo.gl/hNg4JP)
Presentations - SlideShare:
Responsive Web design. Что это и как использовать (http://www.slideshare.net/dpeua/responsive-web-design-9657374)
(http://www.slideshare.net/Nimax_agency/responsive-design-13998679?qid=c0920975-3b32-4cbd-96a4-47b7b424ba8b&v=qf1&b=&from_search=1)
Tools:
Media Query Snippets | Realtime testing etc. (http://cssmediaqueries.com/)
62 полезных инструмента для адаптивного дизайна (http://habrahabr.ru/post/142120/)
50 инструментов для адаптивного дизайна (http://www.dejurka.ru/web-design/tools_for_responsive_web_design/)
Browser Support (http://caniuse.com/#search=Media Queries/)
Спасибо всем за внимание и успехов в создании адаптивных сайтов!