Vue中如何根据屏幕宽度动态切换组件的断点配置?
我在用Vue开发移动端页面时遇到了断点切换的问题。现在用的是固定写死的768px断点,但发现iPhone 14 Pro这种大屏手机在 portrait 模式下组件布局还是错乱了。
试过用媒体查询在CSS里写:@media (max-width: 768px) {…},但业务需要根据实际设备类型动态调整断点值。比如希望当屏幕宽度超过820px时启用桌面版布局,但这样写的话代码里的条件判断和CSS媒体查询会不一致,容易出错。
现在代码是这样的:
export default {
data() {
return {
isMobile: window.innerWidth <= 768
}
},
mounted() {
window.addEventListener('resize', this.handleResize)
},
methods: {
handleResize() {
this.isMobile = window.innerWidth <= 768
}
}
}
但这样写每次修改断点值都要改两处,维护起来麻烦。有没有更好的方式统一管理断点配置,同时让CSS和JS能共享这些值?
媒体查询和 JS 用同一个值就不会错乱了。
然后在Vue里这样读:
这样就统一了,改一个地方就行。