美文网首页
自定义图片懒加载指令(Vue3)

自定义图片懒加载指令(Vue3)

作者: 沃德麻鸭 | 来源:发表于2021-10-07 09:26 被阅读0次

定义自定义指令js

    原理就是一开始不给src附图片地址的值,等到进入指定区域再给它赋值。

这里用到了一个接口IntersectionObserver

IntersectionObserver接口(从属于Intersection Observer API) 提供了一种异步观察目标元素与其祖先元素或顶级文档视窗(viewport)交叉状态的方法。祖先元素与视窗(viewport)被称为根(root)。

当一个IntersectionObserver对象被创建时,其被配置为监听根中一段给定比例的可见区域。一旦IntersectionObserver被创建,则无法更改其配置,所以一个给定的观察者对象只能用来监听可见区域的特定变化值;然而,你可以在同一个观察者对象中配置监听多个目标元素。

自定义指令

思路分析:

①导入默认显示的图片,在加载不出来图片信息时使用

②通过directive指令,定义自定义指令的名称为lazyload,vue3规则是使用mounted函数(vue2是inserted函数),元素插入后才能获取到dom元素,才能使用 intersectionobserve进行监听进入可视区, el 是图片元素,  binding.value 图片地址

③new一个IntersectionObserver实例,在目标元素进入可视区之前对元素进行监听IntersectionObserver.observe()方法就是使IntersectionObserver开始监听一个目标元素。这里使用observer实例

④当目标元素进入可视范围,那么就取消对其的监听IntersectionObserver.unobserve()使IntersectionObserver停止监听特定目标元素。

⑤如果加载不出图片信息,那么就使用导入的默认图片,如果可以加载出来那么就将图片地址赋值给图片元素的src属性

⑥threshold(阈 yu :引申为界限或范围)表示进入可视区域的比例,用来控制加载时机

⑦关键一步,就是一定要记得将这个指令挂载到main.js文件中,成为全局指令

⑧使用时 将 :src用v-lazyload替换

import defaultImg from '@/assets/images/200.png'

const defineDirective = (app) => {

// 图片懒加载指令

app.directive('lazyload', { mounted (el, binding) {

const observer = new IntersectionObserver(([{ isIntersecting }]) => {

         if (isIntersecting) { 

                 observer.unobserve(el)

                 el.onerror = () => {    el.src = defaultImg     }

                el.src = binding.value}

}    ,    { threshold: 0.01 })

                   observer.observe(el) } })

}


相关文章

  • vue 2.0 自定义指令

    前言 自定义指令的简要介绍,以及图片懒加载的应用。 语法介绍 注册全局指令Vue.directive('lazy'...

  • 自定义图片懒加载指令(Vue3)

    定义自定义指令js 原理就是一开始不给src附图片地址的值,等到进入指定区域再给它赋值。 这里用到了一个接口I...

  • Vue3 的自定义指令图片懒加载

    手把手带你写一个 Vue3 的自定义指令 以下文章来源于老黄的前端私房菜 ,作者黄轶黄老师 背景 众所周知,Vue...

  • 自定义图片懒加载组件

    //自定义图片懒加载组件 start

  • 超智能vue图片懒加载之指令化管理(vue-img-lazy-l

    分享一个基于vue的图片懒加载的指令插件,使用起来也是极其简易。图片的懒加载,可以减少首页首次加载的数量,减少服务...

  • vue3常用指令

    防抖 输入框防抖 防抖这种情况设置一个v-throttle自定义指令来实现 图片懒加载 设置一个v-lazy自定义...

  • vue3图片懒加载

    图片懒加载 src/direcitves/index.js 在main.js中引入该文件import direct...

  • vue3图片懒加载

    目的: 当图片进入可视区域内去加载图片,且处理加载失败,封装成指令。介绍一个webAPI:Intersection...

  • Vue自定义指令实现图片懒加载

    什么是图片懒加载 进入页面的时候,只请求可视区域的图片资源 懒加载原理 图片的标签是 img 标签,图片的来源主要...

  • IOS -- cell解决重用机制

    类似微博自定义cell添加图片,通常会导致图片重用 解决方法:手动懒加载图片控件,然后在加载图片之前先清除图片控件...

网友评论

      本文标题:自定义图片懒加载指令(Vue3)

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