여러 태블릿 장치를 사용하고 있습니다-둘 다 Android 및 iOS. 현재 모든 태블릿에 대해 다음과 같은 해상도 변형이 있습니다.
- 1280 x 800
- 1280 x 768
1024 x 768 (당연히 iPad)-iPad에는이 문제가 없습니다.
장치 방향 기반 스타일을 적용하는 가장 간단한 방법은 다음 구문을 사용하여 미디어 쿼리의 방향을 사용하는 것입니다.
@media all and (orientation:portrait)
{
/* My portrait based CSS here */
}
@media all and (orientation:landscape)
{
/* My landscape based CSS here */
}
이것은 모든 태블릿 장치에서 완벽하게 작동합니다. 그러나 문제는 장치가 세로 모드이고 사용자가 입력 필드 (예 : 검색)를 탭하면 소프트 키보드가 팝업되어 웹 페이지의 가시 영역을 줄이고 가로 기반 CSS로 렌더링하도록 강제하는 것입니다. 안드로이드 태블릿 기기에서는 키보드 높이에 따라 다릅니다. 따라서 궁극적으로 웹 페이지가 깨져 보입니다. 따라서 CSS3의 방향 미디어 쿼리를 사용하여 방향에 따라 스타일을 적용 할 수 없습니다 (대상 방향에 더 나은 미디어 쿼리가없는 경우). 다음은 이것을 에뮬레이트 하는 바이올린 http://jsfiddle.net/hossain/S5nYP/5/ 입니다-장치 테스트의 경우 전체 테스트 페이지 사용 -http : //jsfiddle.net/S5nYP/embedded/result/
다음은 데모 페이지에서 가져온 동작의 스크린 샷입니다.
따라서이 문제를 해결할 수있는 대안이 있습니까? 네이티브 CSS 기반 솔루션이 작동하지 않는 경우 JavaScript 기반 솔루션에 개방되어 있습니다.
http://davidbcalhoun.com/2010/dealing-with-device-orientation에서 클래스를 추가하고이를 기반으로 타겟팅 할 것을 제안 하는 스 니펫을 찾았습니다 . 예를 들면 :
<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; }
너희들은 이것에 대해 어떻게 생각하니? 더 나은 솔루션이 있습니까?