博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端性能优化--懒加载和预加载
阅读量:6704 次
发布时间:2019-06-25

本文共 1792 字,大约阅读时间需要 5 分钟。

懒加载

代码实现

html

    
Document

css

.image-item {    display: inline-block;    width: 100%;    height: 300px;    background: gray;}

js

var viewHeight = document.documentElement.clientHeight;        function lazyload() {            var imgs = document.querySelectorAll('img[data-original][lazyload]');            imgs.forEach(item => {                if (item.dataset.original == '') {                    return;                }                var rect = item.getBoundingClientRect();                if (rect.bottom >= 0 && rect.top < viewHeight) {                    var img = new Image();                    img.src = item.dataset.original;                    console.log(img.src)                    img.onload = function() {                        item.src = img.src;                    }                    item.removeAttribute('data-original');                    item.removeAttribute('lazyload')                }            })        }        lazyload();        document.addEventListener('scroll', lazyload)

效果

  1. 蓝色为已经请求加载的图片
  2. 红色为还没有请求加载的图片

默认打开,没有操作前

clipboard.png

向下滚动前

clipboard.png

向下滚动后

clipboard.png

冷门属性

ocument.addEventListener(事件监听)

document.addEventListener('scroll', function() {    console.log('aa')})

clipboard.png

dataset

用`dataset.original`获取`data-original` 的属性

img.onload

事件在图片加载完成后立即执行

getBoundingClientRect

用于获取某个元素相对于视窗的位置集合。集合中有top, right, bottom, left等属性

文档各种高度

document.documentElement.clientHeight:视口的大小

document.documentElement.scrollHeight:文档的大小
document.documentElement.offsetHeight:文档的大小

clipboard.png

预加载

标签

new Image()

var image = new Image();image.src = 'https://img.alicdn.com/imgextra/i4/2260152888/O1CN01vw2e251XCkJr0VPZU_!!2260152888-0-beehive-scenes.jpg_250x250xz.jpg';

xml

    

转载地址:http://ofblo.baihongyu.com/

你可能感兴趣的文章
一步步玩pcDuino3--mmc下的bootloader
查看>>
软件测试的四个阶段
查看>>
Java基础八--构造函数
查看>>
【Cloud Foundry】Could Foundry学习(一)——Could Foundry浅谈
查看>>
HTML5文件实现拖拽上传提示效果改进(支持三种状态提示)
查看>>
nj07---npm
查看>>
ldd命令【转】
查看>>
CF Mike and Feet (求连续区间内长度为i的最小值)单调栈
查看>>
项目打成jar包
查看>>
[Angular] Angular Advanced Features - ng-template , ng-container, ngTemplateOutlet
查看>>
sql
查看>>
shell 例程 —— 解决redis读取稳定性
查看>>
sso 自动化运维平台
查看>>
[Java开发之路](15)注解
查看>>
json对象与javaBean,String字符创之间相互转换的方法
查看>>
大型网站架构演进(5)数据库读写分离
查看>>
Ubuntu 16.04安装Kdbg替代Insight实现汇编的调试
查看>>
cookie是什么,在什么地方会用到
查看>>
【AIX】AIX内存机制
查看>>
Redis基础、高级特性与性能调优
查看>>