Tôi đang làm việc với nhiều thiết bị máy tính bảng - cả Android và iOS. Hiện tại, tôi có các biến thể độ phân giải sau cho tất cả các máy tính bảng.
- 1280 x 800
- 1280 x 768
1024 x 768 (iPad rõ ràng)- iPad không có vấn đề này
Cách đơn giản nhất để áp dụng kiểu dựa trên hướng thiết bị là sử dụng định hướng của truy vấn phương tiện bằng cú pháp sau.
@media all and (orientation:portrait)
{
/* My portrait based CSS here */
}
@media all and (orientation:landscape)
{
/* My landscape based CSS here */
}
Điều này hoạt động hoàn toàn tốt trên tất cả các thiết bị máy tính bảng. NHƯNG , vấn đề là, khi thiết bị ở chế độ dọc và người dùng nhấn vào bất kỳ trường nhập liệu nào (ví dụ: tìm kiếm), bàn phím mềm sẽ bật lên - điều này làm giảm diện tích hiển thị của trang web và buộc nó hiển thị trong css dựa trên chiều ngang. Trên thiết bị máy tính bảng Android, nó phụ thuộc vào chiều cao của bàn phím. Vì vậy, cuối cùng trang web trông bị hỏng. Do đó, tôi không thể sử dụng truy vấn phương tiện định hướng của CSS3 để áp dụng các kiểu dựa trên hướng (trừ khi có truy vấn phương tiện tốt hơn cho hướng đích). Đây là một http://jsfiddle.net/hossain/S5nYP/5/ mô phỏng điều này - để kiểm tra thiết bị, hãy sử dụng trang kiểm tra đầy đủ - http://jsfiddle.net/S5nYP/embedded/result/
Đây là ảnh chụp màn hình của hành vi được lấy từ trang demo.
Vì vậy, có bất kỳ giải pháp thay thế nào để giải quyết vấn đề này không, tôi sẵn sàng sử dụng giải pháp dựa trên JavaScript nếu giải pháp dựa trên CSS gốc không hoạt động.
Tôi đã tìm thấy một đoạn mã trên http://davidbcalhoun.com/2010/dealing-with-device-orientation đề xuất thêm lớp và nhắm mục tiêu dựa trên đó. Ví dụ:
<html class="landscape">
<body>
<h1 class="landscape-only">Element Heading - Landscape</h1>
<h1 class="portrait-only">Element Heading - Portrait</h1>
<!-- .... more... ->
# CSS
.landscape .landscape-only { display:block; }
.landspace .portrait-only { display:none; }
.portrait .portrait-only { display:block; }
.portrait .landscape-only { display:none; }
Các bạn nghĩ gì về điều này? Bạn có giải pháp tốt hơn?