图片懒加载

图片懒加载

前言

​ 在项目的后期性能优化的过程中,对于部分图片的加载需要使用懒加载来实现,当然,对于图片也可以使用精灵图(雪碧图)来减少请求来优化。对于网站的性能优化来说,使用图片的懒加载可以很好的提高体验效果。

了解图片懒加载

了解懒加载的特点:

  1. 可以有效减少无用的资源的加载,减少浏览器的负担
  2. 提升用户的体验效果,对于很多图片来说,加载的时间就会变的很长,体验效果很差

针对多个图片我们使用HTML5data-xxx属性来储存图片的路径,在需要加载图片的时候,将data-xxx中图片的路径赋值给src,实现图片的按需加载,也可以依赖其他的包来实现懒加载的效果。

原生实现懒加载

思路:

对于图片的懒加载,我们可以在浏览器滚动的时候,滑到一定的距离再加载图片,这样就可以简单实现懒加载了,对于这一步分的距离我们需要通过JavaScript来控制,所以我们需要了解一些数值:

  1. window.innerHeight 是浏览器可视区的高度
  2. document.body.scrollTop || document.documentElement.scrollTop 是浏览器滚动的过的距离
  3. xx.offsetTop 是元素顶部距离文档顶部的高度(包括滚动条的距离)

我们需要满足条件:xx.offsetTop < window.innerHeight + document.body.scrollTop

系列代码实现:

<div class="container">
     <img src="loading.gif"  data-src="pic.png">
     <img src="loading.gif"  data-src="pic.png">
     <img src="loading.gif"  data-src="pic.png">
     <img src="loading.gif"  data-src="pic.png">
     <img src="loading.gif"  data-src="pic.png">
     <img src="loading.gif"  data-src="pic.png">
</div>
<script>
var imgs = document.querySelectorAll('img');
function lozyLoad(){
		var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
		var winHeight= window.innerHeight;
		for(var i=0;i < imgs.length;i++){
			if(imgs[i].offsetTop < scrollTop + winHeight ){
				imgs[i].src = imgs[i].getAttribute('data-src');
			}
		}
	}
  window.onscroll = lozyLoad;
</script>

在vue实现图片懒加载

vue的项目里面我们需要实现图片懒加载的话可以依赖一些包来完成,安装包:

npm install vue-lazyload --save

引入使用

main.js里面引入,再配置:

// 引入
import VueLazyLoad from 'vue-lazyload'
// 配置使用
Vue.use(VueLazyLoad,{
    error:'/img.jpg',                    //报错时需要的图片
    loading:'/img/jpg'				     //加载时需要的图片
})

在需要的页面使用说明:

//  vue文件中将需要懒加载的图片绑定 v-bind:src 换成 v-lazy 
<img v-lazy="item.img"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值