Projektowanie responsywnej witryny - Zapytania media
- Poprzednia strona Widok siatki RWD
- Następna strona Obrazy RWD
Co to jest media query?
Media query to technologia CSS3 wprowadzona w CSS.
jest używany tylko wtedy, gdy spełnia określone warunki @media
Reguły do odwoływania się do bloków atrybutów CSS.
Przykład
Jeśli szerokość okna przeglądarki wynosi 600px lub mniej, kolor tła powinien być jasnoniebieski:
@media only screen and (max-width: 600px) { body { background-color: lightblue; } }
Dodaj punkt przerwania
Wcześniej w tym tutorialu stworzyliśmy stronę internetową zawierającą wiersze i kolumny, ale ta responsywna strona wyglądała kiepsko na małych ekranach.
Media query może pomóc. Możemy dodać punkt przerwania, gdzie pewne części projektu będą się zachowywać inaczej po każdej stronie punktu przerwania.

komputer stacjonarny

telefon
Dodaj punkt przerwania w 768px za pomocą media query:
Przykład
Kiedy szerokość ekranu (okno przeglądarki) jest mniejsza niż 768px, szerokość każdej kolumny powinna wynosić 100%:
/* Dla urządzeń stacjonarnych: */ .col-1 {szerokość: 8.33%;} .col-2 {szerokość: 16.66%;} .col-3 {szerokość: 25%;} .col-4 {szerokość: 33.33%;} .col-5 {szerokość: 41.66%;} .col-6 {szerokość: 50%;} .col-7 {szerokość: 58.33%;} .col-8 {szerokość: 66.66%;} .col-9 {szerokość: 75%;} .col-10 {szerokość: 83.33%;} .col-11 {szerokość: 91.66%;} .col-12 {szerokość: 100%;} @media only screen and (max-width: 768px) { /* Dla telefonów: */ [class*="col-"] { szerokość: 100%; } }
Zawsze projekt mobile first
Mobile First oznacza, że zanim zaprojektujemy komputer stacjonarny lub inne urządzenie, najpierw projektujemy dla urządzeń mobilnych (co pozwoli na szybsze wyświetlanie strony na mniejszych urządzeniach).
Oznacza to, że musimy dokonać pewnych ulepszeń w CSS.
Kiedy szerokość jest mniejsza niż 768px, powinniśmy zmodyfikować projekt, a nie zmieniać szerokość. Zrobiliśmy to w oparciu o projekt "mobile first":
Przykład
/* Dla telefonów: */ [class*="col-"] { szerokość: 100%; } @media tylko ekran i (min-szerokość: 768px) { /* Dla komputerów stacjonarnych: */ .col-1 {szerokość: 8.33%;} .col-2 {szerokość: 16.66%;} .col-3 {szerokość: 25%;} .col-4 {szerokość: 33.33%;} .col-5 {szerokość: 41.66%;} .col-6 {szerokość: 50%;} .col-7 {szerokość: 58.33%;} .col-8 {szerokość: 66.66%;} .col-9 {szerokość: 75%;} .col-10 {szerokość: 83.33%;} .col-11 {szerokość: 91.66%;} .col-12 {szerokość: 100%;} }
inny punkt przerwania
Możesz dodać dowolną liczbę punktów przerwania.
Dodamy również punkt przerwania między tabletami i telefonami.

komputer stacjonarny

tablet

