Подход №2 работает лучше для меня.
Когда я был новичком, я использовал Подход № 1 - Я писал свои медиа-запросы вместе (внизу моей таблицы стилей или в другом файле).
.header { ... }
.news-item { ... }
.footer { ... }
/**
* ...
*
* bla bla, imagine a huge amount of styles here
*
* ...
*/
/** All style tweaks for screens < 1024px */
@media screen and (max-width: 1024px) {
.header { ... }
.news-item { ... }
}
Этот подход имеет несколько недостатков. Основываясь на моем опыте, наиболее примечательным является то, что ремонтопригодность - это жесткий. Основная причина: логика .news-item
распространяется на несколько несвязанных линий CSS.
Позже, естественно, я решил сохранить связанные стили вместе. Подход № 2:
/** Header's styles and media queries */
.header {
...
}
@media screen and (max-width: 1024px) {
.header { ... }
}
@media screen and (max-width: 720px) {
.header { ... }
}
/** News-item's styles and media queries */
.news-item {
...
}
@media screen and (max-width: 1024px) {
.news-item { ... }
}
@media screen and (max-width: 720px) {
.news-item { ... }
}
/** ... and so on */
Однако, при таком подходе, повторяя медиазапросы max-width
значения все вокруг не выглядит достаточно ремонтопригодны. Я решил эту проблему, используя предварительный процессор CSS (например, SASS), который позволяет мне заменить все их на переменные и определить их один раз.
Чтобы повысить удобство обслуживания и сделать эти определения более элегантными, я начал использовать абстракцию поверх медиа-запросов.
Если вы заинтересованы в более подробной информации, пожалуйста, read on my blog post :-)
Я уверен, что я где-то читал, что такой подход намного медленнее, чем наличие запросов средств массовой информации в таблице стилей. – SpaceBeers