Как использовать медиа-запросы в HTML и CSS для создания адаптивных сайтов
Если вы хотите разрабатывать веб-сайты / веб-приложения, то знание того, как создавать адаптивный дизайн, имеет важное значение для вашего успеха.
В прошлом создание веб-сайтов, хорошо адаптированных к разным размерам экрана, было роскошью, которую владельцы веб-сайтов должны были просить у разработчика. Однако рост использования смартфонов и планшетов сделал адаптивный дизайн необходимостью в мире разработки программного обеспечения.
Использование медиа-запросов – лучший способ убедиться, что ваш веб-сайт / веб-приложение отображается именно так, как вы хотите, на каждом устройстве.
Понимание адаптивного дизайна
Короче говоря, адаптивный дизайн связан с использованием HTML / CSS для создания макета веб-сайта / веб-приложения, который адаптируется к различным размерам экрана. В HTML / CSS есть несколько разных способов добиться отзывчивости в дизайне веб-сайта:
- Использование единиц rem и em вместо пикселей (px)
- Установка области просмотра / масштаба каждой веб-страницы
- Использование медиа-запросов
Что такое медиа-запросы?
Медиа-запрос – это функция CSS, которая была выпущена в версии CSS3. С введением этой новой функции пользователи CSS получают возможность настраивать отображение веб-страницы в зависимости от высоты, ширины и ориентации устройства / экрана (альбомный или портретный режим).
Медиа-запросы предоставляют основу для однократного создания кода и его многократного использования в вашей программе. Это может показаться не таким полезным, если вы разрабатываете веб-сайт только с тремя веб-страницами, но если вы работаете в компании с сотнями различных веб-страниц, это окажется значительной экономией времени.
Использование медиа-запросов
При использовании медиа-запросов необходимо учитывать несколько разных вещей: структуру, размещение, диапазон и связывание.
Структура медиа-запросов
Пример структуры медиа-запроса
@media only/not media-type and (expression){
/*CSS code*/
}
Общая структура медиа-запроса включает:
- Ключевое слово @media
- Ключевое слово not / only
- Тип носителя (который может быть экранным, печатным или речевым)
- Ключевое слово «и»
- Уникальное выражение в круглых скобках
- Код CSS заключен в пару открытых и закрытых фигурных скобок.
Пример медиа-запроса с единственным ключевым словом
@media only screen and (max-width: 450px){
body{
background-color: blue;
}
}
В приведенном выше примере стиль CSS (в частности, синий цвет фона) применяется только к экранам устройств с шириной 450 пикселей и меньше, то есть в основном к смартфонам. Ключевое слово only можно заменить ключевым словом not, и тогда стили CSS в медиа-запросе выше будут применяться только к печати и речи.
Однако по умолчанию общее объявление медиа-запроса применяется ко всем трем типам медиа, поэтому нет необходимости указывать тип медиа, если цель не состоит в том, чтобы исключить один или несколько из них.
Пример медиа-запроса по умолчанию
/*design for smartphones*/
@media(max-width: 450px){
body{
background-color: blue;
}
}
Размещение медиа-запросов
Медиа-запрос – это свойство CSS; поэтому его можно использовать только в пределах языка стилей. Есть три разных способа включить CSS в ваш код; однако только два из этих методов обеспечивают практический способ включения медиа-запросов в ваши программы – внутренний или внешний CSS.
Внутренний метод включает добавление тега <style> к тегу <head> файла HTML и создание медиа-запроса в параметрах тега <style>.
Внешний метод включает создание медиа-запроса во внешнем файле CSS и его привязку к вашему HTML-файлу с помощью тега <link>.
Диапазон медиа-запросов
Независимо от того, используются ли медиа-запросы через внутренний или внешний CSS, есть один важный аспект языка стилей, который может отрицательно повлиять на работу медиа-запроса. В CSS есть правило приоритета. При использовании селектора CSS или, в данном случае, медиа-запроса, каждый новый медиа-запрос, добавляемый в файл CSS, переопределяет (или имеет приоритет над) предыдущий.
Код мультимедийного запроса по умолчанию, который у нас есть выше, предназначен для смартфонов (шириной 450 пикселей и ниже), поэтому, если вы хотите установить другой фон для планшетов, вы можете подумать, что можете просто добавить следующий код в свой уже существующий файл CSS.
Пример запроса на планшетный компьютер
/* design for tablets */
@media(max-width: 800px){
body{
background-color: red;
}
}
Единственная проблема заключается в том, что из-за порядка приоритета планшеты будут иметь красный цвет фона, а смартфоны теперь также будут иметь красный цвет фона, потому что 450 пикселей и ниже меньше 800 пикселей.
Один из способов решить эту небольшую проблему – добавить медиа-запросы для планшетов перед запросами для смартфонов; последнее переопределит первое, и теперь у вас будут смартфоны с синим цветом фона и планшеты с красным цветом фона.
Однако есть лучший способ создать отдельные стили для смартфонов и планшетов, не беспокоясь о порядке приоритета. Это функция медиа-запросов, известная как спецификация диапазона, где разработчик может создать медиа-запрос с максимальной и минимальной шириной (диапазоном).
Запрос на планшетный компьютер с примером диапазона
/* design for tablets */
@media(max-width: 800px) and (min-width:451){
body{
background-color: red;
}
}
В приведенном выше примере размещение медиа-запросов в таблице стилей становится неактуальным, поскольку дизайн планшетов и смартфонов нацелен на две отдельные коллекции ширины.
Связывание медиа-запросов
Если вы не хотите встраивать медиа-запросы в свой код CSS, вы можете использовать альтернативный метод. Этот метод включает использование медиа-запросов в теге <link> HTML-файла, поэтому вместо одной большой таблицы стилей, содержащей настройки стиля для смартфонов, планшетов и компьютеров, вы можете использовать три отдельных CSS-файла и создавать медиа-запросы в тег <link>.
Тег <link> – это HTML-элемент, который используется для импорта стилей CSS из внешней таблицы стилей. Этот тег имеет медиа-свойство, которое работает так же, как медиа-запрос в CSS.
Использование медиа-запросов в примере тега ссылки
<!-- main stylesheet -->
<link rel="stylesheet" href="main.css">
<!-- tablet stylesheet -->
<link rel="stylesheet" media="(max-width:800px) and (min-width:451px)"
href="tablet.css">
<!-- smartphone stylesheet -->
<link rel="stylesheet" media="(max-width:450px)" href="smartphone.css">
Приведенный выше код следует поместить в тег <head> вашего HTML-файла. Теперь все, что вам нужно сделать, это создать три отдельных файла CSS с именами main.css, tablet.css и smartphone.css, а затем создать конкретный дизайн, который вам нужен для каждого устройства.
Стиль в основном файле будет применяться ко всем экранам шириной более 800 пикселей, стиль в файле планшета будет применяться ко всем экранам с шириной от 450 до 801 пикселей, а стиль в файле смартфона будет применяться ко всем экранам ниже. 451px.
Теперь у вас есть инструменты для создания адаптивного дизайна
Если вы дочитали эту статью до конца, то смогли узнать, что такое адаптивный дизайн и почему он полезен. Теперь вы можете идентифицировать и использовать медиа-запросы в файлах CSS и HTML. Кроме того, вы познакомились с порядком приоритета в CSS и увидели, как он может повлиять на работу ваших медиа-запросов.
Кредит изображения: негативное пространство / Pexels