前言:圖檔是網站優化的一個重點,圖檔懶加載是其中比較好用的一個方法。jquery也有很多圖檔懶加載的插件,今天看了一下vue的圖檔懶加載插件 ---- vue-lazyload。
1. 安裝:
cnpm install vue-lazyload --save-dev(當然可以用npm或者yarn哦)
2. main.js 中全局引入:
import VueLazyLoad from 'vue-lazyload'
Vue.use(VueLazyLoad, {
preLoad: 1,
error: require('./assets/img/error.jpg'),
loading: require('./assets/img/homePage_top.jpg'),
attempt: 2,
})
3. lazyloadDemo.vue(頁面中)使用:
<template>
<div id="lazyload">
<!-- img中使用圖檔懶加載。 v-lazy代替v-bind:src -->
<ul class="img">
<li v-for="(item,index) in imgList">
<img v-lazy="item" alt="" style="width: 768px;">
</li>
</ul>
<!-- 背景圖中使用圖檔懶加載。 v-lazy:background-image = "" -->
<ul class="bgImg">
<li v-for="(item,index) in imgList" v-lazy:background-image="item"></li>
</ul>
</div>
</template>
<script>
export default {
name:'LazyLoadDemo',
data(){
return{
imgList:[
require('../assets/img/1.jpg'),
require('../assets/img/2.jpg'),
require('../assets/img/3.jpg'),
require('../assets/img/4.jpg'),
require('../assets/img/5.jpg'),
require('../assets/img/6.jpg'),
require('../assets/img/7.jpg'),
require('../assets/img/8.jpg'),
require('../assets/img/9.jpg'),
require('../assets/img/10.jpg'),
require('../assets/img/11.jpg'),
require('../assets/img/12.jpg'),
require('../assets/img/13.jpg'),
require('../assets/img/14.jpg'),
require('../assets/img/15.jpg'),
require('../assets/img/16.jpg'),
require('../assets/img/17.jpg'),
require('../assets/img/18.jpg'),
require('../assets/img/19.jpg'),
require('../assets/img/20.jpg'),
],
}
}
}
</script>
<style scoped>
#lazyload{
width: 768px;
background-color: #fcc;
margin: 0 auto;
.img{
width: 768px;
background-color: #fcc;
}
.bgImg{
li{
width: 768px;
height: 522px;
margin-bottom: 10px;
background-repeat: no-repeat; //注意圖檔大小哦,否則可以顯示不全
background-size: cover;
}
}
}
</style>
使用總結:
img标簽中使用懶加載:v-lazy 代替 v-bind:src ;
背景圖檔中使用懶加載:v-lazy:background-image = "" ==>> 注意圖檔和盒子大小問題,否則顯示可能有問題哦。
使用時最好給一個 key 屬性,即:
<img v-lazy="圖檔位址" :key="圖檔位址">
:key="" 必須要加,否則就會出現,頁面重新整理,其他内容都重新整理了,但是隻有圖檔不重新整理的情況 。因為key可能相同,是以頁面不會更新!!!
官網解釋:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2csITRE5Ee4ckYohmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwITM4ADM0UTM2AzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
最後:
插件位址:vue-lazyload