Адаптивность

Web-технологии

Адаптивность

Лекция №8

Адаптивный и отзывчивый дизайн

Адаптивная верстка

Адаптивная вёрстка сайта позволяет веб-страницам автоматически подстраиваться под экраны планшетов и смартфонов.

Мобильный трафик

Мобильный интернет-трафик растёт с каждым годом растёт, и, чтобы эффективно обрабатывать этот трафик, нужно предлагать пользователям адаптивные сайты с удобным интерфейсом.

Поисковые системы используют ряд критериев для оценки адаптивности сайта при просмотре на мобильных устройствах.

mobile-friendly

Google старается упростить пользование Интернетом для владельцев смартфонов и планшетов, отмечая в мобильной выдаче адаптированные под мобильные устройства сайты специальной пометкой mobile-friendly.

В Яндексе также работает алгоритм, который отдает предпочтение сайтам с мобильной/адаптивной версией для пользователей в мобильном поиске.

mobile-friendly

Проверить отображение страницы на мобильных устройствах можно на сервисах Яндекс.Вебмастер и Google Developers.

Адаптивная верстка предполагает

Адаптивный/отзывчивый

Responsive Design (RWD) — отзывчивый дизайн — проектирование сайта с определенными значениями свойств, например, гибкая сетка макета, которые позволяют одному макету работать на разных устройствах;

Adaptive Design (AWD) — адаптивный дизайн, или динамический показ — проектирование сайта с условиями, которые изменяются в зависимости от устройства, базируясь на нескольких макетах фиксированной ширины.

Адаптивный/отзывчивый

Приемы отзывчивого дизайна

Гибкость

Cкладывается из трех важных частей

  1. гибкость макета
  2. гибкость текстового содержимого
  3. гибкие изображений

Гибкость макета

Гибкость макета базируется на использовании относительных единиц измерения вместо фиксированных пиксельных значений, что позволяет регулировать ширину в соответствии с доступным пространством.

Гибкость макета

Гибкость текстового содержимого

Гибкость текстового содержимого достигается путем вычисления размеров шрифта относительно размера шрифта в браузерах (по умолчанию 16px).

Например для фиксированного размера font-size: 42px относительный размер равен 42px / 16px = 2.625em.

Гибкие изображения

Проблема гибких изображений решается с помощью правила

        img {
        	width: 100%; 
        	max-width: 100%;
        }
    

Это правило гарантирует, что все изображения на странице никогда не будут шире, чем их контейнеры и никогда не превысят своих истинных размеров на больших экранах.

Универсальные шаблоны

При проектировании интерфейса важно использовать такие шаблоны, которые отоносительно просто будет настраивать для разных размеров экрана.

Например, можно использовать так называемые карточные интерфейсы — прямоугольные фигуры с закруглёнными углами, которые представляют собой контейнеры для контента.

Универсальные шаблоны

Большая часть макетов, используемых для создания отзывчивого веб-дизайна, относятся к одной из пяти категорий шаблонов, определенных Люком Вроблевски:

Расстановка приоритетов

Оставьте только самое необходимое — хороший приём, особенно для отзывчивого дизайна. Создавайте отзывчивые и дружелюбные минималистические интерфейсы, которые приобретают всё большую популярность в настоящее время.

Расставьте приоритеты и правильно скройте контент — используйте скрытые элементы управления, особенно для устройств с небольшими экранами.

Медиа-запросы

Перед началом

При создании адаптивных веб-страниц также необходимо обратить внимание на метатег viewport.

        <head>
        	...
        	<meta name="viewport" content="width=device-width, initial-scale=1">
        	...
        </head>
    

Что такое медиа-запрос?

        @media условие {
        	.element{
        		/* стили для элемента*/
        	}
        }
    

Создание медиа-запроса начинается с ключевого слова @media после которого указывается одно или несколько условий.

Что такое медиа-запрос?

        @media условие {
        	.element{
        		/* стили для элемента*/
        	}
        }
    

В качестве условия можно указывать тип устройства или требования к определённой характеристике. Требование к определённой характеристике записывается в круглых скобках.

Тип носителя

Тип носителя

        /* Например, этот @media только для экранов */
        @media screen { ... }
         
        /* А здесь для экранов и принтеров */
        @media screen, print { ... }
    

Логические операторы

Оператор and используется для объединения нескольких условий. В этом случае их результат будет истинным, когда каждое из них будет истинным.

        @media screen and (min-width: 1200px) and
               (orientation: landscape) {
                  /* что-то */
        }
    

Логические операторы

Применение стилей, когда необходимо лишь выполнение одного из указанных условий, достигается посредством разделения их между собой с помощью , (запятой).

        @media (min-width: 544px), (orientation: landscape) {
            ...
        }
    

Логические операторы

Ключевое слово not используется для отрицания. При использовании not с and отрицание работает для всего медиа-запроса.

        @media not screen and (min-width: 411px)
               and (min-height: 731px) {
                  /* что-то */
        }
    

Логические операторы

При использовании not в выражении с запятой он добавляет отрицание только для этой части.

        @media not screen, not (min-width: 411px) {
            ...
        }
    

Логические операторы

Ключевое слово only предназначено для того, чтобы браузеры, которые не поддерживают CSS3 медиа-запросы их игнорировали.

В настоящее время это уже не актуально, поэтому использовать only не нужно (если конечно вы не поддержиаете совсем старые браузеры).

Характеристики носителя

При составлении условия кроме типов устройств и логических операторов можно ещё задавать требования к определённым характеристикам, которые должен иметь браузер, устройство вывода, или окружение. В некоторых источниках характеристики называют медиа-функциями.

Каждая характеристика в @media должна быть заключена в круглые скобки.

width

Медиа-характеристика width позволяет задать условие на равенство ширины области просмотра определённому значению.

        @media (width: 320px) { 
           ...
        }
    

width

Для определения диапазона можно использовать min-width и max-width. Например, @media для ширины viewport от 576px до 1200px:

        @media (min-width: 576px) and (max-width: 1199.98px) {
            ...
        }
    

height

Для задания условий в отношении высоты viewport можно использовать heightmin-height и max-height.

        @media (min-height: 720px) { 
            ...
        }
    

orientation

С помощью orientation можно установить те или иные стили в зависимости от того, в каком режиме (альбомном или портретном) отображается сайт.

        @media (orientation: landscape) {
          .cover { background: url(bg-l.png) no-repeat; }
        }
    

orientation

С помощью orientation можно установить те или иные стили в зависимости от того, в каком режиме (альбомном или портретном) отображается сайт.

        @media (orientation: portrait) {
          .cover { background: url(bg-p.png) no-repeat; }
        }
    

aspect-ratio

Характеристики aspect-rationmin-aspect-ratio и max-aspect-ratio позволяют задавать стили в зависимости от соотношения сторон viewport.

        @media (min-aspect-ratio: 9/16) {
          .header {
            background-color: #0dcaf0;
          }
        }
    

aspect-ratio

Характеристики aspect-rationmin-aspect-ratio и max-aspect-ratio позволяют задавать стили в зависимости от соотношения сторон viewport.

        @media (max-aspect-ratio: 16/9) {
          .header {
            background: #ffc107;
          }
        }
    

aspect-ratio

Характеристики aspect-rationmin-aspect-ratio и max-aspect-ratio позволяют задавать стили в зависимости от соотношения сторон viewport.

        @media (aspect-ratio: 1/1) {
          .header {
            background: #6c757d;
          }
        }
    

resolution

Характеристики resolutionmin-resolution и max-resolution можно использовать, когда нужно задать стили в зависимости от плотности пикселей устройства.

    /* Default */
    p {
      font-size: 16px;
    }
     
    /* Minimum resolution */
    @media (min-resolution: 150dpi) {
      p {
        font-size: 14px;
      }
    }

Разрешение экрана

При составлении медиазапросов нужно ориентироваться на так называемые переломные (от английского breakpoints) точки дизайна, т.е. такие значения ширины области просмотра, в которых дизайн сайта существенно меняется, например, появляется горизонтальная полоса прокрутки.

Стратегии использования медиа-запросов

Стратегии использования медиа-запросов

Все презентации
на GitHub Pages