Vue.js:如何在不刷新的情况下更新布局
我想做的是使对话框全屏时,屏幕大小是小的。 我现在的代码是这样的Vue.js:如何在不刷新的情况下更新布局,vue.js,Vue.js,我想做的是使对话框全屏时,屏幕大小是小的。 我现在的代码是这样的 <v-dialog max-width="600px" :fullscreen="screen_width < 450 ? true : false"> ... screen_width: screen.width ... 屏幕宽度:screen.width 但是,这种方式不会在屏幕变小时更新布局,除非用户刷新屏幕 <v-dialog class="dialog"> @m
<v-dialog
max-width="600px"
:fullscreen="screen_width < 450 ? true : false">
...
screen_width: screen.width
...
屏幕宽度:screen.width
但是,这种方式不会在屏幕变小时更新布局,除非用户刷新屏幕
<v-dialog class="dialog">
@media only screen and (max-width: 450px)
.dialog {
width: 100%;
height: 100%;
}
@仅介质屏幕和(最大宽度:450px)
.对话{
宽度:100%;
身高:100%;
}
我也试过这种方法,但没用。如何在不让用户刷新屏幕的情况下更改布局?而不是
screen.width
我更倾向于跟踪视口宽度window.innerWidth
下面的示例跟踪宽度和高度,并通过Vue原型上的反应对象将其公开。该对象可以作为实例上的$viewport
属性访问。窗口上的resize
事件用于侦听视口大小的更改,并相应地更新反应值
如果要在应用程序的多个位置使用视口大小,将其添加到原型中非常有用。如果您只想在一个特定的地方使用它,那么您可以将大部分逻辑移到您的组件中。在这种情况下,您不需要使用Vue.observable
,而只需要为宽度设置一个合适的data
属性。当组件被销毁时,您还需要删除resize
侦听器
constupdatesizes=(obj={})=>{
obj.width=window.innerWidth
obj.height=window.innerHeight
返回obj
}
Object.defineProperty(Vue.prototype,$viewport){
值:Vue.observable(updateSizes())
})
window.addEventListener('resize',()=>{
更新(Vue.prototype.$viewport)
})
新Vue({
el:“#应用程序”,
vuetify:新的vuetify(),
数据(){
返回{
对话:对
}
}
})
标题
正文
而不是屏幕.宽度
我更倾向于跟踪视口宽度,窗口.内部宽度
下面的示例跟踪宽度和高度,并通过Vue原型上的反应对象将其公开。该对象可以作为实例上的$viewport
属性访问。窗口上的resize
事件用于侦听视口大小的更改,并相应地更新反应值
如果要在应用程序的多个位置使用视口大小,将其添加到原型中非常有用。如果您只想在一个特定的地方使用它,那么您可以将大部分逻辑移到您的组件中。在这种情况下,您不需要使用Vue.observable
,而只需要为宽度设置一个合适的data
属性。当组件被销毁时,您还需要删除resize
侦听器
constupdatesizes=(obj={})=>{
obj.width=window.innerWidth
obj.height=window.innerHeight
返回obj
}
Object.defineProperty(Vue.prototype,$viewport){
值:Vue.observable(updateSizes())
})
window.addEventListener('resize',()=>{
更新(Vue.prototype.$viewport)
})
新Vue({
el:“#应用程序”,
vuetify:新的vuetify(),
数据(){
返回{
对话:对
}
}
})
标题
正文
非常感谢。它确实起到了我想做的作用。。谢谢你的解释,非常感谢。它确实起到了我想做的作用。。也谢谢你的解释