Css написание медиа запросов: CSS медиа-запросы (media queries) — ИТ Шеф

Содержание

Медиа-запросы в адаптивном дизайне 2018 / Хабр

В июле 2010 года я написала статью «Как использовать CSS3 медиа-запросы для создания мобильной версии вашего сайта» для журнала Smashing. Спустя почти восемь лет эта статья по-прежнему очень популярна. Я решила вернуться к этой теме, поскольку теперь у нас есть такие методы компоновки, как Flexbox и CSS Grid. В этой статье мы рассмотрим современные методы использования медиа-запросов в адаптивном дизайне, а также рассмотрим, что может произойти в будущем.

Нужны ли вообще медиа-запросы?

Первое, что нужно сделать перед тем как написать медиа-запрос в 2018 году — спросить себя, нужно ли вообще его использовать. При построении сеток с использованием float мы создаем гибкую сетку, вычисляя размер наших колонок используя проценты. Эти проценты вычисляются методом Этана Маркотт (Ethan Marcotte), описанным в статье Fluid Grids. Этот метод лег в основу техники, которую мы теперь знаем как «отзывчивый дизайн». Чтобы изменить размер или пропорции колонок, мы должны добавить контрольную точку используя медиа-запрос и переопределить их. В работе с процентами других возможностей нет — колонки всегда будут равны проценту от контейнера, в котором они находятся, будь то широкий или узкий контейнер.

Flexbox, CSS Grid и многоколоночная верстка (Multi-column layout) адаптивны по умолчанию, так как их спецификации были написаны в мире, где адаптивный дизайн и кросс-девайсность уже стали реальностью. Это значит, что они уже включают в себя множество функций, которые позволяют легко создавать адаптивные сетки.

В этом CodePen приведены примеры того, как Multi-column, Flexbox и Grid меняют размеры и положение в соответствии с доступным пространством. Здесь нет медиа-запросов и совсем немного CSS.

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

Допустим flex-basis для наших элементов составляет 250px. Если нет места для двух 250px колонок, они будут выстраиваться в колонку, а если задать положительный

flex-grow они еще будут заполнять все доступное пространство.

.media {
    display: flex;
    flex-wrap: wrap;
}
.media > * {
    flex: 1 1 250px;
}

Когда есть достаточно места для отображения двух колонок


Контент в одну колонку

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

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

Только в том случае, если такого поведения сеток вам недостаточно, стоит задуматься о применении медиа-запросов. В связке медиа-запросов и CSS Grid вы можете полностью переопределить сетку. Медиа-запросы и CSS Grid отлично дополняют друг друга. Всего одной строкой CSS мы можем переопределить, как и где элементы будут расположены в сетке без изменения разметки. Начнем с одноколоночной сетки для узкой ширины.

grid {
    display: grid;
    grid-gap: 1em;
    grid-template-columns: 1fr;
}

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

@media (min-width: 40em) {
    .grid {
        grid-template-columns: 2fr 1fr;
    }
    header,
    footer {
        grid-column: 1 / 3;
    }
}

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

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


Медиа-запросы — лучшие практики

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

НЕ ОРИЕНТИРУЙТЕСЬ НА УСТРОЙСТВА, ДОБАВЬТЕ КОНТРОЛЬНЫЕ ТОЧКИ КОГДА СЧИТАЕТЕ, ЧТО СЕТКУ НАДО ПЕРЕСТРОИТЬ

Когда мы впервые начали использовать медиа-запросы, существовало очень мало устройств, о которых стоило бы беспокоиться. Большинство людей волновал iPhone. Однако, в течение нескольких месяцев, рынок устройств и разнообразие их размеров быстро расширился. Нет смысла ориентироваться на отдельные устройства.

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

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

СУЩЕСТВУЮТ НЕ ТОЛЬКО ПИКСЕЛИ

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

em вместо пикселей, это обезопасит от случаев, когда у пользователя размер шрифта больше ожидаемого.

БУДЬТЕ ОСОБЕННО ОСТОРОЖНЫ МЕНЯЯ ПОРЯДОК FLEX И CSS GRID ЭЛЕМЕНТОВ

Дразнящая возможность CSS Grid и, в меньшей степени Flexbox — возможность изменить порядок элементов на разных контрольных точках. Этот функционал может обеспечить отличный UX для пользователей, пользующихся клавиатурой и мышью. Но для пользователей, которые используют свой палец для управления, это может создать значительные неудобства. В частности, это пользователи с плохим зрением. Хоть они и используют скринридер, но все равно могут видеть многое из того, что находится на экране. Также это касается пользователей, которые перемещаются на экране с помощью клавиатуры или какого-либо устройства отличного от мыши или пальца.

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

