Câu trả lời ngắn
Tỷ lệ pixel của thiết bị là tỷ lệ giữa các pixel vật lý và các pixel logic. Chẳng hạn, iPhone 4 và iPhone 4S báo cáo tỷ lệ pixel của thiết bị là 2, vì độ phân giải tuyến tính vật lý gấp đôi độ phân giải tuyến tính logic.
- Độ phân giải vật lý: 960 x 640
- Độ phân giải logic: 480 x 320
Công thức là:

Ở đâu:
là độ phân giải tuyến tính vật lý
và:
là độ phân giải tuyến tính logic
Các thiết bị khác báo cáo tỷ lệ pixel thiết bị khác nhau, bao gồm cả tỷ lệ không nguyên. Ví dụ: Nokia Lumia 1020 báo cáo 1.6667, Samsumg Galaxy S4 báo cáo 3 và Apple iPhone 6 Plus báo cáo 2.46 (nguồn: dpilove ) . Nhưng điều này không thay đổi bất cứ điều gì về nguyên tắc, vì bạn không bao giờ nên thiết kế cho bất kỳ một thiết bị cụ thể nào.
Thảo luận
"Pixel" CSS thậm chí không được định nghĩa là "một yếu tố hình ảnh trên một số màn hình", mà là một phép đo góc phi tuyến tính của
góc nhìn, có
chiều dài xấp xỉ một inch. Nguồn: CSS Độ dài tuyệt đối
Điều này có rất nhiều ý nghĩa khi thiết kế web, chẳng hạn như chuẩn bị tài nguyên hình ảnh độ nét cao và cẩn thận áp dụng các hình ảnh khác nhau ở các tỷ lệ pixel thiết bị khác nhau. Bạn sẽ không muốn buộc một thiết bị cấp thấp tải xuống hình ảnh có độ phân giải rất cao, chỉ để hạ thấp nó cục bộ. Bạn cũng không muốn các thiết bị cao cấp nâng cấp hình ảnh độ phân giải thấp cho trải nghiệm người dùng mờ.
Nếu bạn bị mắc kẹt với hình ảnh bitmap, để phù hợp với nhiều tỷ lệ pixel của thiết bị khác nhau, bạn nên sử dụng CSS Media Queries để cung cấp các bộ tài nguyên khác nhau cho các nhóm thiết bị khác nhau. Kết hợp điều này với các thủ thuật background-size: cover
hay như hoặc đặt rõ ràng các background-size
giá trị phần trăm.
Thí dụ
#element { background-image: url('lores.png'); }
@media only screen and (min-device-pixel-ratio: 2) {
#element { background-image: url('hires.png'); }
}
@media only screen and (min-device-pixel-ratio: 3) {
#element { background-image: url('superhires.png'); }
}
Bằng cách này, mỗi loại thiết bị chỉ tải tài nguyên hình ảnh chính xác. Ngoài ra, hãy nhớ rằng px
đơn vị trong CSS luôn hoạt động trên các pixel logic .
Một trường hợp cho đồ họa vector
Khi ngày càng có nhiều loại thiết bị xuất hiện, việc cung cấp cho tất cả chúng các tài nguyên bitmap đầy đủ sẽ trở nên khó khăn hơn. Trong CSS, truy vấn phương tiện hiện là cách duy nhất và trong HTML5, yếu tố hình ảnh cho phép bạn sử dụng các nguồn khác nhau cho các truy vấn phương tiện khác nhau, nhưng hỗ trợ vẫn không phải là 100% vì hầu hết các nhà phát triển web vẫn phải hỗ trợ IE11 thêm một thời gian nữa ( nguồn: caniuse ) .
Nếu bạn cần hình ảnh sắc nét cho các biểu tượng, nghệ thuật vẽ đường, các yếu tố thiết kế không phải là ảnh , bạn cần bắt đầu suy nghĩ về SVG, có tỷ lệ đẹp cho mọi độ phân giải.
width=device-width
tôi sẽ kéo dài nó ra toàn màn hình?