vue官方文档中有下面一段
<Teleport :disabled="isMobile">
...
</Teleport>
这里的 isMobile 状态可以根据 CSS media query 的不同结果动态地更新。
请问这句意思是用何种方式判断 isMobile 的值,我查了下有一个matchMedia()函数,
但是不确定,
判断 isMobile 是判断 window.innerWidth 好一点还是别的?
感谢。
vue官方文档中有下面一段
<Teleport :disabled="isMobile">
...
</Teleport>
这里的 isMobile 状态可以根据 CSS media query 的不同结果动态地更新。
请问这句意思是用何种方式判断 isMobile 的值,我查了下有一个matchMedia()函数,
但是不确定,
判断 isMobile 是判断 window.innerWidth 好一点还是别的?
感谢。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
比较有意思,matchMedia 这个函数也不错,但是就是需要把 CSS 中的媒体查询又拿到 JS 中再写一次,如果 CSS 里面的改了的话,又要改 JS 里面的,如果漏掉了就不对了。
搜索了一下,发现有个方案,就是在媒体查询给一个元素,添加一个 CSS 属性,然后用 JS 去获取这个属性,从而来判断,比如下面这样,创建一个 CSS ,然后用 JS 创建一个元素并设置成对应的 class 然后获取计算后的样式中的
z-index
从而判断。这样有一些缺陷,就是可能这些属性会产生一些副作用,因为这些都是有效的的 CSS 属性,可能会影响到你的页面,如果你不考虑过旧设备的兼容性的话, CSS 自定义属性(变量) 是个不错的选择。
参考