原生JavaScript实现懒加载

源码工程下载地址:https://github.com/blff122620/jsLibary/lazyLoad.html

实现原理就是通过scroll事件判断元素是否已经进入viewport

导入

lazyLoad.js

使用

inViewPort(item)即可 判断item是否在视口里,然后继续进行自己的逻辑就行了
<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <title>图片懒加载</title>
    <link rel="stylesheet" href="./static/css/reset.css">
    <link rel="stylesheet" href="./static/css/global.css">
    <style>
    .content {
        /*height: 1500px;*/
        width: 100%;
        overflow: hidden;
    }

    .content>img {
        border-radius: 5px;
        display: inline-block;
        margin: 200px 0 0 200px;

        width: 235px;
    }
    </style>
</head>

<body>
    <div class="content bg1" id="js-imgdiv">
        <img src="./static/img/lazyDefault.jpg" data-url="./static/img/1.jpg" alt="" >
        <img src="./static/img/lazyDefault.jpg" data-url="./static/img/2.jpg" alt="" >
        <img src="./static/img/lazyDefault.jpg" data-url="./static/img/3.jpg" alt="" >
        <img src="./static/img/lazyDefault.jpg" data-url="./static/img/4.jpg" alt="" >
        <img src="./static/img/lazyDefault.jpg" data-url="./static/img/5.jpg" alt="" >
        <img src="./static/img/lazyDefault.jpg" data-url="./static/img/6.jpg" alt="" >
    </div>

    <script type="text/javascript" src="./static/js/util.js"></script>
    <script type="text/javascript" src="./static/js/lazyLoad.js"></script>
    <script>
    (function() {
        window.onload=function(){

            var pics = $$("#js-imgdiv>img");
            setPicSrc(pics);
            window.onscroll = function(){
                setPicSrc(pics);
            };
            function setPicSrc(pics){
                pics.forEach(function(item){
                    if(inViewPort(item)){
                        setTimeout(function(){
                            item.src = item.dataset.url;
                        },200);//模拟一下网速慢的情况
                    };
                });

            }

        };
    }());
    </script>
</body>

</html>
时间: 2024-10-19 15:46:11

原生JavaScript实现懒加载的相关文章

原生javascript代码懒加载

1.先定义需要懒加载的样式: class="lazyload" 2.设置初始透明度为0.1: .lazyload{ filter: Alpha(opacity=10); -moz-opacity:0.1; opacity:0.1; } 3.把真正需要加载的真实地址放在data-src属性中: src="懒加载图片.png" data-src="真实图片"; 4. 前端开发周大伟同学JavaScript代码编写: function lazyload

原生js实现懒加载并节流

像淘宝网站等,页面中有着大量图片,一次性全部加载这些图片会使浏览器发送大量请求和造成浪费.采用懒加载技术,即用户浏览到哪儿,就加载该处的图片.这样节省网络资源.提升用户体验.减少服务器压力. 方法1:使用scrollTop/innerHeight/offsetTop 基本知识点: window.innerHeight:浏览器可视区域高度 document.body.scrollTop || document.documentElement.scrollTop:浏览器滚动条滚过高度 img.off

抛砖引玉:大型网站性能优化之Javascript异步懒加载技术

懒加载技术是现在许多大型网站的都使用的提高网站性能的方式,它的核心思想是当用户想看页面某个区域时,再加载该区域的数据.这在一定程度上减轻了服务器端的压力,也加快了页面的呈现速度. 其实国内很多网站都用到了懒加载技术,比如国内两个大型电商网站的页面都运用到了这项技术: 天猫首页: 京东商品列表页: 最近在学习时,自己写了一个带懒加载功能的电影列表展示页,大家可以先看下页面效果: http://f81236211.w4w7.tumm.top/lazyload/ 然后自己在页面底部写了一个分页功能,页

Javascript图片的懒加载与预加载

1. 缓载.预载的概念 这些技术不仅限于图片加载,但我们首先讨论最常用的图片加载. 缓载:延迟加载图片或符合某些条件时才加载某些图片. 预载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载.缓载对服务器前端有一定的缓解压力作用,预载则会增加服务器前端压力. 2. 缓载的意义与实现 缓载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 主要体现在三种模式上: 第一种是纯粹的延迟加载,使用setTimeOut

页面性能优化-原生JS实现图片懒加载

在项目开发中,我们往往会遇到一个页面需要加载很多图片的情况.我们可以一次性加载全部的图片,但是考虑到用户有可能只浏览部分图片.所以我们需要对图片加载进行优化,只加载浏览器窗口内的图片,当用户滚动时,再加载更多的图片.这种加载图片的方式叫做图片懒加载,又叫做按需加载或图片的延时加载.这样做的好处是:1.可以加快页面首屏渲染的速度:2.节约用户的流量. 一.实现思路 1.图片img标签自定义一个属性data-src来存放真实的地址. 2.当滚动页面时,检查所有的img标签,判断是否出现在事业中,如果

【JavaScript】使用纯JS实现多张图片的懒加载Lazy(附源码)

一.效果图如下 上面的效果图,效果需求如下 1.还没加载图片的时候,默认显示加载图片背景图 2.刚开始进入页面,自动加载第一屏幕的图片 3.下拉界面,当一张图片容器完全显露出屏幕,即刻加载图片,替换背景图 4.加载图片的时候,有渐进显示图片效果 二.难点 1)如何Ajax请求数据 2)如何动态将json数据绑定到html中. 3)如何通过对图片的定位计算,触发图片懒加载机制 4)加分项,显示图片时有渐现的过渡动画 三.前期知识点 1)Ajax相关知识,XMLHttpRequest对象,所有现代的

原生JS实现图片懒加载之一:Element.getBoundingClientRect()

实际项目开放中,特别是电商项目,由于有大量的图片加载必然会影响性能,所以实现图片的懒加载是非常有必要的. 实现图片懒加载的知识点 标签的data-属性 可视区域的监听 实现图片懒加载的原理 <img alt="loading..." data-src="images/1.jpg"> 当我们监听到图片进入可视区域后,就将data-src到值赋值给src属性 <script> var images = document.querySelector

原生js实现图片懒加载

原理: 将页面中的img标签src指向一张小图片或者src为空,然后定义data-src(这个属性可以自定义命名,我自己用data-src)属性指向真实的图片. src指向一张默认的图片,否则当src为空时也会向服务器发送一次请求.可以指向loading的地址. 代码实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&

原生js实现图片懒加载原理

背景:页面图片多,加载的图片就多.服务器压力就会很大.不仅影响渲染速度还会浪费带宽.比如一个1M大小的图片,并发情况下,达到1000并发,即同时有1000个人访问,就会产生1个G的带宽.为了解决以上问题,提高用户体验,就出现了懒加载方式来减轻服务器的压力,优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能. 1.懒加载原理一张图片就是一个<img>标签,浏览器是否发起请求图片是根据<img>的src属性,所以实现懒加载的关键就是: 在图片没有进入可视区域时,先不给