Примечание. Для получения дополнительной информации прочитайте статью «Flexbox & the keyboard navigation disconnect».

НЕ ЗАБУДЬТЕ ПРО ВЕРТИКАЛЬНЫЕ МЕДИА-ЗАПРОСЫ

Большинство разработчиков ассоциируют медиа-запросы с шириной устройств. Главное — обеспечить достаточно горизонтального пространства для отображения нескольких столбцов контента. Но медиа-запросы можно использовать и для проверки доступной высоты.

Вертикальные медиа-запросы могут быть полезными, например, когда нужно убедиться, что экран имеет достаточно высоты для отображения и просмотра контента в несколько колонок рядом без необходимости прокрутки вверх и вниз. В приведенном ниже CSS, многоколоночная сетка будет перестраиваться только в том случае, если достаточно места для двух колонок по 15em. Я добавила медиа-запрос с

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

@media (min-height: 500px) {
  section {
    column-width: 15em;
  }
}

Медиа-запросы Level 4: Что ожидать?

Медиа-запросы, которые мы используем для создания адаптивного дизайна пришли к нам из спецификации CSS Level 3. Новая спецификация медиа-запросов Level 4 разрабатывается рабочей группой CSS. Эта спецификация добавит новый функционал, и произойдут некоторые изменения в синтаксисе. Не все еще реализовано и не все работает даже в современных браузерах, но уже стоит обратить внимание на новую спецификацию и изучить, что же может произойти в ближайшее время. Это поможет нам быть готовыми создавать пользовательские интерфейсы, которые хорошо работают с широким спектром устройств и разнообразием форматов вывода.

Определяем устройство ввода, а не размер экрана

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

Раньше мы могли выяснить только размер экрана пользователя, сейчас ситуация несколько иная. Теперь мы можем определить может ли пользователь наводить на элементы, а так же тип его указателя, будь то палец или мышь. Свойства pointer и hover помогут улучшить UX для разных типов пользователей и собирать более точные статистики. Приведенные ниже примеры будут работать в текущих версиях Chrome, Safari и Edge. Вы можете проверить, Can I Use для полного списка поддержки браузерами.

Нижеприведенный CodePen вы можете протестировать с любого мобильного браузера. Свойство content выведет результат проверки типа указателя, которым вы пользуетесь.

@media (pointer:coarse) {
    .which-pointer::after {
        content: "You have a coarse pointer, are you on a touchscreen device?";    
    } 
}
@media (pointer:fine) {
    .which-pointer::after {
        content: "You have a fine pointer, are you using a mouse or trackpad?";    
    } 
}

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

@media (hover) {
    .can-i-hover::after {
        content: "You look like you can hover.";    
    } 
}
@media  (hover:none) {
    .can-i-hover::after {
        content: "I don't think you can hover.";    
    } 
}

Тестирование поддержки курсора и состояния наведения на iPhone

Протестируйте сами в CodePen.

Существуют также свойства any-pointer и any-hover, которые проверяет все доступные возможности любого планшета и смартфона к указателям и наведениям. Следует проявлять большую осторожность при использовании этих свойств, поскольку переход пользователя с основного устройства указания может привести к плохому UX. Спецификация гласит:

«Проектирование страницы, основываясь на any-hover и any-pointer, вероятно, приведет к плохому UX, потому что свойства указывают только последний из доступных механизмов ввода. Тем не менее, авторы могут использовать эти свойства, чтобы определить функциональность, которую они хотят предоставить, на основе любых дополнительных указывающих устройств, доступных пользователю».

Firefox — браузер отстающий от реализации данного функционала. Вот ссылка на этот баг. Надеюсь, вскоре мы увидим полную поддержку.

Переполнение контента и Display Quality Media Features

Пока еще не реализованное свойство overflow-block, часть Display Quality Media Features, позволит проверить то, как поведет себя блок при переполнении контентом.

Медиа-запросы должны быть разными когда происходит переполнение контента. Стандартный способ решения данной проблемы для планшетов и десктопа — добавление прокрутки. Но некоторые устройства, например, электронный рекламный щит не могут переполняться. Так же у нас есть, Paged Media, если вы выводите контент для печати,.

Есть еще одно полезное свойство, которое поможет определить на каком устройстве отображается контент — overflow: block. Например, вы хотите проверить Paged Media ли контент.

