Правила адаптивной верстки. Адаптивная верстка: что это и как использовать

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

Адаптивная верстка сайта (иногда ее еще называют mobile-friendly) - ПОДРОБНО и по шагам как на уроке:

Обратите внимание: что у Яндекса и Google - есть свои инструменты, при помощи которых вы можете проверить сайт на адаптивность. У Яндекса в новой версии Вебмастера он находится так: инструменты - проверка мобильных страниц.

Если вы хотите знать как сделать адаптивный дизайн сайта - то об этом будет написано ниже и подробно в примерах, НО, если у вас нет навыков работы с css - то будет сложнее. Или это может сделать ваш программист или вебмастер.

Отзывчивый дизайн сайта - предполагает задание ширины окна страницы и ширину колонок и сайдбаров в %, в адаптиве - в px.

Обратите внимание: если у вас популярный движок вашего сайта, типа wordpress, то у них нет "головной боли" с адаптивным дизайном - все там делается парой кликов мыши - просто устанавливается и активируется плагин и ВСЕ). Например для WP - использовал WPtouch - очень хорош, но, если есть штатный программист - то лучше делать индивидуально этот момент.

Нужно понять, что в основном при адаптивной верстке часто манипулируют: шириной (width элемента: max-width и min-width), float (обтеканием, его убирают по мере уменьшения ширины окна), font-size (меняют высотку букв).

1) Вначале нужно прописать специальный метатег для разных типов девайсов:

2) Адаптив параметров страницы (ширины и высоты):

Container {
width: 800px
max-width: 90%;
}

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

3) Css адаптивна верстка для картинок всего сайта :

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

Тут мы показываем, что размер картинки : максимум его ширины должен быть не более 100% ока - таким образом картинка сама подстраивается под размер телефона или другого гаджета. Вот такой вот простой метод - адаптивный дизайн картинок.

4) Адаптивная верстка текста сайта : в данном случае манипуляции происходят с высотой шрифта: font-size и другими параметрами.

Break-word { word-wrap: break-word; }

Этот CSS предназначен для расстановки переноса, если есть длинные не переносимые слова.

Есть много ошибок по размеру шрифта: Яндекс любит писать - Размер текста слишком мал для чтения на мобильных устройствах - для этого делаем так:

body {font-size: 16px} - это позволит избежать этой ошибки, а уже для тега p и для ссылок нужно отдельно проставить. Именно из-за того, что в теге body стоит font-size: 12 или 14 px - именно поэтому выходит эта ошибка! И выйдет вот такой вердикт:

5) Адаптация 3 колоночного дизайна или 2 колоночной верстки - в этом нет ничего сложного, если все сделано на div - ах то обычно нужно отменить обтекание, то есть выставить float в none и блоки опустятся вниз.

6) Адаптив CSS для видео (с Хабра):



Video {
position: relative;
padding-bottom: 56.25% ;
height: 0 ;
overflow: hidden;
} .video iframe ,
.video object ,
.video embed {
position: absolute;
top: 0 ;
left: 0 ;
width: 100% ;
height: 100% ;
}

Media Queries - медиа запросы

Для создания адаптивного диза часто используют media запросы (они задают правила исходя из размеров экрана по ширине - исходя из разрешения экрана).

Вот заготовочка media queries - под какие разрешения делать адаптивный дизайн:


