图片滚动按需加载

对于图片缓存加载jquery有很多插件可以使用,一行代码就能搞定,可对于移动端并且在dom操作不多的情况下用jquery未免就有点拿大炮打蚊子的赶脚了,所以自己写了个原生的,有写的的不好的和需要优化的地方希望大家不吝赐教。

首先先获取需要缓存加载图片距浏览器顶部的距离,然后把页面上所有的img的实际地址写到alt上去,src全部用一张默认通用图

function getTop(dom){
    var top = dom.offsetTop;
    var parent = dom;
    while(parent = parent.offsetParent){
        top += parent.offsetTop;
    }
    return top;
}

定义变量记录之前滚动到哪了

var oldScrollHeight = -1;

再获取页面上所有的img

var img = document.getElementsByTagName(‘img‘);

文档初始化的时候在首屏的图片直接加载

window.onload = function () {
        for(var i=0;i<img.length;i++){
            if(screen.availHeight >= getTop(img[i])){
                img[i].src =  img[i].alt;
                img[i].alt = ‘‘;
            }
        }
    };

当滚动到下面后出现在屏幕的图片再加载

window.onscroll = function(){
        if(document.body.scrollTop > oldScrollHeight){
            for(var i=0 ;i<img.length;i++){
                if(img[i].alt && getTop(img[i]) <= (document.body.scrollTop+screen.availHeight)){
                    img[i].src =  img[i].alt;
                    img[i].alt = ‘‘;
                }
            }
            oldScrollHeight = document.body.scrollTop;
        }
    };

这样就做到图片按需加载了,对于移动端的流量可以很好的节省并且可以加快页面打开速度

时间: 2024-11-19 15:52:49

图片滚动按需加载的相关文章

不依赖jquery的图片LazyLoad按需加载js-echo.js

echo.min.js源码如下: /*! echo.js v1.7.0 | (c) 2015 @toddmotto | https://github.com/toddmotto/echo */ !function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):"object"==typeof exports?module.exports=e:t.e

解决导航下图片不能按需加载的问题减少对资源请求数量

问题描述:在一个三段式的navbar中,各段下面有一个长图(类似这样的) 在优化之前需要加载三张大图这无疑增加了资源请求数量 因此,我想到了将图片转换为背景以此减少请求没想到方案是可行的,上代码 <div class="page-navbar"> <!-- navbar --> <mt-navbar class="page-part" v-model="selected" swipeable> <mt-t

图片的按需加载

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #ul1{ margin: 100px auto 0; padding: 0; } li{ float: left; margin: 0 0 10px 10px; list-style: none; border: 1px solid black; }

性能优化之 - 按需加载

按需加载是网站性能优化立竿见影的其中一项,按需加载可以了解为 当用户触发某个动作的时候,才主动去请求资源,这样带来的优化好处:减少了HTTP请求,节省宽带,让页面首屏的内容更快展现在用户的视线范围内,可见极大提高了用户体检.触发的动作有很多,如鼠标点击,拉动页面滚动条,鼠标经过等等. [一] 图片按需加载 <img src="伪装的图片" width="990" height="90" data-src="http://dummy

按需加载/懒加载

按需解析HTML 按需解析HTML,就是页面一开始不解析HTML,根据需要来解析HTML.解析HTML都是需要一定时间,特别是HTML中包含有img标签.引用了背景图片时,如果一开始就解析,那么势必会增加请求数.常见的有对话框.拉菜单.多标签的内容展示等,这些一开始是不需要解析,可以按需解析. 实现按需解析,首先用<script type=”text/x-template”>html</sccript> 这个标签来对忽略对HTML的解析.然后根据触发的动作,把script里面的HT

“按需加载”的应用(转)

按需加载是前端性能优化中的一项重要措施,按需加载是如何定义的呢?顾名思义,指的是当用户触发了动作时才加载对应的功能.触发的动作,是要看具体的业务场景而言,包括但不限于以下几个情况:鼠标点击.输入文字.拉动滚动条,鼠标移动.窗口大小更改等.加载的文件,可以是JS.图片.CSS.HTML等.后面将会详细介绍“按需”的理解. 按需解析HTML 按需解析HTML,就是页面一开始不解析HTML,根据需要来解析HTML.解析HTML都是需要一定时间,特别是HTML中包含有img标签.引用了背景图片时,如果一

jQuery:实现图片按需加载的方法,当要显示内容的高度超过了页面的高度,按需加载,根据滚动条的位置来判断页面显示的内容

实现图片按需加载的方法,当要显示内容的高度超过了页面的高度,按需加载,根据滚动条的位置来判断页面显示的内容 这个类似于京东或淘宝页面,根绝页面的滚动,显示下面的内容 如下图所示,一开始并不是所有的图片都显示,当滚动条移动到页面最下面的时候,再显示下面的内容 解决思路:通过判断滚动条是否滚动到了页面的最下面,如果滚动到了页面的最下面,则重新加载图片 知识点:1.offset() 方法返回或设置匹配元素相对于文档的偏移(位置) 返回第一个匹配元素的偏移坐标. 该方法返回的对象包含两个整型属性:top

图片的预加载和按需加载

图片预加载 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <style> img{width:500px;margin:100px auto;display: block;} </styl

图片按需加载实现

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>按需加载图片</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 ul{ 12 } 13 img{ 14 w