Vue實(shí)現(xiàn)調(diào)節(jié)窗口大小時(shí)觸發(fā)事件動態(tài)調(diào)節(jié)更新組件尺寸的方法
需求:
1. 頁面部分元素的尺寸需要根據(jù)實(shí)際打開時(shí)瀏覽器尺寸進(jìn)行設(shè)置;
2. 頁面打開后,調(diào)節(jié)瀏覽器窗口大小時(shí)需要動態(tài)調(diào)節(jié)部分元素的尺寸;
需要注意的點(diǎn):
window.onresize只能在項(xiàng)目中一處進(jìn)行引用觸發(fā),如果在多個地方進(jìn)行引用觸發(fā),會導(dǎo)致只有1個觸發(fā)事件生效。
解決“多個組件都需要觸發(fā)”的方案只能是通過一個地方觸發(fā)后通過組件間通信進(jìn)行觸發(fā)。
(以調(diào)節(jié)class為myDiv的div的寬度為例)
解決需求1的方案:
html
<template>
<div class="example">
<div class='myDiv' v-bind:style="{width: myWidth}"></div>
</div>
</template>
script
<script>
export default {
// 其余的忽略不寫了
data () {
return {
myWidth: (window.innerWidth - 500) + 'px'
}
}
}
</script>
如上設(shè)置后,頁面打開時(shí)便會動態(tài)計(jì)算myWidth的值(拼接了'px'后便是字符串屬性了)
然后將這個值通過 v-bind:style=”{width: myWidth}” 賦值綁定到我們需要設(shè)置的div上了,需求1完成。
因?yàn)檫@個值是載入頁面的時(shí)候就綁定了,是固定的值。那么在使用過程中,如果用戶操作調(diào)節(jié)了瀏覽器窗口的大小,那么應(yīng)該需要觸發(fā)事件改變這個值才能使組件具有動態(tài)調(diào)節(jié)的效果,這個就是需求2了:
解決需求2的方案:
html
<template>
<div class="example">
<div class='myDiv' v-bind:style="{width: myWidth}"></div>
</div>
</template>
script
<script>
export default {
// 其余的忽略不寫了
data () {
return {
myWidth: (window.innerWidth - 500) + 'px'
}
},
mounted () {
// 注:window.onresize只能在項(xiàng)目內(nèi)觸發(fā)1次
window.onresize = function windowResize () {
// 通過捕獲系統(tǒng)的onresize事件觸發(fā)我們需要執(zhí)行的事件
this.myWidth = (window.innerWidth - 500) + 'px';
}
}
}
</script>
需要注意的點(diǎn):
window.onresize只能在項(xiàng)目中一處進(jìn)行引用觸發(fā),如果在多個地方進(jìn)行引用觸發(fā),會導(dǎo)致只有1個觸發(fā)事件生效。
解決“多個組件都需要觸發(fā)”的方案只能是通過一個地方觸發(fā)后通過組件間通信進(jìn)行觸發(fā)。
以上這篇Vue實(shí)現(xiàn)調(diào)節(jié)窗口大小時(shí)觸發(fā)事件動態(tài)調(diào)節(jié)更新組件尺寸的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue3.0引入百度地圖并標(biāo)記點(diǎn)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue3.0引入百度地圖并標(biāo)記點(diǎn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
vue(element ui)使用websocket及心跳檢測方式
這篇文章主要介紹了vue(element ui)使用websocket及心跳檢測方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
v-if 導(dǎo)致 elementui 表單校驗(yàn)失效問題解決方案
在使用 elementui 表單的過程中,某些表單項(xiàng)需要通過 v-if 來判斷是否展示,但是這些表單項(xiàng)出現(xiàn)了檢驗(yàn)失效的問題,今天小編給大家介紹v-if 導(dǎo)致 elementui 表單校驗(yàn)失效問題解決方案,感興趣的朋友一起看看吧2024-01-01
解決VUE的對話框el-dialog點(diǎn)擊外部消失問題
這篇文章主要介紹了解決VUE的對話框el-dialog點(diǎn)擊外部消失問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Vue列表循環(huán)從指定下標(biāo)開始的多種解決方案
這篇文章主要介紹了Vue列表循環(huán)從指定下標(biāo)開始的多種方案,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
使用element-ui +Vue 解決 table 里包含表單驗(yàn)證的問題
這篇文章主要介紹了使用element-ui +Vue 解決 table 里包含表單驗(yàn)證的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
antd的select下拉框因?yàn)閿?shù)據(jù)量太大造成卡頓的解決方式
這篇文章主要介紹了antd的select下拉框因?yàn)閿?shù)據(jù)量太大造成卡頓的解決方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