@media (overflow-block: paged) {
}

Синтаксические изменения

Медиа-запросы — такие, какими мы их знаем, достаточно объемные в написании. Изменения синтаксиса медиа-запросов Level 4 поможет с этим. Часто мы используем диапазоны, например между 40em и 59em.

@media (min-width: 40em) and (max-width: 59em) {
}

Мы могли бы записать как диапазон в таком виде:

@media (40em <= width <= 59em ) {
}

Во втором примере кода мы ставим условие, что ширина должна быть больше или равна 40em, а также меньше или равна 59em. Это намного проще и короче, нежели префиксы с минимальной и максимальной шириной первого примера. По прежнему можно будет использовать старый синтаксис. Тем не менее, такая менее объемная альтернатива кажется очень полезной.

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

  • «7 Habits of Highly Effective Media Queries», Brad Frost
  • «Vertical Media Queries and Wide Sites», Trent Walton
  • «Media Queries 4», Florian Rivoal, dotCSS 2017 (video)
  • «Interaction Media Features and their Potential (for incorrect assumptions)», Patrick H. Lauke, Dev.Opera

Медиа-запросы CSS — описание, специфические особенности использования и рекомендации

Медиа-запросы — это функция CSS, которая позволяет содержимому веб-страницы адаптироваться к разным размерам экрана и разрешениям. Они являются неотъемлемой частью гибкого веб-дизайна и используются для настройки внешнего вида веб-сайтов для нескольких устройств с различным размером экрана. Так, Media Queries — это модуль CSS3, позволяющий преобразовывать контент в такие условия, как разрешение экрана смартфона или компьютера. Стал рекомендованным W3C стандартом в июне 2012 года и активно применяется сегодня в веб-разработке и графическом дизайне.

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

История

Медиа-запросы были впервые обозначены в первоначальном предложении CSS Hocon Wium Lie в 1994 году, но на тот момент не стали частью CSS1. Рекомендация HTML4 от 1997 года показывает пример того, как в будущем могут быть добавлены эти компоненты.

В 2000 году W3C начал работу над Media Queries. Первый публичный рабочий проект для медиа-запросов был опубликован в 2001 году. Спецификация стала рекомендацией W3C в 2012 году после того, как браузеры добавили поддержку.

Как пишутся в CSS медиа-запросы?

Запросы могут быть вставлены в HTML-файл веб-страницы или включены в отдельный файл .CSS, на который она ссылается. Ниже приведено описание и пример медиа-запроса в CSS:

@media screen and (max-width: 768px)

{

header { height: 70px; }

article { font-size: 14px; }

img { max-width: 480px; }

}

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

Как использовать медиа-запросы CSS3?

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

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

  • минимальную ширину устройства;
  • минимальную высоту устройства;
  • соотношение сторон;
  • максимальный индекс цвета;
  • максимальное разрешение;
  • ориентацию экрана.

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

Использование и ошибки

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

Типы носителей

Тип носителя можно объявить в заголовке HTML-документа, используя атрибут «media» внутри элемента <link>. Значение атрибута «media» указывает, на каком устройстве будет отображаться связанный документ. Типы носителей также могут быть объявлены в инструкциях XML-обработки, @import at-rule и @media at-rule. Вид мультимедиа «все» также может использоваться для указания, что таблица стилей применяется ко всем типам носителей.

Что такое CSS?

CSS (Cascading Style Sheet или каскадные таблицы стилей) используется для форматирования макета веб-страниц, определения стилей текста, размеров таблиц и других аспектов веб-содержимого, которые ранее могли быть определены только в HTML-структуре страницы.

CSS помогает веб-разработчикам создавать единый формат для нескольких страниц сайта. Вместо определения вида каждой таблицы и каждого блока текста в HTML стили определяются только один раз в документе CSS. Когда формат определен в каскадной таблице стилей, он может использоваться любой страницей, ссылающейся на файл CSS. Кроме того, CSS упрощает изменение стилей на нескольких страницах одновременно. Например, веб-разработчик может запланировать увеличение размера текста по умолчанию с 10 до 12 pt на пятидесяти страницах веб-сайта. Если при этом все страницы ссылаются на одну и ту же таблицу стилей, размер текста достаточно будет изменить только в таблице, и на всех страницах он окажется нужного размера.