@media only screen and (max-width: 1200px) {


@media only screen and (max-width: 992px) {

/* Small Devices, Tablets */
@media only screen and (max-width: 768px) {


@media only screen and (max-width: 480px) {

/* Custom, iPhone Retina */
@media only screen and (max-width: 320px) {
/**/
}

/*========== Mobile First Method ==========*/

/* Custom, iPhone Retina */
@media only screen and (min-width: 320px) {
/**/
}

/* Extra Small Devices, Phones */
@media only screen and (min-width: 480px) {
/**/
}

/* Small Devices, Tablets */
@media only screen and (min-width: 768px) {
/**/
}

/* Medium Devices, Desktops */
@media only screen and (min-width: 992px) {
/**/
}

/* Large Devices, Wide Screens */
@media only screen and (min-width: 1200px) {
/**/
}

Но можно и избежать медиа запросов, задавая ширину колонок и блоков сразу в процентах.

При медиа запросах начинаем сверху: все что сделали допустим для max-width: 768 будет срабатывать и при 480.

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

Например Яндекс может такое выдать - Есть горизонтальная прокрутка :

Это у вас что-то с padding или margin - обнулите их для родительских селекторов (блоков) и будет вам счастье.

И в конце Яндекс Вебмастер показывает такое:

Тоже делал 4 часа, в первый раз всегда сложно! Но далее, уже за пару часиков можно делать! И отправляем в вебмастер на перепроверку, чтобы побыстрее - важно для SEO .

А вообще, сегодня многие используют готовые заготовки - Бутстрап и мучений практически нет -

Я не являюсь профессионалом в области дизайна и верстки сайтов. В основном вся моя деятельность в этом направлении сводится к небольшим правкам существующих шаблонов. Но однажды мне очень захотелось разобраться «как это работает» и я собрал в одну статью набор базовых правил по созданию адаптивного шаблона сайта.

Понятие адаптивности

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

Адаптивная верстка позволяет одинаково удобно просматривать сайт не только на мониторе компьютера, но и на экране мобильного телефона (смартфона) без потери функциональности.

Медиазапросы адаптивной верстки

Для изменения верстки сайта и соответствующего оформления стилей используются медиазапросы, которые активируют тот или иной код в зависимости от ширины экрана. Чтобы медиа-запросы работали и шаблон получился адаптивным, нужно поместить в шапку сайта в секцию HEAD следующую строку кода:

Основные принципы адаптивности

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

А достигается это двумя путями:

  • Удаление (скрытие) блоков и/или перераспределение их между собой;
  • Изменение размеров блоков в зависимости от ширины экрана.
  • Классический пример — это перемещение боковой колонки сайдбара под основной контент.

    При этом ширина сайдбара стала равна ширине основного контента и они оба в свою очередь растянулись на всю ширину экрана.

    Как убрать блок сайдбара в зависимости от ширины экрана

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

    В простейшем случае CSS код будет выглядеть так:

    @media only screen and (max-width: 1199px) { .content{float: none;} .sidebar{float: none;} }

    Располагать его следует в конце файла стилей, как минимум после оформления для отображения на стационарных компьютерах.

    Пояснения к коду: в первой строке мы говорим, что нижеследующие стили будут применяться к устройствам с шириной экрана до 1199 пикселей включительно. Для таких устройств сайдбар перестает быть плавающим блоком и отображается в порядке его очередности в HTML коде сайта. Поэтому, если вы хотите, чтобы сайдбар отображался после контента, необходимо чтобы код сайдбара был ниже кода основного контента, например так:

    ... ...

    Автоматическая ширина блока — резиновая верстка

    Так же следует поработать с шириной блоков контента и сайдбара. Необходимо сделать их «резиновыми» при просмотре на мобильных клиентах:

    @media only screen and (max-width: 1199px) { .content {width:100%;} .sidebar {width:100%;} }

    При указанных выше стилях, блоки будут растягиваться на всю ширину экрана.

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

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

    Img {max-width:100%; height: auto;}

    Проблема длинных слов

    Иногда горизонтальная полоса прокрутки может появиться и от очень длинного слова, когда оно не помещается на экране. Например это может быть URL-адрес оставленный в комментарии. Подробнее об этой проблеме и ее решении я писал ранее: . CSS-код для устранения проблем с адаптивностью будет выглядеть так:

    Hyphenate { overflow-wrap: break-word; word-wrap: break-word; -webkit-hyphens: auto; -ms-hyphens: auto; -moz-hyphens: auto; hyphens: auto; }

    Адаптивное меню сайта

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

    Чтобы реализовать задуманное необходимо создать два взаимоисключающих объекта. К примеру основное меню должно быть скрыто на мобильных экранах, но при этом должна появиться кнопка открывающая это меню. На экранах компьютеров наоборот: основное меню должно быть видно, а кнопка его вызова скрыта.

    На CSS это реализуется очень просто.

    #mainmenu {display:block;} #mobilemenu{display:none;} @media only screen and (max-width: 1199px) { #mainmenu {display:none;} #mobilemenu{display:block;} }

    Как только ширина экрана станет меньше 1200 пикселей, то основное меню исчезнет с экрана, а появится ссылка на его открытие (точнее будет показан блок со ссылкой или кнопкой).

    Обратите внимание, что в данном случае используются ID блоков, а не класс стилей. И код основного меню будет выглядеть примерно так:

    <div id="mainmenu">Основное меню сайта

    Чтобы показать основное меню по нажатию на кнопку, добавим небольшой скрипт в секцию HEAD :

    function showmobilemenu() { if (document.getElementById("mainmenu").style.display == "block") {document.getElementById("mainmenu").style.display = "none"} else {document.getElementById("mainmenu").style.display = "block"} }

    Приветствую вас, случайные посетители и постоянные читатели блога сайт!

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

    Краткий план статьи:

    В предыдущей статье я уже писал о том, и зачем он нужен. Но как достичь этой самой адаптивности?

    Для этого есть разные способы. Кто то использует javascript, кто то что то еще. Но я считаю, что самый простой и правильный способ – это адаптивная с помощью CSS.

    Как сделать адаптивную верстку сайта


    Во-первых, если вы взялись верстать адаптивный дизайн сайта, между тегами вставьте следующий код:

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

    Представьте себе, я рисую дизайн, потом прописываю все нужные стили и запросы, проверяю адаптивность сайта при разных разрешениях. Все вроде бы хорошо! Но, когда я открываю свой блог на смартфоне, я вижу, что сайт просто напросто сжался. Он не адаптировался к мобильному устройству, а просто уменьшились размеры шрифта, картинок и т.д.

    Как так? Я стал перепроверять все стили, правильно ли я прописал классы, в итоге дошел до того, что через javascript проверил ширину окна браузера в px. Я был в шоке. При проверке на ноутбуке я получил результат 1024px, и примерно такой же результат я получил открыв сайт на смартфоне!

    Но ведь этого не может быть!

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

    Из-за своей глупости и некомпетентности я потерял очень много времени. Зато теперь запомнил навсегда))).

    Адаптивная верстка CSS media запросы


    Чтобы сделать адаптивную с помощью CSS, необходимо использовать media запросы.

    Это как? Да, очень просто. В CSS файле нужно прописать запросы типа:

    @media screen and (min-width: 1440px) and (max-width: 1599px){ }

    Это код означает, что стили заключенные между “{ } ” будут работать для экранов с минимальной шириной 1440px и максимальной 1599px.

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

    Самые важные разрешения экрана, при адаптивной верстке
    • 320 px - Мобильные устройства (портретная ориентация);
    • 480 px - Мобильные устройства (альбомная ориентация);
    • 600 px - Небольшие планшеты;
    • 768 px - Планшеты (портретная ориентация);
    • 1024 px - Планшеты (альбомная ориентация)/Нетбуки;
    • 1280 px и более - PC.

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

    bootstrap адаптивный дизайн


    Очень удобно использовать для создания адаптивной верстки bootstrap. Удобство в том, что все стили для адаптации блоков, кнопок, таблиц и т.д. уже прописаны в bootstpap. Нужно только разобраться какой класс к какому элементу присвоить.

    Для начала, качайте свежую версию bootstrap и подключите его к своему сайту. Учтите, что подключение стилей и скриптов к wordpress имеет свои особенности.

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

    Например, такая конструкция позволит выделить один широкий блок для контента шириной в 8 частей и один узкий для сайдбара шириной в 4 части экрана:

    Ширина блоков будет рассчитываться автоматически в зависимости от ширины экрана. А при просмотре на мобильном устройстве эти блоки будут смещаться друг под друга.

    Также можно регулировать отступ блок от края, опять же, на нужное количество частей. Например такая конструкция:

    Будет создан блок шириной в 10 частей с отступом слева в 1 часть экрана.

    Если разобраться, то работа с бутстрап делает работу с очень быстрой. При чем эти стили точно работают корректно и не будет ничего кривого на сайте.

    В будущем я планирую выложить несколько уроков по работе с bootsrap. Поэтому советую , чтобы не упустить этот момент.

    Проверка адаптивности сайта


    Но возникает вопрос: как проверять адаптивность сайта? Вот прописали вы media запросы в CSS, подключили bootstrap и используете нужные классы. А как вы проверите, что на всех разрешениях экрана сайт правильно адаптируется.

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

    Ну как вам статья? Все понятно? Если нет, пишите в комментарии, будем разбираться вместе.

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

    Для тех кто еще не слышал о таком термине как адаптивная верстка могу сказать что такую верстку можно назвать человеческим языком послушной. Этот вид верстки подстраивается под все возможные экраны устройств с которых пришел ваш посетитель, а в последнее время их мягко говоря полно (нетбуки, планшеты, iphone, устройства на основе Android …). У всех этих устройств есть особенность, они работают с разными экранами, но некоторые и них даже перестраивают отдельные элементы, так например iphone очень не кстати, вашему дизайну делает свои кнопки и поля форм на вашем сайте.

    Адаптивная верстка — с чего начать

    Поговорим по порядку с чего начать делать адаптивную верстку и какие сложности могут быть при этом.

    Что использовать для верстки:

    Думаю не ошибусь если, скажу что начинать надо с изучения простого определения браузера при помощи CSS3. То есть чтобы вы могли строить разные стили для разных экранов устройств, а ваш дизайн при сужении окна браузера менялся так, чтобы посетителям сайта было удобно с ним работать.
    Вот собственно эти стили их вам будет достаточно для начала:

    Адаптивный css для верстки сайта

    /* Для больших экранов */ @media (min-width: 1200px) { ... } /* Для некоторых нетбуков и планшетов (таблеток) */ @media (min-width: 768px) and (max-width: 979px) { ... } /* Для планшетов и некоторых телефонов */ @media (max-width: 767px) { ... } /* Для телефонов и некоторых устройств у которых совсем маленький экран */ @media (max-width: 480px) { ... }

    /* Для больших экранов */

    @ media (min - width : 1200px ) { . . . }

    /* Для некоторых нетбуков и планшетов (таблеток) */

    @ media (min - width : 768px ) and (max - width : 979px ) { . . . }

    /* Для планшетов и некоторых телефонов */

    @ media (max - width : 767px ) { . . . }

    /* Для телефонов и некоторых устройств у которых совсем маленький экран */

    @ media (max - width : 480px ) { . . . }

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

    viewport - для мобильных устройств

    < meta name = "viewport" content = "width=device-width, initial-scale=1.0" >

    < link href = "assets/css/bootstrap-responsive.css" rel = "stylesheet" >

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

    Бонус в пользу адаптивных сайтов

    Поисковые системы уже намного лучше распознают адаптивные сайты и меняют выдачу под них. То есть ваш сайт, сделанный по правилам адаптивной верстки, скорее всего, будет выше для тех, кто ищет информацию с мобильных устройств, чем простые и скучные сайты которые нужно уменьшать и увеличивать на экране, чтобы на них прочесть хоть что-то. Такой вывод пришел ко мне из опыта разработки сайта для юридической компании и анализа его статистики. Google и Yandex любят удобные сайты, но учитывая, что такие сайты стоят в 3 — 4 раза дороже , не каждый может себе позволить заказать адаптивный дизайн и разработку под этот дизайн. Стоимость обусловлена тем что нужно рисовать дизайн под 3-4 устройства и верстать также под разные устройства, а такие CSS фреймворки как Bootstrap далеко не всегда могут решить все поставленные задачи которые на придумывал клиент).

    Поговорим немного о Bootstrap

    Первое что хотелось сказать о Bootstrap , не ищите документации нигде кроме официального сайта, у них там документация насколько хорошо описана, что врядли кто сможет лучше и по шагам расписать все возможности этого мега-фреймворка. Скорость верстки увеличивается в разы, но только в том случаи если клиенту нужен простой сайт без выдумок. Но когда сайт делается по всем требования клиента, иногда лучше этот фреймворк оставить и начать делать все просто вручную. Фреймворк отлично подойдет для тех, кто хочет научиться делать интерфейсы, например для панелей администратора, где уникальность дизайна не играет большей роли, но надо сделать все удобно. Бэкэнд сайта сделанный на bootstrap получается очень удобным и лаконичным, очень советую.

    Тексты в адаптивной верстке

    Для того чтобы сайт смотрелся хорошо на всех экранах недостаточно только перестраивать блоки, изменять их размер и назначение при помощи css фреймворков и JavaScript , нужно еще и помнить как ведет себя текст на разных экранах. Если на маленьком экране телефона в 480 пикселей текст хорошо смотрится на 12 пикселях, то на большем экране этот текст нужно увеличивать, так как на больших мониторах никто не смотрит на текст впритык, а читают его издалека. Недолго покопавшись в Интернет, я нашел отличную отличный плагин написанный на jqery. Называется плагин FitText и находится . Все, что вам надо сделать, это подключить плагин и вызвать его для нужных элементов страницы.

    Пример использования fittext

    $("#fittext1").fitText(); $("#fittext2").fitText(1.5); $("#fittext3").fitText(1.1, { minFontSize: 50, maxFontSize: "75px" });

    $ ("#fittext1" ) . fitText () ;

    $ ("#fittext2" ) . fitText (1.5 ) ;

    $ ("#fittext3" ) . fitText (1.1 , { minFontSize : 50 , maxFontSize : "75px" } ) ;

    У плагина есть одна особенность, он работает только с блочными элементами (block, block-inline).

    Проблемы при адаптивной верстке:
  • На iphone ваши стили будут смотреться по другому, советую при верстке раздобыть это устройство для тестирования.
  • На iphone трансформация работает по другому, причем во всех устройствах по разному. Когда вы выставляете 3D поворот объекта в CSS3 = 0 градусов, то объект таинственным образом может повернуться под некоторым углом, вместо того чтобы исчезнуть.
  • Для адаптивной верстки веб-дизайнер должен быть обучен всем тонкостям и если вы знаете PhotoShop, советую запастись примерами качественных адаптивных дизайнов в формате PSD, для примеров как делать надо или не надо. Также вам понадобиться гора терпения и никаких отговорок (почему разработчику надо учить PhotoShop или SEO, которые я слышу все чаще). Мой вам совет из опыта , никогда не работайте с именитыми дизайнерами, которые к веб-дизайну не имеют никакого отношения. Был плохой опыт работы и мороз со стороны дизайнера.
  • Работая с Bootstrap вам надо будет дорабатывать фреймворк если клиенту нужен макет больше чем 1200 пикселей в ширину. Хотя там работы не так много, но на сложных проектах мороки много, плавали, знаем…
  • Тестировать адаптивный дизайн часто приходится в разных браузерах и даже в разных версиях, то же касается и разных устройств. Например, на iphone3 и iphone4 разница большая, меньше разница между iphone4 и iphone5. Устройства Android вам тоже понадобятся, так как там свои хитрости при выделении блока или написания в форму текста. Если денег на покупку кучи устройств нет, то можно использовать специальные сервисы как этот , но он только меняет размер экрана и не меняет отображение элементов, как это делают устройства.
  • Пока на этом сложности больше не замечал, но если знаете пишите буду проверять и дописывать. Иногда для отдельных случаев нужно определить тип устройства до загрузки страницы в браузере, в таком случаи советую использовать класс написанный на языке php. Скрипт поможет определять размер экрана посетителя сайта и устройство, с которого тот зашел до загрузки сайта, на стороне сервера. .

    Если вам нужно чтобы ваши блоки плавно менялись на сайте, можно использовать анимацию CSS3 в ваших стилях для всех блоков.

    Плавная трансформация блоков CSS3

    *{ -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; }

    Webkit - transition : all 0.3s ease ;

    Moz - transition : all 0.3s ease ;

    O - transition : all 0.3s ease ;

    Ms - transition : all 0.3s ease ;

    transition : all 0.3s ease ;

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

    transition - отмена трансформации

    Class-block, .class-block * { /*CSS transitions*/ -o-transition-property: none !important; -moz-transition-property: none !important; -ms-transition-property: none !important; -webkit-transition-property: none !important; transition-property: none !important; /*CSS transforms*/ -o-transform: none !important; -moz-transform: none !important; -ms-transform: none !important; -webkit-transform: none !important; transform: none !important; /*CSS animations*/ -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; -ms-animation: none !important; animation: none !important; }

    Class - block , . class - block * {

    /*CSS transitions*/

    O - transition - property : none ! important ;

    Moz - transition - property : none ! important ;

    У Вас в браузере заблокирован JavaScript. Разрешите JavaScript для работы сайта!

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

    Чтобы устранить эти недостатки стали разрабатывать отдельные мобильные версии сайтов. Но это долго, дорого и неудобно в поддержке.

    Решение возникшей проблемы – адаптивная верстка , при которой CSS-стили меняются динамически для разной ширины окна браузера.

    Пример

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

    Разработку адаптивной верстки чаще всего проводят от уже существующего сайта для большого экрана к экранам меньшего размера. Проверять результат работы можно разными способами:

  • просто менять размер экрана браузера,
  • расположить справа панель инспектора компонентов и менять ее ширину,
  • использовать адаптивный дизайн браузера, нажав Ctrl+Shift+M в Firefox или Google Chrome.
  • Что используют для оптимизации сайта под мобильные устройства? Метатег viewport

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

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

    Чтобы сообщить браузеру, что страница адаптируется к любым устройствам, в заголовок документа добавляют метатег viewport.

    Пример Основные свойства метатега
    width Ширина видимой области. Рекомендуемое значение: device-width.
    height Высота видимой области. Рекомендуемое значение: device-height.
    initial-scale Первоначальный масштаб страницы. Принимает значение от 1 до 5. Рекомендуемое значение: 1.
    minimum-scale Минимальный масштаб страницы. Принимает значение, которое должно быть меньше или равным initial-scale. Значение 1 запрещает уменьшение масштаба страницы.
    maximum-scale Максимальный масштаб страницы. Принимает значение, которое должно быть больше или равным initial-scale. Значение 1 запрещает увеличение масштаба страницы.
    user-scalable Разрешает или запрещает возможность масштабирования страницы. Принимает значение true или false.

    Контент шире экрана – часто возникающая проблема, как только задан viewport.

    Это происходит, если каким-то элементам задана большая фиксированная ширина.

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

    Пример .content { width: 100%; max-width: 1200px; } Медиа-запросы. CSS-стандарт Media Queries

    Возможность применять различное оформление в зависимости от ширины окна дает CSS-стандарт Media Queries .

    Медиа-запрос начинается с правила @media , после которого следует условие применения стилей, состоящее из типа носителя (в приведенном примере all ), логического оператора (and ) и медиа-функции (max-width: 360px ).

    Типы носителей
    all Все типы.
    print Принтеры и другие печатающие устройства.
    screen Экран монитора.
    speech Речевые синтезаторы и программы для воспроизведения текста вслух. Например, речевые браузеры.
    Устаревшие, хотя и корректные типы, которые не дают результата
    braille Устройства, основанные на системе Брайля, которые предназначены для чтения слепыми людьми.
    embossed Принтеры, использующие для печати систему Брайля.
    handheld Наладонники, смартфоны, устройства с малой шириной экрана.
    projection Проекторы.
    tty Устройства с фиксированным размером символов (телетайпы, терминалы, устройства с ограничениями дисплея).
    tv Телевизоры.
    Логические операторы Основные медиа-функции Пример

    Задан размер заголовка:

    H1 { font-size: 72px; }

    На большом экране компьютера такой заголовок смотрится нормально, но для вертикального экрана смартфона он слишком крупный. Для экранов, ширина которых меньше или равна 360px, можно уменьшить размер шрифта с помощью медиа-запроса:

    @media all and (max-width: 360px) { h1 { font-size: 42px; } }

    Новые единицы размеров (vw, vh, rem)
    vw 1% от ширины окна браузера (viewport).
    vh 1% от высоты окна браузера (viewport).

    Благодаря этим единицам теперь в CSS стало легко указать относительную высоту элемента.

    Пример body { min-height: 100vh; }

    Размер шрифта при адаптивной верстке удобно задавать в rem (root em). Эта единица измерения вычисляется на основе размера шрифта корневого элемента . По умолчанию 1rem = 16px. Для простоты вычислений размер шрифта корневого элемента можно задать равным 10px.

    Пример html { font-size: 10px; } body { font-size: 1.6rem; } h1 { font-size: 7.2rem; } @media all and (max-width: 360px) { body { font-size: 1.4rem; } h1 { font-size: 4.2rem; } }

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

    Спецификация Flexbox позволяет контролировать размер, порядок и выравнивание элементов по горизонтали и вертикали, распределение свободного места между ними. Блоки при этом могут сжиматься и растягиваться по заданным правилам, занимая нужное пространство.

    Flexbox определяет CSS свойства для flex-контейнера и его дочерних элементов (в приведенном примере соответственно ul.flex и li.flex).

    Пример ul.flex { display: flex; /* flex-контейнер */ flex-wrap: wrap; /* многострочный режим */ justify-content: space-between; /* элементы распределяются равномерно (первый – в начале строки, последний – в конце) */ } li.flex { display: inline-block; flex-basis: 260px; /* базовая ширина элемента */ flex-grow: 1; /* все элементы одинаковой ширины */ max-width: 300px; padding: 8px; }

    В результате: элементы списка растягиваются на всю доступную ширину (с ограничением в 300px):


    На узком экране список станет вертикальным:

    Используя Flexbox, можно менять порядок следования элементов и легко задавать вертикальное выравнивание.

    Случайные статьи

    Вверх