2012-09-04 23 views
21

Tôi có máy tính bảng Google Nexus 7 mà tôi đang sử dụng để thử nghiệm một số thiết kế đáp ứng. Trong Javascript, các screen.width trả về 800px, như mong đợi (độ phân giải gốc).Màn hình Nexus 7.width trả về 800 nhưng chiều rộng tối đa truy vấn phương tiện: 720px vẫn áp dụng

Truy vấn phương tiện sau được máy tính bảng chọn khi chiều rộng tối đa của màn hình là> 720px?

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

Có vẻ phù hợp với tôi - bạn đã thử làm điều này trên jsfiddle, không có ảnh hưởng nào khác? Nó vẫn áp dụng? – zenkaty

+0

thos có thể giúp bạn 'http: // css-tricks.com/forums/discussion/17586/media-queries-với-same-width/p1' –

Trả lời

42

Android thực hiện chia tỷ lệ mật độ mục tiêu để phù hợp với mật độ màn hình khác nhau của hệ sinh thái Android. Trình duyệt Android nhắm mục tiêu mật độ màn hình trung bình theo mặc định, cố gắng mô phỏng kích thước của các phần tử như thể màn hình là màn hình MDPI.

Sử dụng this website, bạn có thể thấy kết quả của việc mở rộng quy mô này là device-width601 pxdevice-height880 px trên Nexus 7. Do đó, nó nằm trong tuyên bố max-width: 720px của bạn và nền xuất hiện màu đỏ.

Screenshot

window.screen.width.height luôn trả về kích thước màn hình thực tế. Bạn phải nhớ rằng Kích thước khung nhìnKích thước màn hình hoàn toàn là hai thứ khác nhau.

Nếu bạn không muốn hành vi này, bạn có thể thêm target-densitydpi=device-dpi vào thẻ <meta name="viewport"> của mình. Điều này sẽ vô hiệu hóa tỷ lệ mật độ mục tiêu của Android: device-widthdevice-height sẽ báo cáo độ phân giải màn hình gốc của thiết bị.

Thông tin thêm về chia tỷ lệ mật độ mục tiêu của Android có sẵn trong Android Developers' Documentation.

+2

Tôi rất bối rối về danh pháp ở đây ... Trong 'response.js' trên trang, nó liệt kê các thuộc tính JavaScript của' chiều rộng khung nhìn', 'chiều rộng thiết bị' và' chiều rộng tài liệu'. Trong css, truy vấn phương tiện 'chiều rộng thiết bị 'có nhìn vào tương đương JavaScript của' chiều rộng khung nhìn' không? Tại sao họ không gọi cùng một thứ? –

+1

Hỗ trợ cho 'target-densitydpi' đã bị xóa khỏi Webkit, xem http://trac.webkit.org/changeset/119527 và giải thích tại đây: https://petelepage.com/blog/2013/02/viewport-target- densitydpi-support-is-being-deprecated/ –

+1

@VolkerE .: Các phiên bản mới (4.4+) của Android không còn sử dụng ** Webkit ** nữa. Chuyển sang ngã ba Webkit của Google: [Blink] (http://www.chromium.org/blink). 'target-densitydpi' vẫn được hỗ trợ trên tất cả các thiết bị Android ngay bây giờ và cho tương lai. Các phiên bản Android cũ hơn (4.3 trở xuống) đang sử dụng phiên bản Webkit cũ hơn với 'target-densitydpi' vẫn có sẵn. –