我正在使用多种平板设备-都是安卓 和 iOS。目前,我有以下分辨率变化为所有的平板电脑。
应用基于设备方向的样式的最简单方法是使用以下语法来使用媒体查询的方向。
@media all and (orientation:portrait)
{
/* My portrait based CSS here */
}
@media all and (orientation:landscape)
{
/* My landscape based CSS here */
}
这在所有平板设备上都能正常工作。问题是,当设备处于纵向模式并且用户点击任何输入字段(例如搜索)时,软键盘会弹出——这会减少网页的可见区域,并迫使它以基于横向的 css 渲染。在 Android 平板设备上,这取决于键盘的高度。 所以,最终这个网页看起来是破碎的。因此,我不能使用 CSS3的方向媒体查询来应用基于方向的样式(除非有更好的方向媒体查询)。下面是一个小提琴 http://jsfiddle.net/hossain/S5nYP/5/,它模拟了这个过程——对于设备测试,使用完整的测试页面——一个 href = “ http://jsfiddle.net/S5nYP/ 嵌入/result/”rel = “ norefrer”> 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; }
你们觉得怎么样? 有更好的解决办法吗?