Перейти к содержимому

Как отменить свойство css в медиа запросе

  • автор:

Можно ли отменить предыдущее значение css?

SmthTo

В данном контексте — да, надо перезаписывать width. Например, width: unset/initial.

Либо строить иначе CSS, чтобы не было иерархического наследования свойств.

Решения вопроса 2

rockfeeler

Антон Усачев @rockfeeler
Фронтендер, дизайнер, верстальщик-перфекционист

Не уверен на 100%, но кажется, что значение initial может помочь.

@media screen and (max-width: 600px) < div < width: initial; >>

Ответ написан более трёх лет назад

karp

initial поставит 100%

karp

Надо понять зачем нужно

/* в другом файле */ div

И либо убрать это, либо завернуть в другой медиа запрос.
Ответ написан более трёх лет назад

php666

Северное Сияние @php666 Автор вопроса

Надо понять зачем нужно

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

Но на media нужно вернуть вертикальным элементам горизонтальный вид.

karp

Северное Сияние, без кода не понятно. Я бы яввно укакзал значение.
Как вариант обернуть эти блоки в какой-то контейнер, задать ширину этому контейнеру, тогда сработает unset.

Как отменить внутренние отступы при медиа запросе

Специфичность селектора инпута выше у кода над медиазапросом. Медиазапрос не повышает «силу перебивания» свойств, это нужно делать самостоятельно:

.page9 < min-height: 469px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: center; -ms-flex-align: center; align-items: center; >.page9 .page9-logo < padding-top: 109px; >.page9 .page9-logo > img < max-width: 94px; max-height: 85px; >.page9 .page9-title < padding-bottom: 39px; padding-bottom: 35px; >.page9 .page9-form < display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; >.page9 .page9-form > input[type=text] < border: 1px solid #d3d7d9; max-width: 400px; max-height: 69px; padding: 28px 228px 24px 28px; margin-right: 8px; >.page9 .page9-form > input[type=submit] < max-width: 126px; max-height: 69px; padding: 26px 45px 26px 45px; >@media (max-width: 220px) < .page9 .page9-title >p < word-break: break-all; >.page9 .page9-form > input[type=text] < /* >
 

Stay on the saddle!

Если нужно и для кнопки, то можно писать например input[type] или как-то иначе усилить при сохранении универсальности.

Медиазапросы — CSS: Адаптивность сайта

Одним из самых важных инструментов при создании адаптивной вёрстки является использование медиазапросов. Медиазапросы — специальные условные конструкции, которые позволяют применять стили только для определённых устройств.

Медиазапросы записываются следующим образом:

В качестве условия могут выступать различные значения и константы. Зачастую используются следующие конструкции:

Ориентация экрана

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

  1. landscape . Условие выполнится для устройств с горизонтальной ориентацией экрана. Горизонтальная — ориентация, при которой ширина viewport больше его высоты.
  2. portrait . Условие выполнится для устройств с вертикальной ориентацией экрана. Вертикальная — ориентация, при которой высота viewport больше его ширины.
 @media (orientation: landscape)  /* При горизонтальной ориентации фоновым цветом сайта будет белый */ body  background: #FFF; > > @media (orientation: portrait)  /* При вертикальной ориентации фоновым цветом сайта будет чёрный */ body  background: #000; > >  

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

При использовании медиазапросов мы также можем исходить из ширины или высоты viewport. Для этого используются знакомые нам по обычным CSS-правилам условия width, min-width, max-width для ширины и height, min-height, max-height для высоты.

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

 /* Здесь будут все стили для устройств с viewport больше 1400 пикселей. */ @media (max-width: 1400px)  /* Стили для устройств, у которых ширина viewport меньше или равно 1400 пикселей, но больше 990 пикселей. Эти стили будут использованы для планшетов и ноутбуков с низким разрешением */ > @media (max-width: 990px)  /* Стили для устройств, у которых ширина viewport меньше или равно 990 пикселей, но больше 770 пикселей. Эти стили подойдут для некоторых мобильных устройств и планшетов */ > @media (max-width: 770px)  /* Стили для устройств, у которых ширина viewport меньше или равно 770 пикселей. Это множество мобильных устройств */ >  

Обратите внимание на порядок написания свойств. Помните, что CSS является каскадной таблицей, поэтому порядок стилей необходимо контролировать. В данном случае к элементу вначале будет применён стиль по умолчанию, который не находится в медиазапросе, затем поочерёдно будут применяться стили в зависимости от значений в условии медиазапроса.

Например, при ширине viewport 770 пикселей для элемента стили применятся в следующем порядке:

  • Стили по умолчанию.
  • Стили для условия медиазапроса max-width: 1400px .
  • Стили для условия медиазапроса max-width: 990px .
  • Стили для условия медиазапроса max-width: 770px .