Хотя CSS отлично подходит для создания текстовых стилей, он также полезен для форматирования других аспектов макета веб-страницы. Например, CSS можно использовать для определения заполнения ячеек таблицы, стиля, толщины и цвета границы, а также для заполнения элементов изображения или других объектов. CSS, в сравнении с HTML, предоставляет веб-разработчикам более точный контроль над тем, как будут выглядеть веб-страницы.

Типы мультимедиа-запросов

Типы носителей описывают общую категорию устройства. Хотя веб-сайты обычно разрабатываются с учетом экранов, программист может создавать стили, предназначенные для специальных устройств, таких как принтеры или аудиоредакторы. Например, этот фрагмент CSS-кода предназначен для принтеров: @media print {…}.

Вы также можете настроить таргетинг на несколько устройств. Например, это правило @media использует два медиа-запроса для таргетинга на устройства экрана и печати: @media screen, print {…}.

Медиа-функции CSS

Функции мультимедиа описывают конкретные характеристики пользовательского агента, устройства вывода или среды. Например, вы можете применять определенные стили к широкоформатным мониторам, компьютерам или к устройствам, которые используются в условиях низкой освещенности. В этом примере применяются стили, когда основной механизм ввода пользователя (например, мышь) может зависать над элементами: @media (hover: hover) {…}.

Многие функции мультимедиа — это функции диапазона, что означает, что они могут иметь префикс «min-» или «max-» для выражения ограничений минимального или максимального условия. Например, эта команда будет применять стили только в том случае, если ширина видового экрана браузера равна или меньше 12,450px: @media (max-width: 12450px) {…}.

Если вы создаете запрос функции мультимедиа без указания значения, вложенные стили будут использоваться до тех пор, пока значение функции не равно нулю. Например, этот CSS будет применяться к любому устройству с цветным экраном: @media (цвет) {…}.

Если функция не применяется к устройству, на котором работает браузер, выражения, содержащие эту функцию мультимедиа, всегда являются ложными. Например, стили, вложенные в следующий запрос, никогда не будут использоваться, потому что ни одно речевое устройство не имеет формата экрана: @media speech и (соотношение сторон: 11/5) {…}.

Техническая спецификация

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

Синтаксис запросов к мультимедиа также используется в других контекстах, например, в медиа-атрибуте элемента <source>, который может быть настроен на строку запроса мультимедиа для использования, чтобы определить, следует ли применять этот источник при выборе конкретного изображения для употребления в элементе <picture>.

Метод Window.matchMedia () может использоваться для проверки окна на запросе в медиа. Вы также можете применить функцию MediaQueryList.addListener () для уведомления при изменении состояния запросов. С помощью этой функции ваш сайт или приложение смогут реагировать на изменения конфигурации устройства, ориентации или состояния.

Запросы мультимедиа для вызова стилей

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

Один из них — использование медиа-запросов, которые работают для вызова стилей пользовательского устройства на основе его размеров. В прошлом программисты спорили о том, являются ли медийные запросы наилучшим решением в случае с мобильными устройствами, и эти дебаты по-прежнему продолжаются. Сейчас официально признано, что CSS медиа-запросы (media queries) — это простой и эффективный способ обслуживания различного контента для ряда устройств, и наиболее часто используемые запросы — это те, которые касаются высоты и ширины окна просмотра.

Вызов с использованием внешней таблицы стилей

CSS-стили для медиа-запросов сначала проверяют тип медиафайлов на строку пользовательского агента, прежде чем переходить к проверке физических атрибутов окна просмотра. Они являются объявлением CSS, которое можно вызвать с помощью внешней таблицы стилей. Внешний вызов будет выглядеть так: <link rel = «stylesheet» media = «и (min-width: 320px) и (max-width: 480px)» href = «css/yourstylesheet.css» />.

Прямой же вызов CSS будет выглядеть так:

@media screen and (min-width:320px)

