Vue-lazyload 圖片懶加載的使用詳解


補充

實現原理:

  先將img標簽的src鏈接設為同一張圖片(比如空白圖片),然后給img標簽設置自定義屬性(比如 data-src),

  然后將真正的圖片地址存儲在data-src中,當JS監聽到該圖片元素進入可視窗口時,將自定義屬性中的地址存儲到src屬性中。達到懶加載的效果

 

圖片懶加載作為優化手段之一,怎能不學習一下嘞

使用詳解:

1.安裝插件

npm install vue-lazyload   --save

 

2.引用插件,並在main.js中全局配置

import Vue from 'vue'
import VueLazyload from 'vue-lazyload'
import { isTestEnv,defaultImg } from '@/config';
Vue.use(VueLazyload, {
  preLoad: 1.3,
  error: defaultImg,
  loading: defaultImg,
  attempt: 1
})

 

在config/index.js文件中配置

let defaultImg = require("@/assets/images/common/productDefault.png");
export {
  defaultImg,
}

這里注意引用本地圖片的位置:

  • 如果占位圖位置在static文件夾內,可以直接引入路徑
  • 如果在assets文件夾內的話需要以require('img.src')的方式引入圖片,不這么寫會導致webpack在打包時候無法正確解析圖片

 

3.頁面中使用

<img v-lazy="imgUrl" alt :key="index" />

 

以上為基本使用方式了

*****************************************************************************************************

如果個別圖片需要單獨設置占位圖,就需要單獨配置一下

效果圖

    

<template>  
<div class="lazyLoadImg_wrap">

<img v-lazy:background-image="getImgObj()" class="first" @click="changeImg(1)" /> <div v-lazy:background-image="getImgObj()" class="first"></div> <img v-lazy="imgUrl" alt class="second"/> </div> </template> <script> export default { name: "lazyLoadImg", data() { return { imgUrl: "//vpclub-img.oss-cn-shenzhen.aliyuncs.com/upload/vphonor/202005/26/637261087251589902.jpg",
    index:1
}; }, methods: { getImgObj(){ return { src: '//vpclub-img.oss-cn-shenzhen.aliyuncs.com/upload/vphonor/202005/07/637244494194836859.jpg', error: '//vpclub-img.oss-cn-shenzhen.aliyuncs.com/upload/vphonor/202005/26/637261040282584208.jpg', loading: '//vpclub-img.oss-cn-shenzhen.aliyuncs.com/upload/vphonor/202005/26/637261040282584208.jpg' } }, } }; </script>

 

如上:使用 img/div 設置其  v-lazy:background-image="{src: item.src, error: 'http://xx.com/error.png', loading: 'http://xx.com/loading-spin.svg'}" 屬性即可

這里將設置屬性放在函數中,抽離出來,美觀易修改

 

之前存在不能動態修改圖片的bug,我測試了一下,現在還像是不存在了,如果有的話,也不怕,解決方案已寫在代碼中

給圖片添加key值即可,如

<img v-lazy="imgUrl" alt :key="index" />

 

分享一刻:

Gzip 格式和 DEFLATE 壓縮算法

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM