Articles

CSS media queries: width versus device-width

Posted on

width versus device-width

W CSS media różnica między width a device-width może być nieco zamglona, więc wyjaśnijmy to trochę. device-width odnosi się do szerokości samego urządzenia, innymi słowy, rozdzielczości ekranu urządzenia. Załóżmy, że rozdzielczość Twojego ekranu to 1440 x 900. Oznacza to, że ekran ma 1440 pikseli, więc jego szerokość device-width wynosi 1440px. Większość telefonów komórkowych ma device-width 480px lub mniej, w tym popularny iPhone 4 (z device-width: 320px), mimo że technicznie ma rozdzielczość 640 x 960. Jest to spowodowane wyświetlaczem retina w iPhone 4, który upycha dwa piksele urządzenia na każdy piksel CSS na ekranie. Dotyczy to również Ipada 3; jego zgłoszony device-width ma 768px tak jak jego poprzednicy, mimo że jego rzeczywista rozdzielczość ekranu to 1536px x 2048px. Ogólnie rzecz biorąc width jest bardziej uniwersalny jeśli chodzi o tworzenie responsywnych stron internetowych, chociaż device-width jest przydatny, gdy chcesz konkretnie skierować się do urządzeń mobilnych (a nie komputerów stacjonarnych z małym oknem przeglądarki na przykład), ponieważ rzadko kiedy komputery stacjonarne mają rozdzielczość ekranu poniżej pewnej liczby, takiej jak 320px x 480px.

Poniżej pokazano rozdzielczość ekranu i wymiary CSS media device dla niektórych popularnych urządzeń:

Wymiary CSS Media
Urządzenie Rozdzielczość (px) device-.width/ device-height (px)
iPhone 320 x 480 320 x 480, zarówno w trybie portretowym, jak i krajobrazowym
iPhone 4 640 x 960 320 x 480, zarówno w trybie portretowym, jak i krajobrazowym. device-pixel-ratio jest 2
iPhone 5, 5s 640 x 1136 320 x 568, zarówno w trybie pionowym, jak i poziomym. device-pixel-ratio jest 2
iPhone 6 750 x 1334 375 x 667, zarówno w trybie portretowym, jak i krajobrazowym. device-pixel-ratio to 2
iPhone 6 plus 1242 x 2208 414 x 736, zarówno w trybie portretowym, jak i krajobrazowym. device-pixel-ratio to 3
iPad 1 i 2 768 x 1024 768 x 1024, zarówno w trybie portretowym, jak i krajobrazowym
iPad 3 1536 x 2048 768 x 1024, zarówno w trybie portretowym jak i krajobrazowym

Gęstość pikseli CSS wynosi 2

Samsung Galaxy S I i II 480 x 800 320 x 533, w trybie portretowym

Gęstość pikseli CSS wynosi 1.5

Samsung Galaxy S III 720 x 1280 360? x 640?, w trybie portretowym
HTC Evo 3D 540 x 960 360 x 640, tryb portretowy

Gęstość pikseli CSS wynosi 1.5

Amazon Kindle Fire 1024 x 600 1024 x 600, tryb krajobrazowy

Aby jeszcze bardziej skomplikować sprawy, w urządzeniach iPhone i iPad, device-width zawsze odpowiada szerokości urządzenia w trybie portretowym, niezależnie od tego, czy urządzenie jest w tym trybie, czy krajobraz zamiast tego. W przypadku innych urządzeń, szerokość urządzenia zmienia się w zależności od jego orientacji.

* Aby uzyskać bardziej kompletną listę urządzeń i ich rozdzielczości ekranu, odwiedź tę stronę.

Zobaczmy teraz jeszcze kilka zapytań o media CSS, które uchwycą różne urządzenia i wymiary ekranu:

/* #### Mobile Phones Portrait #### */
@media screen and (max-device-width: 480px) and (orientation: portrait){
/* some CSS here */
}
/* #### Mobile Phones Landscape #### */
@media screen and (max-device-width: 640px) and (orientation: landscape){
/* some CSS here */
}
/* #### Mobile Phones Portrait or Landscape #### */
@media screen and (max-device-width: 640px){
/* some CSS here */
}
/* #### iPhone 4+ Portrait or Landscape #### */
@media screen and (min-device-width: 320px) and (-webkit-min-device-pixel-ratio: 2){
/* some CSS here */
}
/* #### iPhone 5 Portrait or Landscape #### */
@media (device-height: 568px) and (device-width: 320px) and (-webkit-min-device-pixel-ratio: 2){
/* some CSS here */
}
/* #### iPhone 6 i 6 plus Portrait or Landscape #### */
@media (min-device-height: 667px) and (min-device-width: 375px) and (-webkit-min-device-pixel-ratio: 3){
/* some CSS here */
}
/* #### Tablets Portrait or Landscape #### */
@media screen and (min-device-width: 768px) and (max-device-width: 1024px){
/* some CSS here */
}
/* #### Desktopy #### */
@media screen and (min-width: 1024px){
/* some CSS here */
}

Więc mamy teraz dość dobry pomysł na używanie zapytań o media CSS. Jest jednak jeszcze jeden ważny element układanki, którego potrzebujemy, aby wszystko działało zgodnie z oczekiwaniami, a jest nim znacznik viewport meta.

  • Wprowadzenie do CSS media queries
  • Szerokość a szerokość urządzenia
  • Meta tag viewport – klucz do przygotowania strony pod kątem optymalizacji dla urządzeń mobilnych
  • Pasowanie zapytań o media CSS w JavaScript przy użyciu window.matchMedia()

Meta tag viewport – klucz do przygotowania strony pod kątem optymalizacji dla urządzeń mobilnych

Przygotowanie strony pod kątem optymalizacji dla urządzeń mobilnych.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *