Подтвердить что ты не робот

Есть ли преимущество в объединении css-медиа-запросов вместе?

(на это, возможно, уже был дан ответ - не удалось найти ответ, хотя)

Традиционное переопределение запроса @media имеет тенденцию группировать все переопределения для одного размера/среды в той же группе элементов.

например.

.profile-pic {
    width:600px;
}
.biography {
    font-size: 2em;
}

@media screen and (max-width: 320px) {
    .profile-pic {
        width: 100px;
        float: none;
    }
    .biography {
        font-size: 1.5em;
    }
}

В Sass есть отличный способ написать переопределения запросов @media внутри вложенного объявления, например:

.profile-pic {
width:600px;
  @media screen and (max-width: 320px) {
    width: 100px;
    float: none;
  }
}

.biography {
    font-size: 2em;
  @media screen and (max-width: 320px) {
    font-size: 1.5em;
  }
}

теперь, когда скомпилировано, sass не группирует блоки запросов @media вместе, поэтому вывод заканчивается примерно следующим образом:

.profile-pic {
    width:600px;
}
@media screen and (max-width: 320px) {
  .profile-pic {
    width: 100px;
    float: none;
  }
}

.biography {
    font-size: 2em;
}
@media screen and (max-width: 320px) {
  .biography {
    font-size: 1.5em;
  }
}

Я использовал эту технику для недавнего проекта, и когда вы применяете этот принцип к гораздо более крупному проекту, вы получаете несколько разделов запросов @media, распространяемых по всему вашему css (у меня сейчас около 20).

Мне очень нравится техника sass, так как она упрощает отслеживание потока переопределений (а также упрощает перемещение).

Тем не менее, мне интересно, есть ли недостаток в том, что в CSS есть несколько разделов @media, особенно с точки зрения производительности?

Я пробовал профайлер chrome css, но я не мог видеть ничего конкретного для запросов @media.

(Дополнительная информация о @media в sass на этой странице)

4b9b3361

Ответ 1

Немного поздно для вечеринки, но на основе тестов ниже влияние производительности кажется минимальным. Тест показывает время рендеринга для примерной страницы с 2000 отдельными и комбинированными медиа-запросами соответственно.

http://aaronjensen.github.com/media_query_test/

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

Но в конечном счете, как указано в ссылке ниже:

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

Сообщение в блоге с подробным описанием проблемы: http://sasscast.tumblr.com/post/38673939456/sass-and-media-queries

Ответ 2

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

Поскольку вы используете SASS, эта статья может представлять определенный интерес - http://css-tricks.com/media-queries-sass-3-2-and-codekit/