Статьи

ДНК отзывчивого веб-дизайна

Ниже приведен отрывок из нового документа «Анатомия отзывчивых приложений ASP.NET»,
изначально созданного Эдом Шарбено.

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

Отзывчивые строительные блоки

Адаптивный дизайн определяется как гибкие сетки, гибкий контент и медиа-запросы. В целом адаптивный веб-дизайн (RWD) означает, что макет проекта должен адаптироваться к размеру области просмотра браузеров. Содержимое приложения должно эффективно использовать доступное пространство на экране, как правило, благодаря возможности уменьшаться или увеличиваться при изменении размера контейнера. Давайте посмотрим, какие методы могут быть использованы для достижения RWD.

Медиа-запросы, краеугольный камень RWD

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

Медиа-запросы могут содержать тип медиа и / или выражения медиа-функции. Когда все части медиазапроса возвращаются true, стили в блоке медиазапроса будут применены к таблице стилей. Медиа-запрос аналогичен ifформулировке большинства основных языков программирования, за исключением того, что он разработан специально для обнаружения медиа.

медиа-запрос пробой

Давайте рассмотрим пример и разберем различные части медиа-запроса.

/* For screens > 768px */

/*  If the device has a screen
    And the device width is greater than or equal to 768px
    then color property = red */

@media only screen and (min-width: 768px) { 
    .on-large { color: red; } 
}

Существует несколько методов использования медиа-запросов для преобразования макетов. Эти методы обычно называются мобильным первым или настольным первым RWD. В любом сценарии создается базовый макет, а затем условно добавляются стили CSS для конкретного устройства, чтобы добавить или переопределить существующий стиль.

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

/* Base style for small devices small and up */

.hero-text { font-size: 22px; }

/* For large and up */
@media only screen and (min-width: 768px) {
    .hero-text { font-size: 48px; }
}

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

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

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

Сетки, строки, столбцы и точки останова

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

Классы столбцов абстрагируются от длинных процентных значений, таких как .col-xs-5 { width: 41.66666667%; }

строка столбец

Грид-системы поддерживают несколько макетов, указав размер и ширину устройства как часть столбца. Синтаксис может варьироваться в зависимости от структуры, но общая концепция одинакова. Каждый размер устройства имеет соответствующий медиазапрос и свойства стиля, которые создают желаемый эффект макета. Эти медиа-запросы называются точками останова . Bootstrap идентифицирует свои точки разрыва как xs (очень маленький), sm (маленький), med (md), lg (большой).

<!-- Bootstrap syntax col-[device size: xs, sm, md, lg]-[width: 1-12] -->
<div class="col-sm-12"> ... </div>

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

<div class="col-sm-12 col-md-6 col-lg-4">
    <!-- some navigation -->
</div>
<div class="col-sm-12 col-md-6 col-lg-8">
    <!-- some content -->
</div>

Col-12-см

Col-6-мкр

Col-LG-4

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

/* bootstrap source code */
@media (min-width: 768px) {
    .col-sm-12 { width: 100% }
}

@media (min-width: 992px) {
    .col-md-6 { width: 50% };   
}

@media (min-width: 1200px) {
    .col-lg-8 { width: 66.66666666666666%; }
}

контрольные точки

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

контейнер

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

<div class="container">
    <!-- begin rows here -->
</div>

Давайте углубимся в исходный код Bootstrap и посмотрим, как он работает.

.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}

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

Работа с контентом

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

гибкие-изображения

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

Платформа Foundation решает проблему, устанавливая max-widthвсе изображения на 100%. Используя свойство max-width, это гарантирует, что изображение занимает 100% ширины его контейнеров, но никогда не превышает его естественную ширину.

При использовании max-width, если естественная ширина изображения составляет 500 пикселей, ширина увеличивается только до 500 пикселей. Однако, когда widthвместо этого используется свойство CSS , изображение будет расти бесконечно, чтобы заполнить родительский контейнер.

/* Foundation Source Code */
img {
    height: auto;
    max-width: 100%;
}

Bootstrap использует похожую технику, используя класс, .img-responsiveкоторый должен применяться индивидуально к изображениям, которые нуждаются в этой функциональности.

<img class="img-responsive".../>

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

/* disable flexible images */
img.no-resize { max-width: none; }

Контент действительно царь, и он может создавать или разрушать макет. Медиа — элементы , такие как embed, video, iframeи objectнужно немного помочь , чтобы гарантировать , что они правильно вести себя на всех размеров экрана. Адаптивные структуры имеют специальные классы только для этих элементов.

Классы, такие как Boostrap .embed-responsive-itemи Foundation, поддерживают .flex-videoбраузеры, следя за тем, чтобы размеры встроенных носителей основывались на ширине содержащего их блока, создавая собственный коэффициент, который будет правильно масштабироваться на любом устройстве.

<!-- Bootstrap -->
<!-- 16:9 aspect ratio -->
<div class="embed-responsive embed-responsive-16by9">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>

<!-- 4:3 aspect ratio -->
<div class="embed-responsive embed-responsive-4by3">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>  

<!-- Foundation --> 
<!-- 16:9 aspect ratio -->
<div class="flex-video widescreen">
    <iframe src=..."></iframe>
</div>

<!-- 4:3 aspect ratio -->
<div class="flex-video">
    <iframe src=..."></iframe>
</div>

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

Отзывчивый интерфейс

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

Приложениям с полным набором функций требуются надежные функции пользовательского интерфейса, и важно выбрать пакет пользовательского интерфейса, который поддерживает готовность к работе сразу после установки. Telerik в Кендо UI , UI для ASP.NET MVC и UI для ASP.NET AJAX имеет адаптивные схемы и элементы управления , которые работают без проблем с любыми рамками RWD вы используете.

Вывод

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

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