手写vue3.0图片懒加载

通过vue3.0自定义指令完成图片懒加载功能

用到vue自定义功能,IntersectionObserver的api

IntersectionObserver这个api的具体用法MDN 阮一峰博客

js部分

  1. index.js部分
// 外部引入lazyload的js文件
import lazyload from './lazyload'

let LazyPlugin = {}

LazyPlugin.install = (Vue) => {
    Vue.directive('lazy', lazyload)
}

export default LazyPlugin
  1. lazyload.js
  • 这个是vue3.0中的用法
export default {
    mounted(el, binding) {
        let io = new IntersectionObserver(entries => {
            entries.forEach(entry => {
                let lazyImage = entry.target;
                if (entry.intersectionRatio > 0) {
                    lazyImage.src = binding.value;
                    io.unobserve(lazyImage);
                }
            });
        });
        io.observe(el);
    }

  1. 在main.js中使用(vue3.0)
import {createApp} from "vue";
import App from "./App.vue";
import LazyPlugin from './lazyPlugin'

createApp(App)
  .use(LazyPlugin)
  .mount("#app");

html中使用

<div class="mv" v-for="(item, i) in mvList" :key="i">
    <img src="../../assets/img/湖边星空.png" v-lazy="item.cover" alt />
</div>
posted @ 2020-09-13 09:27  boyyang  阅读(936)  评论(2编辑  收藏  举报
//黑猫咪:https://unpkg.com/live2d-widget-model-hijiki@1.0.5/assets/hijiki.model.json //白猫咪:https://unpkg.com/live2d-widget-model-tororo@1.0.5/assets/tororo.model.json //萌娘:https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json //狗狗:https://unpkg.com/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json //萌妹1号:https://unpkg.com/live2d-widget-model-z16@1.0.5/assets/z16.model.json //萌妹2号:https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json //萌妹3号:https://unpkg.com/live2d-widget-model-hibiki@1.0.5/assets/hibiki.model.json //妹子4号:https://unpkg.com/live2d-widget-model-izumi@1.0.5/assets/izumi.model.json //妹子5号:https://unpkg.com/live2d-widget-model-miku@1.0.5/assets/miku.model.json //6号:https://unpkg.com/live2d-widget-model-nico@1.0.5/assets/nico.model.json //7号:https://unpkg.com/live2d-widget-model-ni-j@1.0.5/assets/ni-j.model.json //8号:https://unpkg.com/live2d-widget-model-nipsilon@1.0.5/assets/nipsilon.model.json //9号:https://unpkg.com/live2d-widget-model-nito@1.0.5/assets/nito.model.json //10号:https://unpkg.com/live2d-widget-model-tsumiki@1.0.5/assets/tsumiki.model.json //11号:https://unpkg.com/live2d-widget-model-unitychan@1.0.5/assets/unitychan.model.json //帅哥1号:https://unpkg.com/live2d-widget-model-chitose@1.0.5/assets/chitose.model.json //帅哥2号:https://unpkg.com/live2d-widget-model-haruto@1.0.5/assets/haruto.model.json