vue封裝指令,配合IntersectionObserver實(shí)現(xiàn)圖片懶加載

1.新建plugin.js文件:

const LazyLoadPlugin = {
  install(Vue) {
    Vue.directive('lazy', {
      // 在綁定元素插入到 DOM 中
      inserted: function (el, binding) {
        // IntersectionObserver API 檢測元素是否進(jìn)入視口
        const observer = new IntersectionObserver(entries => {
          if (entries[0].isIntersecting) {
            // 加載圖片
            el.src = binding.value;
            // 停止觀察該元素
            observer.unobserve(el);
          }
        });
        // 開始觀察該元素
        observer.observe(el);
      }
    });
  }
};

export default LazyLoadPlugin;

2.在main.js里注冊:

// main.js

import Vue from 'vue';
import App from './App.vue';
import LazyLoadPlugin from './lazyLoadPlugin';

Vue.use(LazyLoadPlugin);

new Vue({
  render: h => h(App)
}).$mount('#app');
<template>
  <img v-lazy="'path_to_your_image.jpg'" alt="Lazy Loaded Image">
</template>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容