Vue.js如何監(jiān)聽window窗口尺寸變化
監(jiān)聽window窗口變化
VueJs 監(jiān)聽 window.resize 方法,同時(shí)窗口拉伸時(shí)會(huì)頻繁觸發(fā)resize函數(shù),導(dǎo)致頁(yè)面性能 卡頓 ,可以搭配setTimeout來提升性能
data() { return { screenWidth: document.body.clientWidth,//初始化寬度 } },
在mounted中掛載resize方法
var _this = this window.onresize = () => { return (() => { _this .screenWidth = document.body.clientWidth })() }
watch 監(jiān)聽 data中或props傳遞的數(shù)據(jù)
screenWidth(){ if (!this.timer) { this.timer = true let _this= this setTimeout(function () { ... (執(zhí)行的語(yǔ)句) _this.timer = false }, 500) } }
附:vue實(shí)時(shí)監(jiān)聽窗口寬度變化
獲取窗口寬度:document.body.clientWidth
監(jiān)聽窗口變化:window.onresize
同時(shí)回顧一下JS里
這些方法:
網(wǎng)頁(yè)可見區(qū)域?qū)挘篸ocument.body.clientWidth
網(wǎng)頁(yè)可見區(qū)域高:document.body.clientHeight
網(wǎng)頁(yè)可見區(qū)域?qū)挘篸ocument.body.offsetWidth (包括邊線的寬)
網(wǎng)頁(yè)可見區(qū)域高:document.body.offsetHeight (包括邊線的寬)
我們將document.body.clientWidth賦值給data中自定義的變量:
data:{ screenWidth: document.body.clientWidth }
在頁(yè)面mounted時(shí),掛載window.onresize方法:
mounted () { const that = this window.onresize = () => { return (() => { window.screenWidth = document.body.clientWidth that.screenWidth = window.screenWidth })() } }
監(jiān)聽screenWidth屬性值的變化,打印并觀察screenWidth發(fā)生變化的值:
watch:{ screenWidth(val){ // 為了避免頻繁觸發(fā)resize函數(shù)導(dǎo)致頁(yè)面卡頓,使用定時(shí)器 if(!this.timer){ // 一旦監(jiān)聽到的screenWidth值改變,就將其重新賦給data里的screenWidth this.screenWidth = val this.timer = true let that = this setTimeout(function(){ // 打印screenWidth變化的值 console.log(that.screenWidth) that.timer = false },400) } } }
上面的方案每隔0.4秒會(huì)獲取一次屏幕的寬度,并將寬度值賦值給data中的screenWide,就可以直接通過this.screenWide獲取了
好!既然可以監(jiān)聽到窗口screenWidth值的變化,就可以根據(jù)這個(gè)值設(shè)定不同的自適應(yīng)方案了!
總結(jié)
到此這篇關(guān)于Vue.js如何監(jiān)聽window窗口尺寸變化的文章就介紹到這了,更多相關(guān)Vue監(jiān)聽window窗口尺寸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-cli webpack2項(xiàng)目打包優(yōu)化分享
下面小編就為大家分享一篇vue-cli webpack2項(xiàng)目打包優(yōu)化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02Vue 全家桶實(shí)現(xiàn)移動(dòng)端酷狗音樂功能
這篇文章主要介紹了Vue 全家桶實(shí)現(xiàn)移動(dòng)端酷狗音樂功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11Nuxt pages下不同的頁(yè)面對(duì)應(yīng)layout下的頁(yè)面布局操作
這篇文章主要介紹了Nuxt pages下不同的頁(yè)面對(duì)應(yīng)layout下的頁(yè)面布局操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11在vue中實(shí)現(xiàn)禁止回退上一步,路由不存歷史記錄
這篇文章主要介紹了在vue中實(shí)現(xiàn)禁止回退上一步,路由不存歷史記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07Vue+elementUI實(shí)現(xiàn)多圖片上傳與回顯功能(含回顯后繼續(xù)上傳或刪除)
這篇文章主要介紹了Vue+elementUI實(shí)現(xiàn)多圖片上傳與回顯功能(含回顯后繼續(xù)上傳或刪除),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03electron-vite工具打包后如何通過內(nèi)置配置文件動(dòng)態(tài)修改接口地址
使用electron-vite?工具開發(fā)項(xiàng)目打包完后每次要改接口地址都要重新打包,對(duì)于多環(huán)境切換或者頻繁變更接口地址就顯得麻煩,這篇文章主要介紹了electron-vite工具打包后通過內(nèi)置配置文件動(dòng)態(tài)修改接口地址實(shí)現(xiàn)方法,需要的朋友可以參考下2024-05-05VUE路由動(dòng)態(tài)加載實(shí)例代碼講解
在本文里小編給大家整理了關(guān)于VUE路由動(dòng)態(tài)加載實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-08-08SpringBoot+Vue前后端分離,使用SpringSecurity完美處理權(quán)限問題的解決方法
這篇文章主要介紹了SpringBoot+Vue前后端分離,使用SpringSecurity完美處理權(quán)限問題,需要的朋友可以參考下2018-01-01