Подход, описанный выше называется Desktop First. Мы вначале пишем стили для больших мониторов, а в последствии, используя медиазапросы, дописываем стили для всё более маленьких значений viewport. Его характерная черта в медиазапросах — использование конструкции max-width в качестве условия.

В противовес Desktop First существует подход Mobile First. Его особенностью является то, что вначале пишутся стили под мобильные устройства, а затем, используя медиазапросы, пишутся стили для больших размеров viewport. Если в Desktop First основной конструкцией являлось использование max-width, то в Mobile First используется min-width.

Стили, написанные с использованием подхода Mobile First выглядят следующим образом:

 /* Здесь будут все стили для мобильных устройств с viewport меньше 770 пикселей. */ @media (min-width: 770px)  /* Стили для устройств, у которых ширина viewport больше или равно 770 пикселей */ > @media (min-width: 990px)  /* Стили для устройств, у которых ширина viewport больше или равно 990 пикселей, но меньше 1400 пикселей. */ > @media (min-width: 1400px)  /* Стили для устройств, у которых ширина viewport больше или равно 1400 пикселей */ >  

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

Условия внутри медиазапросов можно комбинировать. Для этого существует три логических оператора:

  • Логическое «И». Означает, что несколько условий должны быть выполнены для того, чтобы CSS-стили применились к элементу. Для использования логического «И» используется ключевое слово and . Сделаем условие, которое проверяет, что экран устройства находится в портретной (вертикальной) ориентации и имеет ширину viewport не меньше 600 пикселей:
 @media (orientation: portrait) and (min-width: 600px)  .container  /* Для устройств с портретной ориентацией И шириной viewport не менее 600 пикселей сделать элементы с классом container шириной в 100 процентов */ width: 100%; > >  
  • Логическое «ИЛИ». Свойства применятся в том случае, если хотя бы одно из условий будет выполнено. Условия для этого отделяются запятыми. Возьмём прошлый пример и применим его с использованием «ИЛИ»:
 @media (orientation: portrait), (min-width: 600px)  .container  /* Для устройств с портретной ориентацией ИЛИ шириной viewport не менее 600 пикселей сделать элементы с классом container шириной в 100 процентов */ width: 100%; > >  
  • Логическое «НЕ». Свойства применятся в том случае, если условие не выполняется. Используется ключевое слово not . Реальное использование этого оператора не велико, в виду сложности и не интуитивности происходящего. В связи с этим советую воздержаться в первое время от использования ключевого слова not .
 @media not all and (orientation: landscape)  .container  /* Для устройств с портретной ориентацией (условие выглядит как «НЕ горизонтальная») сделать элементы с классом container шириной в 100 процентов */ width: 100%; > >  

Использование медиазапросов при подключении CSS

Медиазапросы возможно писать не только внутри CSS-файла, но и использовать их в HTML при подключении файла стилей. В этом случае медиазапрос указывается в атрибуте media .

lang=«ru»> charset=«UTF-8»> name=«viewport» content=«width=device-width, initial-scale=1.0»> Подключение CSS файлов rel=«stylesheet» href=«style.css»> rel=«stylesheet» media=«screen and (min-width: 750px)» href=«style750px.css»>

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

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

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

Медиазапросы - стили для разных устройств

Алгоритм применения стилей следующий:

  • Разработчик описывает набор медиа-запросов и CSS-правил внутри них.
  • Браузер отслеживает изменение размера вьюпорта.
  • Браузер применяет CSS-правила из медиа-запросов подходящих под текущий размер вьюпорта.

То есть медиа-запросы это инструкции вида: «когда страницу открыли на десктопе, я хочу, чтобы цвет текста был красным, а при открытии на телефоне — зелёным».

Синтаксис​

@media media-type and (media-feature)   /*  * Набор CSS-правил, которые нужно применить к документу,  * если условие проверки медиатипа и выражения истинно  */ > 

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

Например, если необходимо сделать фон оранжевым при ширине вьюпорта 900px и шире, необходимо записать следующий медиа-запрос.

@media screen and (min-width: 900px)   body   background-color: orange; > > 

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

Перейдите на страницу примера кликнув в верхнем правом углу редактора по Edit on Codepen и изменяйте ширину области с результатом. Цвет фона будет изменяться в зависимости от ширины вьюпорта, укзанной в медиа-запросах.

Условие проверки может быть настолько сложным или простым, насколько этого требует ситуация. В большинстве случаев достаточно указать медиа-тип устройства (чаще всего screen ), и проверить только ширину вьюпорта.

