Что означает @media screen и (max-width: 1024px) в CSS?

Я нашел этот фрагмент кода в унаследованном мной CSS-файле, но не могу понять из него:

@media screen and (max-width: 1024px){
    img.bg {
        left: 50%;
        margin-left: -512px; }
}

В частности, что происходит в первой строке?


person Yarin    schedule 15.11.2010    source источник


Ответы (9)


Это медиа-запрос. Это предотвращает запуск CSS внутри него, если браузер не пройдет тесты, которые он содержит.

Тесты в этом медиа-запросе:

  1. @media screen - Браузер идентифицирует себя как находящийся в категории «экран». Это примерно означает, что браузер считает себя классом настольных компьютеров - в отличие, например, от более старый браузер мобильного телефона (обратите внимание, что iPhone и другие браузеры смартфонов действительно идентифицируют себя как находящиеся в категории экранов) или программу чтения с экрана - и что он отображает страницу на экране, а не распечатать ее.

  2. max-width: 1024px - ширина окна браузера (включая полосу прокрутки) не более 1024 пикселей. (пиксели CSS, а не пиксели устройства.)

Этот второй тест предполагает, что это предназначено для ограничения CSS для iPad, iPhone и подобных устройств (поскольку некоторые старые браузеры не поддерживают max-width в медиа-запросах, а многие браузеры для настольных ПК работают с шириной более 1024 пикселей).

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

Вот спецификация Media Queries, она довольно удобочитаема:

person Paul D. Waite    schedule 15.11.2010
comment
если ширина моего экрана превышает 1200 пикселей, как указать в @media screen - person sanoj lawrence; 06.04.2015
comment
вы можете просто использовать (min-width: 1200px) вместо max-width, или вы можете просто использовать его как обычный CSS без медиа-запроса и использовать `` max-width '', чтобы перезаписать его, когда он переходит на меньшее устройство - person MintWelsh; 16.06.2015
comment
Есть ли способ изменить стиль только на рабочем столе (НЕ на мобильном устройстве) при изменении размера области просмотра? Итак, если я вручную изменил размер своего браузера на «максимальную ширину 720 пикселей», он будет использовать оператор мультимедиа, который обнаруживает вас на настольном компьютере, а не на мобильном устройстве, и, например, у вас теперь ниже 720 пикселей? - person wharfdale; 14.07.2015
comment
@ JordanC26: похоже, вы задаете вопрос, и для этого вам нужна кнопка «Задать вопрос» в правом верхнем углу экрана. Однако, прежде чем использовать это, вы можете определить, что вы подразумеваете под «настольным компьютером» и «мобильным устройством». Microsoft Surface - мобильный или настольный компьютер? Почему? А как насчет будущих устройств, которые еще не были изобретены? - person Paul D. Waite; 14.07.2015

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

http://www.css3.info/preview/media-queries/

person Chris Bentley    schedule 15.11.2010

Он говорит: когда страница отображается на экране с разрешением не более 1024 пикселей в ширину, примените следующее правило.

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

Подробнее см. здесь ..

person Lorenzo    schedule 15.11.2010
comment
Я бы не стал предполагать, что он это знает. - person jcolebrand; 16.11.2010

В моем случае я хотел разместить свой логотип по центру веб-сайта, когда в браузере есть 800px или меньше, тогда я сделал это с помощью тега @media:

@media screen and (max-width: 800px) {
  #logo {
    float: none;
    margin: 0;
    text-align: center;
    display: block;
    width: auto;
  }
}

Это сработало для меня, надеюсь, кто-нибудь найдет это решение полезным. :) Для получения дополнительной информации см. это.

person yehanny    schedule 20.05.2014

Это Media Queries. Это позволяет вам применять часть правил CSS только к определенным устройствам в определенной конфигурации.

person Crozin    schedule 15.11.2010
comment
Я изменил вашу ссылку на хеш-ссылку - ›w3.org/TR/css3- mediaqueries / # media0 вместо сюда - ›w3.org/TR/css3 -медиазапросы - person jcolebrand; 16.11.2010

Это означает, что если размер экрана 1024, то применяются только правила ниже CSS.

person Kumar Nitesh    schedule 08.01.2013

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

max-width - ваш максимальный предел CSS до этой ширины.

person Anup    schedule 19.02.2013

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

В Wordpress Twentysixteen я хотел, чтобы мой слоган отображался как на мобильных, так и на настольных компьютерах, поэтому я поместил его в свою дочернюю тему style.css

@media screen and (max-width:59em){
    p.site-description {
        display:    block;
    }
}
person MattB    schedule 09.03.2016

Он нацелен на некоторую указанную функцию для выполнения некоторых других кодов ...

Например:

@media all and (max-width: 600px) {
  .navigation {
    -webkit-flex-flow: column wrap;
    flex-flow: column wrap;
    padding: 0;

  }

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

person Shahin Ghasemi    schedule 06.04.2017