2012-09-04 8 views
21

Mam tablet Google Nexus 7, którego używam do testowania niektórych responsywnych projektów. W JavaScript, screen.width zwraca jako 800px, zgodnie z oczekiwaniami (natywna rozdzielczość).Nexus 7 screen.width zwraca 800, ale zapytanie o media max-width: 720px nadal obowiązuje

W jaki sposób następująca próba nośnika jest odbierana przez tablet, gdy maksymalna szerokość ekranu wynosi> 720 pikseli?

@media only screen and (max-width: 720px) and (orientation: portrait) { 
    .test{ background: red;} 
} 
+0

Wygląda mi dobrze - czy próbowałeś tego robić na jsfiddle, bez żadnych innych wpływów? Czy nadal ma zastosowanie? – zenkaty

+0

thos może ci pomóc 'http: // css-tricks.com/forums/discussion/17586/media-queries-with-identical-width/p1' –

Odpowiedz

42

Android dokonuje docelowego skalowania gęstości w celu dostosowania do różnych gęstości ekranu ekosystemu Android. Domyślnie w przeglądarce na Androida dominuje gęstość średniego ekranu, starając się emulować rozmiar elementów tak, jakby ekran był ekranem MDPI.

Korzystanie this website, można zobaczyć, że efektem tego jest to, że device-width skalowania jest 601 px i device-height jest 880 px na Nexusa 7. W związku z tym objęte swojej deklaracji max-width: 720px a tło pojawia się na czerwono.

Screenshot

window.screen.width i .height zawsze zwraca rzeczywisty rozmiar ekranu. Musisz pamiętać, że rozmiar ekranu Viewport Size i Screen Size to dwie różne rzeczy.

Jeśli nie chcesz tego zachowania, możesz dodać target-densitydpi=device-dpi do tagu <meta name="viewport">. Spowoduje to wyłączenie skalowania gęstości docelowej Androida: device-width i device-height będą zgłaszać natywną rozdzielczość ekranu urządzenia.

Więcej informacji na temat skalowania gęstości docelowej systemu Android można znaleźć w artykule Android Developers' Documentation.

+2

Jestem bardzo zdezorientowany w tej nomenklaturze ... 'powyższa strona response.js' zawiera listę atrybutów JavaScript o' szerokości widoku ',' szerokości urządzenia' i 'szerokości dokumentu'. W css, czy zapytanie o media 'width-width' sprawdza ekwiwalent JavaScript' 'viewport width'? Dlaczego nie nazywa się to samo? –

+1

Obsługa 'target-densitydpi' została usunięta z Webkit, patrz http://trac.webkit.org/changeset/119527 i wyjaśnienie tutaj: https://petelepage.com/blog/2013/02/viewport-target- densitydpi-support-is-being-being-przestarzałe/ –

+1

@ VolkerE .: Nowe wersje (4.4+) Androida nie używają już ** Webkita **. Przełączono do widżetu Google Webkit: [Blink] (http://www.chromium.org/blink). "target-densitydpi" jest nadal obsługiwane na wszystkich urządzeniach z Androidem teraz i na przyszłość. Starsze wersje Androida (4.3 i niższe) używają starszej wersji Webkita z wciąż dostępną opcją 'target-densitydpi'. –

Powiązane problemy