资讯专栏INFORMATION COLUMN

前端性能优化--懒加载和预加载

loostudy / 548人阅读

摘要:集合中有等属性文档各种高度视口的大小文档的大小文档的大小预加载标签

懒加载 代码实现 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)
效果

蓝色为已经请求加载的图片

红色为还没有请求加载的图片

默认打开,没有操作前

向下滚动前

向下滚动后

冷门属性 ocument.addEventListener(事件监听)
document.addEventListener("scroll", function() {
    console.log("aa")
})

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

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

getBoundingClientRect

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

文档各种高度

document.documentElement.clientHeight:视口的大小
document.documentElement.scrollHeight:文档的大小
document.documentElement.offsetHeight:文档的大小

预加载 标签
 
new Image()
var image = new Image();
image.src = "https://img.alicdn.com/imgextra/i4/2260152888/O1CN01vw2e251XCkJr0VPZU_!!2260152888-0-beehive-scenes.jpg_250x250xz.jpg";
xml
    
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102076.html

相关文章

  • 加载和预加载

    摘要:使用默认是对象,如果是是指使用标签,可以跨域,三懒加载和预加载的对比两者都是提高页面性能有效的办法,两者主要区别是一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。 一、懒加载 1.什么是懒加载 showImg(https://segmentfault.com/img/remote/1460000016666819); 懒加载也...

    appetizerio 评论0 收藏0
  • 加载和预加载

    摘要:使用默认是对象,如果是是指使用标签,可以跨域,三懒加载和预加载的对比两者都是提高页面性能有效的办法,两者主要区别是一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。 一、懒加载 1.什么是懒加载 showImg(https://segmentfault.com/img/remote/1460000016666819); 懒加载也...

    Shonim 评论0 收藏0
  • 加载和预加载

    摘要:使用默认是对象,如果是是指使用标签,可以跨域,三懒加载和预加载的对比两者都是提高页面性能有效的办法,两者主要区别是一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。 一、懒加载 1.什么是懒加载 showImg(https://segmentfault.com/img/remote/1460000016666819); 懒加载也...

    hedzr 评论0 收藏0
  • 前端性能优化

    摘要:端优谈谈关于前端的缓存的问题我们都知道对页面进行缓存能够有利于减少请求发送,从而达到对页面的优化。而作为一名有追求的前端,势必要力所能及地优化我们前端页面的性能。这种方式主要解决了浅谈前端中的过早优化问题过早优化是万恶之源。 优化向:单页应用多路由预渲染指南 Ajax 技术的出现,让我们的 Web 应用能够在不刷新的状态下显示不同页面的内容,这就是单页应用。在一个单页应用中,往往只有一...

    Dean 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<