zoukankan      html  css  js  c++  java
  • 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 压缩算法

  • 相关阅读:
    java中的静态变量,静态方法与静态代码块详解
    增删改查简单的sql语句
    Java中的输入流与输出流
    Java向mysql中插入时间的方法
    java中Statement 对象
    request和session获取参数的区别
    Session 详解
    Java中静态变量与非静态变量的区别
    MYSQL基础操作之数据约束与关联查询
    MYSQL基础操作之单表的增删改查
  • 原文地址:https://www.cnblogs.com/huangaiya/p/12966760.html
Copyright © 2011-2022 走看看