vue 监听元素高度的变化_vue+js实时监听屏幕高度实现目标DIV垂直居中

本文通过一个GIF展示了如何在Vue中监听元素高度变化,特别是解决获取#main高度为0的问题。使用window.onresize事件监听浏览器窗口大小变化,动态调整#main的上外边距以实现目标DIV垂直居中。代码示例中,Vue实例绑定了data、methods和生命周期钩子,确保页面加载和窗口调整时都能正确设置元素的margin。
摘要由CSDN通过智能技术生成

一如既往,先看GIF

代码

html

前端样式使用的BootstrapV3,最开始在获取#main的高度的时候用$('#main').height()得到的结果一直为0,网上浏览后找到了解决方案:给目标DIV加上overflow: hidden的样式,我不是专门搞前端的,不去想为什么了

LOG IN

js

利用window.onresize监听浏览器窗口高度变化,重新获取窗口高度,重置#main的上外边距,即(当前窗口高度 - 目标DIV高度) / 2

mouted周期里的代码放在created周期里也是可以的

var vue = new Vue({

el: '#app',

data: {

password: '',

mainStyle: {

marginTop: ''

},

mainHeight: $('#main').height()

},

methods: {

login: function () {

axios

.post(

'/login',

Qs.stringify({username: 'admin', password: this.password})

)

.then(response => {

console.log(response)

})

.catch(error => {

console.log(error);

});

},

setMainMarginTop: function () {

let currentScreenHeight = $(window).height() || $(document).height();

this.mainStyle.marginTop = (currentScreenHeight - this.mainHeight) / 2 + 'px';

}

},

watch: {

},

created: function () {

this.setMainMarginTop()

},

mounted: function () {

window.onresize = () => {

this.setMainMarginTop()

}

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值