我想根据设备的方向是垂直(纵向模式)还是水平(横向模式)来应用不同的 CSS 样式。可以只用CSS来实现吗?
有替代方案吗?我想你总是可以用 JavaScript 检测窗口的宽度和高度,然后决定应用什么样式,但我想知道是否有更简单的方法只使用 CSS(如果没有,JS 解决方案会很好)。
我想根据设备的方向是垂直(纵向模式)还是水平(横向模式)来应用不同的 CSS 样式。可以只用CSS来实现吗?
有替代方案吗?我想你总是可以用 JavaScript 检测窗口的宽度和高度,然后决定应用什么样式,但我想知道是否有更简单的方法只使用 CSS(如果没有,JS 解决方案会很好)。
理论上只有css才有可能,我的意思是理论上的,因为我从未尝试过:
w3和MDN上的一些文档。
根据 w3 规范:
MDN 文档中有一个相当有趣的注释:
一些替代方案:
在 CSS3 中,它存在于
media
选项中orientation
例子
目前,在 Javascript 中执行此操作的最佳方式是通过 API
window.matchMedia()
(doc),因为它与浏览器具有最佳兼容性。else
尽管如此,在使用新的或非常规浏览器的情况下,添加一个提供解决方法的条件也不错,就像我在下面推荐的那样。通过比较设备的高度和宽度,可以根据最大值确定其方向,这种方法的缺点是如果显示设备的键盘可能会失败,因为有些浏览器会从这些中减去键盘占用的空间值改变结果。但是如果检查是在页面加载时完成的,这个问题就不会持续存在,所以这似乎是一个很好的选项 B。
代码:
在 javascript 中,您可以执行以下操作: