Jak nie nadużywać media query?
Poznaliśmy już viewport, poznaliśmy media query, ale co zrobić w przypadku dużych projektów? Layouty poszczególnych podstron mogą znacząco się różnić, co może spowodować bardzo dużą ilość breakpointów w media query. Jak więc można ograniczyć ilość breakpointów?
Nie powtarzaj zbędnych deklaracji
Przede wszystkim musisz pamiętać o jednej rzeczy. Przyjrzyjmy się poniższemu fragmentowi:
1 2 3 4 5 6 7 8 9101112 | @media(max-width:600px){p{font-size:14px;}}@media(max-width:400px){p{font-size:14px;color:#ff0;}} |
---|---|
Zauważ, że warunek w pierwszym zapisie media query ma tylko zapis dotyczący maksymalnej szerokości. Nie posiada on minimalnej wartości, więc poniżej600px
nie zostanie on “wyłączony”.
Dzięki temu w drugim media query nie musisz ponownie zapisywać wartości, które zostały dopisane w media query z warunkiem o wyższej wartości. Możesz usunąć linijkę dotyczącą rozmiaru czcionki, a ona zostanie niezmiennie ustawiona na14px
na ekranach o szerokości600px
i poniżej.
Użycie właściwości max-width
Przyjrzyjmy się innemu przypadkowi, który również ograniczy ilość kodu który musimy napisać:
12345678 | .container{width:1024px;margin:0auto;}@mediaalland(max-width:1100px){width:95%;} |
---|---|
Powyższy kod ustala nam szerokość elementu.container
na1024px
i środkuje nam element w poziomie. Mamy więc dostępny kontener, który jest zawsze wyśrodkowany.
Poniżej szerokości ekranu równej1100px
ustawiamy szerokość na95%
szerokości ekranu. Nie trzeba jednak tego robić. Możemy tu zupełnie pominąć drugie media query. W jaki sposób?
Musimy użyć do tego właściwościmax-width
. Powyższy kod możemy więc zapisać w taki sposób:
12345 | .container{max-width:1024px;width:95%;margin:0auto;} |
---|---|
Powyższy kod zadziała podobnie jak poprzednia wersja z media query. Przeglądarka najpierw obliczy ile w pikselach będzie wynosić95%
szerokości dla tego elementu. Jeśli ta wartość będzie mniejsza niż1024px
to użyje właśnie jej nadając szerokość elementowi.container
. Jeśli natomiast wartość ta będzie większa to przeglądarka ustawi szerokość dokładnie na1024px
.
W ten właśnie sposób jedną linijką zastąpiliśmy cały zapis media query. Kod nie tylko będzie zajmował mniej miejsca i ograniczy ilość przesyłanych danych, ale także będzie czytelniejszy dla przyszłych programistów.
Zadanie 1
Twoim zadaniem jest dodanie do elementu.container
takich właściwości CSS, aby nie używać zapisu media query.
Celem jest wyśrodkowany element.container
, który będzie miał90%
szerokości ekranu, ale maksymalnie1024px
szerokości.
Podsumowanie
W tej lekcji dowiedziałeś się jak ograniczyć ilość zapisów media query. Możesz ograniczyć je przede wszystkim przez odpowiednie użycie właściwościmax-width
i pamiętanie o działaniu warunków w media query. Sposobów na ograniczenie ilości kodu jest pewnie znacznie więcej, ale przedstawiłem tutaj dwa najpopularniejsze. Zapraszam Cię teraz do następnej lekcji w której stworzymy pełnoprawny grid fluid.