telefon
Dla tego dodaliśmy media query (przy 600 pikselach) oraz nową grupę klas dla urządzeń o większej szerokości niż 600 pikseli, ale mniejszej niż 768 pikseli:
Przykład
Proszę zauważyć, że obie grupy klas są prawie identyczne, różnią się tylko nazwami (col- i col-s-):
/* Dla telefonów: */ [class*="col-"] { szerokość: 100%; } @media tylko ekran i (min-szerokość: 600px) { /* Dla tabletów: */ .col-s-1 {szerokość: 8.33%;} .col-s-2 {szerokość: 16.66%;} .col-s-3 {szerokość: 25%;} .col-s-4 {szerokość: 33.33%;} .col-s-5 {szerokość: 41.66%;} .col-s-6 {szerokość: 50%;} .col-s-7 {szerokość: 58.33%;} .col-s-8 {szerokość: 66.66%;} .col-s-9 {szerokość: 75%;} .col-s-10 {szerokość: 83.33%;} .col-s-11 {szerokość: 91.66%;} .col-s-12 {szerokość: 100%;} } @media tylko ekran i (min-szerokość: 768px) { /* Dla komputerów stacjonarnych: */ .col-1 {szerokość: 8.33%;} .col-2 {szerokość: 16.66%;} .col-3 {szerokość: 25%;} .col-4 {szerokość: 33.33%;} .col-5 {szerokość: 41.66%;} .col-6 {szerokość: 50%;} .col-7 {szerokość: 58.33%;} .col-8 {szerokość: 66.66%;} .col-9 {szerokość: 75%;} .col-10 {szerokość: 83.33%;} .col-11 {szerokość: 91.66%;} .col-12 {szerokość: 100%;} }
Dwukrotne użycie tych samych klas może wyglądać dziwnie, ale daje nam możliwość użycia HTML do określenia, co się stanie z kolumnami przy każdym punkcie przerwania:
Przykład HTML
Dla komputerów stacjonarnych:
Pierwsza i trzecia część zajmą po 3 kolumny. Środkowa część zajmie 6 kolumn.
Dla tabletów:
Pierwsza część zajmie 3 kolumny, druga część zajmie 9 kolumn, trzecia część zostanie wyświetlona pod pierwszymi dwoma częściami i zajmie 12 kolumn:
<div class="row"> <div class="col-3 col-s-3">...</div> <div class="col-6 col-s-9">...</div> <div class="col-3 col-s-12">...</div> </div>
Typowe przecięcia urządzeń
Ekranów i urządzeń o różnych wysokościach i szerokościach jest nieskończenie wiele, więc trudno jest stworzyć dokładne przecięcia dla każdego urządzenia. W celu uproszczenia możesz skupić się na pięciu grupach:
Przykład
/* Bardzo małe urządzenia (telefon, 600px i mniej) */ @media only screen and (max-width: 600px) {...} /* Małe urządzenia (pionowe tablety i duże telefony, 600 pikseli i więcej) */ @media only screen and (min-width: 600px) {...} /* Średnie urządzenia (poziome tablety, 768 pikseli i więcej) */ @media only screen and (min-width: 768px) {...} /* Duże urządzenia (laptopy/komputery stacjonarne, 992px i więcej) */ @media only screen and (min-width: 992px) {...} /* Duże urządzenia (duże laptopy i komputery stacjonarne, 1200px i więcej) */ @media only screen and (min-width: 1200px) {...}
Kierunek: Portret / Scena
Zapytania mediowe mogą również być używane do zmiany układu strony na podstawie orientacji przeglądarki.
Możesz ustawić zestaw atrybutów CSS, które są stosowane tylko wtedy, gdy szerokość okna przeglądarki jest większa niż wysokość, tzw. kierunek 'pionowy':
Przykład
Jeśli orientacja to tryb pionowy (landscape mode), tło strony będzie jasnoniebieskie:
@media only screen and (orientation: landscape) { body { background-color: lightblue; } }
Ukrywanie elementów za pomocą zapytań mediowych
Innym popularnym zastosowaniem zapytań mediowych jest ukrywanie elementów na różnych rozmiarach ekranu:
Przykład
/* Jeśli rozmiar ekranu wynosi 600 pikseli lub mniej, ukryj ten element */ @media only screen and (max-width: 600px) { div.example { display: none; } }
Modyfikacja rozmiaru czcionki za pomocą zapytań mediowych
Możesz również używać zapytań mediowych do zmiany rozmiaru czcionki elementów na różnych rozmiarach ekranu:
Przykład
/* Jeśli rozmiar ekranu wynosi 601px lub więcej, ustaw wartość font-size dla <div> na 80px */ @media only screen and (min-width: 601px) {}} div.example { font-size: 80px; } } /* Jeśli rozmiar ekranu wynosi 600px lub mniej, ustaw font-size dla <div> na 30px */ @media only screen and (max-width: 600px) { div.example { font-size: 30px; } }
Podręcznik CSS @media
Pełne omówienie wszystkich typów mediów i cech/wyrażeń znajdziesz w Odwiedź @media regułę w podręczniku CSS.
- Poprzednia strona Widok siatki RWD
- Następna strona Obrazy RWD