css - 不应用 CSS 的移动方向更改

标签 css media-queries device-orientation

我正在测试我正在开发并使用媒体查询的网站。

当我在浏览器中测试和调整页面大小时,一切都很好。

但是当我在移动设备上测试时,当我改变手机的方向时遇到了问题。

如果我以 landscape 模式加载页面,则会应用正确的 CSS。

当我更改为 portrait 时,CSS 也是正确的。

但如果我回到landscapeportrait css classes 仍在应用。

我正在使用这些元标记

<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

在我的媒体查询中我有

@media 
only screen and (max-width: 610px),
only screen and (max-width: 610px) and (orientation:landscape) { ... }

@media
only screen and (min-device-width: 240px) and (max-device-width: 520px),
only screen and (min-width: 240px) and (max-width: 520px) { ... } 

我已经提醒设备宽度以确保它没问题,在landscape模式下它是598px宽,portrait384px

我使用的是 Nexus 4 (Android 4.3)

为什么我改变方向后 CSS 没有应用?

编辑: 如果我以 portrait 加载网站然后更改为 landscape,则不会应用 CSS。 就好像一旦达到最小分辨率,就再也回不去了。

最佳答案

在我的 Nexus 4 上,我有一个看起来像这样的东西,似乎适用于您的测试用例:

<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width'>

并且我没有在媒体查询中提及方向,例如:

@media only screen and (max-width: 610px) { /* Some CSS here */ }

编辑:就媒体查询而言,看起来您必须将 max-device-width 放在其他 max-width 内容之后。在下面的评论中引用 vyx.ca...

Just found my problem. Notice how I define 'max-device-width' before the rest. If I put that condition last, it works. 'max-device-width' is used for retina display.

关于css - 不应用 CSS 的移动方向更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18747644/

相关文章:

javascript - 当选项卡处于后台时,Android Chrome deviceorientation 停止触发

javascript - 他们是一种让一个 div 只在另一个 div 中可见的方法吗?

jquery - 隐藏后与 jQuery 内联显示的元素的 Webkit 错误

CSS 媒体查询 - 应该在哪里定义它们?

jQuery 设备方向范围转换为 0 到 100 之间的百分比

javascript - 需要一个 JavaScript 解决方案来完全隐藏不同屏幕设备中的部分代码

css - 我应该使用 Modular Scale 保持 62.5% 的字体大小吗?

css - calc(25% - 1px) 等于 24% 的奇怪情况

html - 响应页面中的 Div 忽略移动浏览器中的视口(viewport)大小

html - 如何在特定屏幕宽度下删除属性