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

 更新时间:2020年07月27日 08:41:50   作者:一起蹦极某囖  
这篇文章主要介绍了解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

项目需求:图片加载时,当鼠标滚动至当前图片进行加载并加上上滑特效,实现这个效果需要对文档文档滚动位置和图片的当前位置进行比较。但是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 未加载导致页面布局的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue实现ajax滚动下拉加载,同时具有loading效果(推荐)

    vue实现ajax滚动下拉加载,同时具有loading效果(推荐)

    这篇文章主要介绍了vue实现ajax滚动下拉加载,同时具有loading效果的实现代码,文章包括难点说明,介绍的非常详细,感兴趣的朋友参考下
    2017-01-01
  • Vue解决移动端弹窗滚动穿透问题

    Vue解决移动端弹窗滚动穿透问题

    这篇文章主要介绍了Vue解决移动端弹窗滚动穿透问题的方法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • Vue中导入excel文件的两种方式及使用步骤

    Vue中导入excel文件的两种方式及使用步骤

    这篇文章主要介绍了Vue中导入excel文件的两种方式,大概有两种导入文件的方法:form表单和el-upload,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • 从vue基础开始创建一个简单的增删改查的实例代码(推荐)

    从vue基础开始创建一个简单的增删改查的实例代码(推荐)

    这篇文章主要介绍了从vue基础开始创建一个简单的增删改查的实例代码,需要的朋友参考下
    2018-02-02
  • Vue+Echarts实现分时图和交易量图的绘制

    Vue+Echarts实现分时图和交易量图的绘制

    近来发现Echarts API越发的强大,对于绘制各类图形可以使用Echarts实现。本文将利用Echarts实现分时图和交易量图的绘制,希望对大家有所帮助
    2023-03-03
  • 使用Vue3和Axios进行API数据交互的代码实现

    使用Vue3和Axios进行API数据交互的代码实现

    在现代Web开发中,前端框架和库的使用越来越普遍,Vue.js便是其中一个受欢迎的选择,Axios作为一个基于Promise的HTTP客户端,能够帮助我们轻松地与API进行交互,在这篇博客中,我将介绍如何利用Vue 3及Axios进行API数据交互,需要的朋友可以参考下
    2024-09-09
  • vue单向数据流的深入讲解

    vue单向数据流的深入讲解

    单向数据流方式使用一个上传数据流和一个下传数据流进行双向数据通信,两个数据流之间相互独立,下面这篇文章主要给大家介绍了关于vue单向数据流的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 详解nuxt路由鉴权(express模板)

    详解nuxt路由鉴权(express模板)

    这篇文章主要介绍了详解nuxt路由鉴权(express模板),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • vue仿element实现分页器效果

    vue仿element实现分页器效果

    这篇文章主要介绍了vue仿element实现分页器效果,实现思路是定一个值foldPage, 意为当前最多显示的标签数,当总页数超过即显示省略.省略分为左边省略(folder1)和右边省略(folder2),具体实例代码大家参考下本文
    2018-09-09
  • Vuex模块化和命名空间namespaced实例演示

    Vuex模块化和命名空间namespaced实例演示

    这篇文章主要介绍了Vuex模块化和命名空间namespaced的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11

最新评论