你的位置:首页 > Java教程

[Java教程]原生JS 实现图片延迟加载


当打开页面,在页面上有很多图片需要加载的情况下,为了不拖网页性能,我们完全可以使用JS延迟加载这些图片,甚至做到按需加载,这里说一下实现思路,可以事先在img标签上,增加一个属性data-url,如<img data-url="真实图片地址" src="默认图片地址" />,通过js获取首屏的高度,这部分img默认优先加载,后续通过滚动条的滚动区域来获取即将加载的img标签,找到这些img标签后,把src属性值替换为data-url的值,巧妙的做到img标签延迟加载图片。以下提供一个demo,你也可以把它封装成小插件,直接引用到你的项目中,来体验一下,是不是很炫呢,不依赖任何的其他js插件哦。

<!doctype html>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>通过原生js延迟加载图片</title>
<style type="text/css">
        div{width:100px;height:100px;background:#F00;margin-bottom:30px}
</style>
</head>
<body>
    <div><img data-url="http://www.pokemon.name/w/image/Sprites/PDW/001.png
    " src="a.gif" /></div>
    <div><img data-url="http://www.pokemon.name/w/image/Sprites/PDW/002.png
    " src="a.gif" /></div>
    <div><img data-url="http://www.pokemon.name/w/image/Sprites/PDW/003.png
    " src="a.gif" /></div>
    <div><img data-url="http://www.pokemon.name/w/image/Sprites/PDW/004.png
    " src="a.gif" /></div>
</body>
//以上图片测试时可用复制多点

<script type="text/javascript">
        (function(){
                //common
                function tagName(tagName){
                        return document.getElementsByTagName(tagName);
                }
                function $(id){
                        return document.getElementById(id);
                }
                function addEvent(obj,type,func){
                        if(obj.addEventListener){
                                obj.addEventListener(type,func,false);        
                        }else if(obj.attachEvent){
                                obj.attachEvent('on'+type,func);
                        }
                }
                
                //这里可以按照需要配置些参数
                var v={
                        eleGroup:null,
                        eleTop:null,
                        eleHeight:null,
                        screenHeight:null,
                        visibleHeight:null,
                        scrollHeight:null,
                        scrolloverHeight:null,
                        limitHeight:null
                }
                
                //对数据进行初始化
                function init(element){
                        v.eleGroup=tagName(element)
                        screenHeight=document.documentElement.clientHeight;
                        scrolloverHeight=document.body.scrollTop;
                        for(var i=0,j=v.eleGroup.length;i<j;i++){
                                if(v.eleGroup[i].offsetTop<=screenHeight && v.eleGroup[i].getAttribute('data-url')){
                                        v.eleGroup[i].setAttribute('src',v.eleGroup[i].getAttribute('data-url'));
                                        v.eleGroup[i].removeAttribute('data-url')
                                }        
                        }
                        
                }
                function lazyLoad(){
                        if(document.body.scrollTop == 0){
                                limitHeight=document.documentElement.scrollTop+document.documentElement.clientHeight;
                        }else{
                                limitHeight=document.body.scrollTop+document.documentElement.clientHeight;
                        }
                        for(var i=0,j=v.eleGroup.length;i<j;i++){
                                if(v.eleGroup[i].offsetTop<=limitHeight && v.eleGroup[i].getAttribute('data-url')){
                                        v.eleGroup[i].src=v.eleGroup[i].getAttribute('data-url');
                                        v.eleGroup[i].removeAttribute('data-url')
                                }        
                        }
                }
                init('img')
                addEvent(window,'scroll',lazyLoad);
        })()                 
</script>
</html>

 




韩国蜜月旅游行程参考韩国特价旅游多少钱到韩国游费用报价大全韩国自助游攻略2015怎样去韩国旅游洛阳国际牡丹园盛花期什么时候?洛阳国际牡丹园花全开了吗? 月亮湾温泉度假村五一住宿方便吗啊?五一遂昌月亮湾温泉度假村住宿价格? 云浮天露山旅游度假区旅游攻略?天露山旅游度假区有住的地方吗? 天露山旅游度假区在哪里?广东天露山旅游度假区在什么地方? 五一香港哪里买衣服有优惠? 五一香港打折吗?2015年五一香港哪里有优惠? 澳门豆捞是什么啊? 香港去太平山顶的缆车怎么去? 泰国曼谷暹罗公园好玩吗?泰国曼谷暹罗公园怎么样? 马尔代夫椰子岛有哪些住宿的地方? 巴厘岛好玩吗? 泰国曼谷机场有ATM机吗?泰国银行营业到几点? 水上丹霞山冬天好玩吗?韶关丹霞山冬天有哪些好玩的? 东莞粤晖园要门票么?东莞粤晖园拓展基地另收费吗? 去这些全球色彩之地,找属于自己的颜色![六] 奇特的菲律宾瀑布餐厅 用餐请脱鞋 (图)[一十十] LD14CC224MAB1A Datasheet LD14CC224MAB1A Datasheet 04023J6R8CBWTR Datasheet 04023J6R8CBWTR Datasheet 1808CC223ZATME Datasheet 1808CC223ZATME Datasheet 巧克力开心乐园好玩吗 巧克力开心乐园好玩吗 巧克力开心乐园好玩吗 日喀则地区昂仁县 日喀则地区昂仁县 日喀则地区昂仁县 外出旅游必备物品 外出旅游必备物品 外出旅游必备物品