and (max-width:480px){

/*Insert your styles here

}.

Медиа-запросы CSS не являются модульными, а значит, это может затруднить их работу. Запрос элемента похож на медийный запрос, потому что он использует CSS при выполнении определенных условий. Однако эти виды данных основаны на элементах, а не на браузере, которые в настоящее время не поддерживаются в CSS3. Элементные запросы набирают обороты, тем более что они дополняют медиа-запросы CSS. Это означает, что оба могут в конечном итоге работать вместе, чтобы создавать более модульные и гибкие конструкции.

Работа с изображениями

Масштабирование изображений для гибкого дизайна — достаточно простой процесс. Тем не менее, есть несколько проблем, на которые нужно обратить внимание. Речь идет о потере деталей и изображений при сжатии для размещения контента страницы на более мелких устройствах. Чтобы создать масштабируемые изображения, просто добавьте следующий код в таблицу стилей:

img {

max-width: 100%;

}

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

Однако это может быть проблемой, когда дело доходит до производительности сайта, потому что вы по существу доставляете полноразмерный образ на каждое устройство. Для этого нет простого решения, особенно если вы работаете на сайте с устаревшими изображениями. Однако Adaptive Images — это плагин, который может оптимизировать ваши изображения на основе размеров экрана. Адаптивный дизайн на основе медиа-запросов Framework Foundation также позволяет обмениваться изображениями на основе размеров экрана.

При работе с изображениями необходимо использовать SVG, веб-шрифты, веб-тип и CSS.

Как вы пишете запрос CSS Media?

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

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

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

Итак, как вы используете Media Queries на веб-сайте? Вот очень простой пример:

  1. Вы начнете с хорошо структурированного HTML-документа, свободного от любых визуальных стилей (для чего нужен CSS)
  2. В вашем файле CSS вы начнете, как обычно, путем стилизации страницы и установки базовой линии для того, как будет выглядеть веб-сайт. Скажем, вы хотели, чтобы размер шрифта страницы составлял 16 пикселей, вы можете написать этот CSS:

    body {font-size: 16px; }

  3. Теперь вы можете увеличить размер шрифта для больших экранов, которые имеют достаточно недвижимости для этого. Здесь вызывается Media Queries. Вы должны запустить Media Query следующим образом:

    @media и (min-width: 1000px) {}

  4. Это синтаксис медиа-запроса. Он начинается с @media для создания самого медиа-запроса. Затем вы устанавливаете «тип носителя», который в этом случае является «экраном». Это относится к экранам настольных компьютеров, планшетам, телефонам и т. Д. Наконец, вы завершаете Media Query «медиа-функцией». В нашем примере выше, это «mid-width: 1000px». Это означает, что Media Query будет использоваться для дисплеев с минимальной шириной в 1000 пикселей.
  5. После этих элементов Media Query вы добавляете открывающую и закрывающуюся фигурные скобки, похожие на то, что вы делали бы в любом обычном правиле CSS.
  1. Последним шагом к медиа-запросу является добавление правил CSS, которые вы хотите применить, когда это условие выполнено. Вы добавляете эти правила CSS между фигурными фигурными скобками, которые составляют Media Query, например:

    @media screen и (min-width: 1000px) {body {font-size: 20px; }

  2. Когда условия Media Query будут выполнены (окно браузера будет шириной не менее 1000 пикселей), этот стиль CSS вступит в силу, изменив размер шрифта нашего сайта с 16 пикселей, которые мы установили первоначально, на наше новое значение 20 пикселей.

Добавление дополнительных стилей

Вы можете разместить столько CSS-правил в этом медиа-запросе, сколько необходимо, чтобы настроить внешний вид вашего веб-сайта. Например, если вы хотите не только увеличить размер шрифта до 20 пикселей, но и изменить цвет всех абзацев на черный (# 000000), вы можете добавить это:

@media screen и (min-width: 1000px) {body {font-size: 20px; } p {color: # 000000; }}

Добавление дополнительных запросов к мультимедиа

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

@media screen и (min-width: 1000px) {body {font-size: 20px; } p {color: # 000000; {} экран @media и (min-width: 1400px) {body {font-size: 24px; }}

Первые медиа-запросы будут иметь ширину 1000 пикселей, изменив размер шрифта до 20 пикселей. Затем, как только браузер будет выше 1400 пикселей, размер шрифта снова изменится на 24 пикселя. Вы можете добавить столько запросов к материалам, сколько необходимо для вашего конкретного веб-сайта.

Минимальная ширина и максимальная ширина

Обычно существует два способа записи медиапрограмм — с использованием «min-width» или «max-width». До сих пор мы видели «минимальную ширину» в действии. Это приводит к тому, что медиа-запросы вступают в силу после достижения браузером минимальной ширины. Таким образом, запрос, который использует «min-width: 1000px», будет применяться, если браузер имеет ширину не менее 1000 пикселей. Этот стиль Media Query используется, когда вы строите сайт с помощью «мобильного».

Если вы используете «max-width», это работает противоположным образом. Запрос СМИ «max-width: 1000px» будет применяться после того, как браузер упадет ниже этого размера.

Что касается старых браузеров

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

Отредактировано Джереми Жирардом на 1/24/17

7

Медиа-запросы CSS: основы работы | 8HOST.COM