Podejście nr 2 działa lepiej dla mnie.
Kiedy byłem nowicjuszem, używałem Podejście nr 1 - Piszę razem moje zapytania o media (na dole mojego arkusza stylów lub w innym pliku).
.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 { ... }
}
Takie podejście ma kilka wad. Bazując na moim doświadczeniu, najbardziej godnym uwagi jest to, że konserwacja jest trudna. łatwość konserwacji jest trudna. Główny powód: logika .news-item
jest rozłożona na wiele niepowiązanych linii CSS.
Później, naturalnie, postanowiłem zachować powiązane style. Podejście nr 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 */
Jednakże w tym podejściu, powtarzając mediów odpytuje max-width
wartości wszystko wokół nie wygląda na tyle utrzymaniu. Rozwiązałem ten problem za pomocą wstępnego procesora CSS (takiego jak SASS), który pozwala mi zastąpić wszystkie zmienne i zdefiniować je raz.
Aby zwiększyć łatwość obsługi i sprawić, aby te definicje były o wiele bardziej eleganckie, zacząłem używać abstrakcji w górnej części zapytań o media.
Jeśli jesteś zainteresowany więcej informacji, proszę read on my blog post :-)
Jestem pewien, że czytałem gdzieś, że takie podejście jest dużo wolniejszy niż posiadające zapytań o media w arkuszu stylów. – SpaceBeers