【发布时间】:2014-06-19 00:07:25
【问题描述】:
我正在尝试在 css 中获取所有移动设备上的方向并在方向更改时触发一些 css。
这是对代码的简单测试:
<div class="orientation">
<span class="landscape">Landscape</span>
<span class="portrait">Portrait</span>
</div>
CSS 是:
.portrait, .landscape {
position: absolute;
top: 0px;
left: 0px;
}
.portrait {display: block;}
.landscape {display: none;}
@media screen and (orientation:landscape) {
.portrait {display: none;}
.landscape {display: block;}
}
现在在所有 webkit 浏览器(android、ios)甚至桌面上它都可以正常工作(除了几个设备),但在新的 windows phone 8 设备中它不会接受变化。 (诺基亚 lumia 920)
我还查看了一些 javascript 资源(虽然我不是 javascript 专家),即:
- http://www.developria.com/2010/08/detecting-screen-orientation-i.html
- http://davidwalsh.name/orientation-change
但据我所知,这仍然不适用于 windows phone 8 设备?
我需要使用特定的 MS css 代码还是有其他方法可以做到这一点?如果有一个支持跨浏览器/跨移动设备的 javascript 片段可以接收更改并在更改时向 body 标记添加一个类,那就太好了。
任何帮助将不胜感激。 谢谢!
【问题讨论】:
-
作为测试,您可以添加一段 javascript 并执行
alert(window.orientation);以查看横向和方向之间是否有任何区别。但它忽略媒体查询的事实非常烦人。 -
绝对是。我确实找到了有关媒体查询的其他一些信息,似乎窗口 8 支持这一点:'@media (-ms-view-state: fullscreen-landscape)''@media (-ms-view-state:filled)''@ media (-ms-view-state: snapped)' '@media (-ms-view-state: fullscreen-portrait)' 不确定它是否仅适用于使用 JS 和 CSS 构建的 Metro 应用程序,或者是否也适用于普通网站。也不确定windows Phone 8是否支持这个。现在仍在测试中。
-
好的,显然我之前提到的那些“ms-view-state”媒体查询似乎只适用于 Windows 8 应用程序。
标签: javascript css orientation media-queries windows-phone-8