TL; DR
Jeśli tworzysz responsywną witrynę, używaj min-width
/ max-width
w zapytaniach o media zamiast min-device-width
/ max-device-width
, aby kierować reklamy na szerszy zakres rozmiarów ekranu.
Zgodnie z 2018 Multimedia Zapytania Level 4 specyfikacji projektu The device-width
funkcja mediów jest przestarzała . Zostanie zachowany w celu zachowania zgodności z poprzednimi wersjami, ale należy go unikać.
8. Dodatek A: Nieaktualne funkcje multimedialne
Do zapytania dla rozmiaru rzutni (lub polu strony na nośniku strona), The width
, height
oraz aspect-ratio
funkcje multimedialne powinny być wykorzystywane zamiast device-width
, device-height
i device-aspect-ratio
, które odnoszą się do fizycznych rozmiarów urządzenia niezależnie od tego, ile miejsca jest dostępna dla dokument jest przedstawiany. Funkcje device-*
multimedialne są czasami używane jako proxy do wykrywania urządzeń mobilnych. Zamiast tego autorzy powinni używać funkcji multimedialnych, które lepiej odzwierciedlają aspekt urządzenia, któremu próbują stylizować.
Na marginesie, pamiętaj o określeniu metatagu viewport w <head>
sekcji dokumentu:
<meta name="viewport" content="width=device-width, initial-scale=1">
Wyjaśnienie
Ze względu na różne możliwe rozdzielczości ekranu i gęstości pikseli, które może mieć dane urządzenie, piksel nie jest pikselem, ponieważ należy wziąć pod uwagę kilka rzeczy (powiększenie, gęstość pikseli, rozdzielczość i rozmiar ekranu, orientacja urządzenia, współczynnik proporcji itp. ..). W tym przypadku piksel jest faktycznie określany jako „optyczna jednostka odniesienia”, a nie fizyczny piksel sprzętowy.
Na szczęście możesz określić metatag rzutni w <head>
sekcji swojego dokumentu, aby kontrolować szerokość i skalowanie widoku przeglądarki. Jeśli ten tag ma content
wartość width=device-width
, szerokość ekranu będzie pasować do pikseli niezależnych od urządzenia i zapewni, że wszystkie różne urządzenia będą skalować się i zachowywać spójnie.
<meta name="viewport" content="width=device-width, initial-scale=1">
Jeśli chodzi o zapytania o media, prawdopodobnie będziesz max-width
raczej chciał użyć zamiast max-device-width
, ponieważ max-width
będzie kierować się na widoczny obszar (bieżące okno przeglądarki), podczas gdy max-device-width
będzie kierowany na rzeczywisty rozmiar / rozdzielczość pełnego ekranu urządzenia.
Innymi słowy, jeśli używasz max-device-width
, nie zobaczysz różnych zapytań o media zastosowanych podczas zmiany rozmiaru przeglądarki na komputerze, ponieważ w przeciwieństwie max-width
do tego brany jest pod uwagę tylko rzeczywisty rozmiar pełnego ekranu urządzenia; a nie aktualny rozmiar okna przeglądarki.
Ma to ogromne znaczenie, jeśli próbujesz utworzyć układ adaptacyjny, ponieważ witryna nie będzie reagować podczas zmiany rozmiaru przeglądarki. Ponadto, jeśli używasz max-device-width
zapytań o media, których używasz do kierowania na urządzenia z mniejszymi ekranami, nie będą one miały zastosowania do komputerów stacjonarnych, nawet po zmianie rozmiaru okna przeglądarki w celu dopasowania do wspomnianego mniejszego rozmiaru ekranu.
Od 2018 r. Najnowsza wersja robocza specyfikacji zapytań o media faktycznie wycofała funkcję device-width
multimediów, dlatego należy jej unikać.
Ponadto ten artykuł w Google Developers stanowczo odradza używanie max-device-width
:
Programiści Google - Podstawy pracy w sieci - Elastyczne zapytania CSS o media
Możliwe jest również tworzenie zapytań na podstawie *-device-width
; chociaż ta praktyka jest zdecydowanie odradzana .
Różnica jest subtelna, ale bardzo ważna: min-width
opiera się na rozmiarze okna przeglądarki, a min-device-width
na rozmiarze ekranu. Niestety niektóre przeglądarki, w tym starsza przeglądarka systemu Android, mogą nie raportować prawidłowo szerokości urządzenia i zamiast tego zgłaszać rozmiar ekranu w pikselach urządzenia zamiast oczekiwanej szerokości widocznego obszaru.
Ponadto użycie *-device-width
może uniemożliwić dostosowywanie treści na komputerach stacjonarnych lub innych urządzeniach, które umożliwiają zmianę rozmiaru okien, ponieważ zapytanie jest oparte na rzeczywistym rozmiarze urządzenia, a nie na rozmiarze okna przeglądarki.
Dalsze czytanie: