vue 加载时掉用mounted_解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题...

本文介绍如何解决Vue应用中mounted钩子执行时,图片未加载完成导致的页面布局问题。通过在mounted中加入延迟执行、设置img占位宽高或使用背景图替代img标签等方式来确保正确计算图片位置。同时补充了Vue子组件不重加载的解决方法。
摘要由CSDN通过智能技术生成

项目需求:图片加载时,当鼠标滚动至当前图片进行加载并加上上滑特效,实现这个效果需要对文档文档滚动位置和图片的当前位置进行比较。但是mounted 钩子函数执行时img图片并未加载出来也就是占位为空,导致图片位置计算出问题。

解决这个问题,目前想到几种种方法

一、对mounted 钩子函数 中init方法加上延时

mounted: function() {

this.$nextTick(() => {

// 加上延时避免 mounted 方法比页面加载早执行 或者 对img进行块级化设置宽高进行 提前站位

setTimeout(() => {

this.init()

}, 100)

})

},

init () {

var h = $(window).height()

var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop

var moves = $(".tp").filter(() => {

return !$(this).hasClass("move");

});

moves.each((index, item) => {

var itemTop, isShow;

itemTop = $(item).offset().top;

isShow = (itemTop - scrollTop) < h ? true : false;

console.log(`${index}: ${itemTop} ${scrollTop} ${h}`)

if(isShow) {

$(item).addClass("move");

}

})

},

二、img标签进行块级化并设置宽高进行占位

三、不使用img标签,使用div,并设置background-image

补充知识:vue 解决mounted不重加载子组件问题

有时需要在父组件中重复加载同一个子组件,但会出现子组件不重新加载的问题。

解决方法:在子组件外加一个div框住它:

这样,父组件的数据就可以在每次加载子组件的时候传入到子组件中

以上这篇解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。

原文链接:https://blog.csdn.net/qq_36356218/article/details/86623286

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值