/*  Этот медиа-запрос применится во время печати документа. */ @media print   /* . */ >  /*  Это медиа-запрос применится при ширине вьюпорта более 400px.  */ @media screen and (min-width: 400px)   /* . */ >  /*  Тип screen можно не указывать, если стили пишутся только для экранов.  */ @media (min-width: 400px)   /* . */ > 

Медиа-типы​

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

  • all — если не указать тип носителя, по умолчанию будет использовано это значение, которое означает любое устройство.
  • print — соответствует принтерам и устройствам, предназначенным для воспроизведения печатного варианта, например веб-браузеру, отображающему документ в режиме «Предварительный просмотр».
  • screen — описывает устройства с физическим экраном: смартфоны, планшеты, мониторы, телевизоры и т. д. То есть всё, что не охватывает тип print .

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

Две наиболее часто используемые медиа-функции, которые позволяют определять ширину вьюпорта браузера — min-width и max-width . Указывается минимальная (min-width) или максимальная (max-width) допустимые ширины вьюпорта, при которых применяются правила из медиа-запросов.

/* Применится когда ширина вьюпорта больше чем 900px */ @media (min-width: 900px)   body   background-color: green; > >  /* Применится когда ширина вьюпорта меньше чем 600px */ @media (max-width: 600px)   body   background-color: yellow; > > 

Если представить ширину вьюпорта как прямую от 0 до бесконечности, то мы описываем промежуток, на котором необходимо применить какие-то стили.

Иллюстрация промежутков до 400 и после 900 пикселей

Размер вьюпорта, при котором вся вёрстка или её отдельные части изменяют свои стили, то есть меняется дизайн называется точкой перелома (breakpoint).

При изменении ширины вьюпорта в примере, до 600px фон будет желтого цвета, а после 900px — зелёного. В промежутке от 601px до 899px — цвет белый, значение указанное по умолчанию, потому что ни один медиа-запрос не подойдёт.

А как описать промежуток, например, от 600px до 900px ? Необходимо использовать логические операторы для составных медиа-функций.

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

Медиа-тип и медиа-функции могут быть разделены необязательными логическими операторами not , and и only — значение по умолчанию. Полный синтаксис медиа-запроса выглядит следующим образом.

@media only|not media-type only|and|not (media-feature)   /*  Набор CSS-правил, которые нужно применить к документу,  если условие проверки медиатипа и выражения истинно  */ > 

Оператор and ​

Оператор and (буквально «И») используется не только между типом носителя и медиа-условием, но и для связывания нескольких медиа-функций с проверками значений.

@media screen and (min-width: 400px) and (max-width: 800px)   body   background-color: red; > > 

Такой медиа-запрос выполнится только если веб-страница открыта на экране, а ширина вьюпорта находится в диапазоне от 400px до 800px .

Иллюстрация отрезка от 400 до 800 пикселей

Оператор , ​

Оператор , (буквально «ИЛИ») позволяет указать набор выражений, при выполнении хотябы одного из которых, выполнится медиа-запрос.

Например, необходимо применить стили в промежутке до 600px или после 900px .

@media (max-width: 600px), (min-width: 900px)   body   background-color: orange; > > 

Иллюстрация промежутков до 600 или после 900 пикселей

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

@media (max-width: 600px)   body   background-color: orange; > >  @media (min-width: 900px)   body   background-color: orange; > > 

В будущих редакциях CSS, оператор , будет заменён на оператор or .

Оператор not ​

Оператор not (буквально «НЕ») позволяет сделать отрицание, то есть отменить медиа-запрос. Ключевое слово not добавляется в начало медиазапроса и применяется ко всему запросу целиком. Используется очень редко, в каких-то специфических случаях.

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

@media not print   /* . */ > 

При использовании оператора not обязательно должен быть указан тип носителя, потому что по умолчанию для него будет установлено значение all и выражение not all будет читаться буквально как «не все», и медиа-запрос не выполнится никогда.

/* Никогда не выполнится */ @media not (max-width: 500px)   /* . */ >  /* Выполнится если ширина будет больше 500px. */ @media not screen and (max-width: 500px)   body   background-color: tomato; > >  /*  В таком случае, для простоты чтения кода,  лучше использовать min-width: 500px. */ @media (min-width: 500px)   body   background-color: tomato; > > 

Переопределение стилей​

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

/* Базовый стиль */ body   background-color: #fff; >  /* При 900px и шире переопределяем фон */ @media screen and (min-width: 900px)   body   background-color: #388e3c; > > 

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

Переоределение стилей в медиа-запросах

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

Так в инструментах разработчика будут выглядеть стили элемента при ширине вьюпорта больше чем 900px .

Глубокое переопределение стилей в медиа-запросах

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *