美文网首页
Vue-懒加载(判断元素是否在可视区域内)

Vue-懒加载(判断元素是否在可视区域内)

作者: ZHero_ | 来源:发表于2019-10-15 15:36 被阅读0次

上公式:

元素距离顶部高度(elOffsetTop) >= dom滚动高度(docScrollTop)
并且元素距离顶部高度(elOffsetTop) < (dom滚动高度 + 视窗高度)

上代码:

一个多图表 懒加载 例子

<template>
  <div :id="boxId" style="height: 450px">
    <div v-loading="chartLoading">
      <defect-flight-pattern-chart
        :chart-data="chartData"
        :chart-id="chartId">
      </defect-flight-pattern-chart>
    </div>
  </div>
</template>

<script>
import DefectFlightPatternChart from '~/components/metrics/defect-flight-pattern-chart'
export default {
  components: {
    DefectFlightPatternChart
  },
  props: {
    projectUuid: { type: String, default: '' },
    chartIndex: { type: Number, default: 0 }
  },
  data () {
    return {
      chartData: {},
      chartLoading: false,
      isLoaded: false,
      boxId: 'dashboard-chart-box-',
      chartId: 'dashboard-chart-'
    }
  },
  mounted () {
    this.chartId = this.chartId + this.chartIndex + Math.floor(Math.random() * 1000)
    this.boxId = this.chartId + '-box'
    this.$nextTick(() => {
      this.scroll()
      window.addEventListener('scroll', this.scroll)
    })
  },
  destroyed () {
    window.removeEventListener('scroll', this.scroll, false)
  },
  methods: {
    async getChartData () {
      try {
        this.isLoaded = true
        this.chartLoading = true
        const { data } = await this.$axios.get(`/api/v1/projects/${this.projectUuid}/issues/trend`)
        this.chartData = data
        this.chartLoading = false
      } catch (e) {
        console.log(e)
      }
    },
    async scroll () {
      const elOffsetTop = document.getElementById(this.boxId).offsetTop
      const docScrollTop = document.documentElement.scrollTop - 230
      if (elOffsetTop >= docScrollTop && elOffsetTop < (docScrollTop + window.innerHeight) && !this.isLoaded) {
        await this.getChartData()
      }
    }
  }
}
</script>


觉得有帮助的小伙伴点个赞支持下~

觉得有帮助的小伙伴点个赞支持下~

相关文章

  • Vue-懒加载(判断元素是否在可视区域内)

    上公式: 元素距离顶部高度(elOffsetTop) >= dom滚动高度(docScrollTop)并且元素...

  • 通过Jquery判断页面元素是否在浏览器的可视区域内

    前端开发中,有时需要判断某个元素是否在浏览器的可视区域内,或者是否已经滚动出了可视区域.首先想到的便是JavaSc...

  • IntersectionObserver 监听元素是否出现或离开

    IntersectionObserver 监听元素是否出现或离开可视区域, 实现图片懒加载 Intersectio...

  • 懒加载

    懒加载 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisib...

  • 懒加载

    1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。 2:图片懒加载的原理是什么?...

  • js-动画加载

    思路:当div出现在可视区域内时,通过给div动态加载类名来实现动画。可视区域的判断:div元素距离网页顶部的高度...

  • 前端基础(问答22)

    keywords: jQuery懒加载、回到顶部。 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘...

  • 判断元素是否在可视范围内或是否滚动到底部

    判断元素是否在可视范围内 判断是否滚动到底部

  • 懒加载

    懒加载原理为:基于判断元素是否出现在窗口可视范围内 先将img标签中的src链接设为同一张图片(空白图片),将其...

  • 如何判断元素在可视区域内

    前端 通常在处理瀑布流,或者懒加载等情况时 需要判断元素是否在用户的可视区域。 其实有一个非常简单的方法 就能够解...

网友评论

      本文标题:Vue-懒加载(判断元素是否在可视区域内)

      本文链接:https://www.haomeiwen.com/subject/wbysmctx.html