Vue實(shí)現(xiàn)調(diào)節(jié)窗口大小時(shí)觸發(fā)事件動(dòng)態(tài)調(diào)節(jié)更新組件尺寸的方法
需求:
1. 頁面部分元素的尺寸需要根據(jù)實(shí)際打開時(shí)瀏覽器尺寸進(jìn)行設(shè)置;
2. 頁面打開后,調(diào)節(jié)瀏覽器窗口大小時(shí)需要?jiǎng)討B(tài)調(diào)節(jié)部分元素的尺寸;
需要注意的點(diǎn):
window.onresize只能在項(xiàng)目中一處進(jìn)行引用觸發(fā),如果在多個(gè)地方進(jìn)行引用觸發(fā),會(huì)導(dǎo)致只有1個(gè)觸發(fā)事件生效。
解決“多個(gè)組件都需要觸發(fā)”的方案只能是通過一個(gè)地方觸發(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í)便會(huì)動(dòng)態(tài)計(jì)算myWidth的值(拼接了'px'后便是字符串屬性了)
然后將這個(gè)值通過 v-bind:style=”{width: myWidth}” 賦值綁定到我們需要設(shè)置的div上了,需求1完成。
因?yàn)檫@個(gè)值是載入頁面的時(shí)候就綁定了,是固定的值。那么在使用過程中,如果用戶操作調(diào)節(jié)了瀏覽器窗口的大小,那么應(yīng)該需要觸發(fā)事件改變這個(gè)值才能使組件具有動(dòng)態(tài)調(diào)節(jié)的效果,這個(gè)就是需求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ā),如果在多個(gè)地方進(jìn)行引用觸發(fā),會(huì)導(dǎo)致只有1個(gè)觸發(fā)事件生效。
解決“多個(gè)組件都需要觸發(fā)”的方案只能是通過一個(gè)地方觸發(fā)后通過組件間通信進(jìn)行觸發(fā)。
以上這篇Vue實(shí)現(xiàn)調(diào)節(jié)窗口大小時(shí)觸發(fā)事件動(dòng)態(tài)調(diào)節(jié)更新組件尺寸的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue項(xiàng)目網(wǎng)站全局置灰功能實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了vue項(xiàng)目網(wǎng)站全局置灰功能實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12vue實(shí)現(xiàn)el-select的change事件過程
這篇文章主要介紹了vue實(shí)現(xiàn)el-select的change事件過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04Vue前端登錄token信息驗(yàn)證功能實(shí)現(xiàn)
最近公司新啟動(dòng)了個(gè)項(xiàng)目,用的是vue框架在做,下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)token登錄驗(yàn)證的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12vue自定義底部導(dǎo)航欄Tabbar的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue自定義底部導(dǎo)航欄Tabbar的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09vue插件mescroll.js實(shí)現(xiàn)移動(dòng)端上拉加載和下拉刷新
這篇文章主要介紹了vue插件mescroll.js實(shí)現(xiàn)移動(dòng)端上拉加載和下拉刷新,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03前端登錄退出處理Token問題(獲取、緩存、失效處理)及代碼實(shí)現(xiàn)方法
token是一個(gè)用戶信息的表示,在登錄中將會(huì)從后端拿到token,然后用戶才可以進(jìn)行往后的一系列操作,這篇文章主要給大家介紹了關(guān)于前端登錄退出處理Token問題(獲取、緩存、失效處理)及代碼實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-01-01vue?element-ui如何在el-tabs組件最右側(cè)添加按鈕
這篇文章主要介紹了vue?element-ui如何在el-tabs組件最右側(cè)添加按鈕問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07vue-drawer-layout實(shí)現(xiàn)手勢滑出菜單欄
這篇文章主要為大家詳細(xì)介紹了vue-drawer-layout實(shí)現(xiàn)手勢滑出菜單欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11