Vue.js如何監(jiān)聽window窗口尺寸變化
監(jiān)聽window窗口變化
VueJs 監(jiān)聽 window.resize 方法,同時(shí)窗口拉伸時(shí)會(huì)頻繁觸發(fā)resize函數(shù),導(dǎo)致頁面性能 卡頓 ,可以搭配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í)行的語句)
_this.timer = false
}, 500)
}
}附:vue實(shí)時(shí)監(jiān)聽窗口寬度變化
獲取窗口寬度:document.body.clientWidth
監(jiān)聽窗口變化:window.onresize
同時(shí)回顧一下JS里
這些方法:
網(wǎng)頁可見區(qū)域?qū)挘篸ocument.body.clientWidth
網(wǎng)頁可見區(qū)域高:document.body.clientHeight
網(wǎng)頁可見區(qū)域?qū)挘篸ocument.body.offsetWidth (包括邊線的寬)
網(wǎng)頁可見區(qū)域高:document.body.offsetHeight (包括邊線的寬)
我們將document.body.clientWidth賦值給data中自定義的變量:
data:{
screenWidth: document.body.clientWidth
}在頁面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)致頁面卡頓,使用定時(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數(shù)據(jù)更新但table內(nèi)容不更新的問題
這篇文章主要給大家介紹了vue數(shù)據(jù)更新table內(nèi)容不更新解決方法,文中有詳細(xì)的代碼示例供大家作為參考,感興趣的同學(xué)可以參考閱讀一下2023-08-08
從0搭建Vue3組件庫(kù)如何使用?glup?打包組件庫(kù)并實(shí)現(xiàn)按需加載
這篇文章主要介紹了從0搭建Vue3組件庫(kù)如何使用?glup?打包組件庫(kù)并實(shí)現(xiàn)按需加載,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
Vue Router路由動(dòng)態(tài)緩存組件使用詳解
這篇文章主要介紹了Vue Router路由動(dòng)態(tài)緩存組件使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Vue 清除Form表單校驗(yàn)信息的解決方法(清除表單驗(yàn)證上次提示信息)
這篇文章主要介紹了Vue 清除Form表單校驗(yàn)信息的解決方法(清除表單驗(yàn)證上次提示信息),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
nginx+vite項(xiàng)目打包以及部署的詳細(xì)過程
我們使用nginx部署Vue項(xiàng)目,實(shí)質(zhì)上就是將Vue項(xiàng)目打包后的內(nèi)容同步到nginx指向的文件夾,下面這篇文章主要給大家介紹了關(guān)于nginx+vite項(xiàng)目打包以及部署的相關(guān)資料,需要的朋友可以參考下2023-01-01
vue中this.$refs有值,但無法獲取ref的值問題及解決
這篇文章主要介紹了vue中this.$refs有值,但無法獲取ref的值問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
詳解vue 模擬后臺(tái)數(shù)據(jù)(加載本地json文件)調(diào)試
本篇文章主要介紹了詳解vue 模擬后臺(tái)數(shù)據(jù)(加載本地json文件)調(diào)試,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08

