前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript图片无限懒加载

javascript图片无限懒加载

作者头像
IT架构圈
发布2018-06-01 11:19:29
1.7K0
发布2018-06-01 11:19:29
举报
文章被收录于专栏:IT架构圈IT架构圈

知识点:for循环语句,DOM概念,元素获取,动态布局,基本算法,节点操作,JQ与JS的关系与区别,JS的重要性,如何学习JS。

html代码:

代码语言:javascript
复制
    <div id="box"><!--id="自定义的名称" 命名规范(见名知义:用有语义的英文单词)-->
        <ul><!--无序列表标签-->
            <!--img图片四要素:src width height alt(解释说明)-->
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>

css代码:

代码语言:javascript
复制
    <style>/*css 样式 */
        *{/* 通用选择器:选择到所有的标签元素*/
            margin:0;/*外边距*/
            padding:0;/*内边距*/
        }
        #box{/* # id选择器*/
            width:1000px;
            height:500px;
            /*优秀的开发工程师一定是一个为服务器/cpu考虑的
            background:#963;*/
            margin:auto;
        }
        #box ul li{
            list-style:none;/*去除前面的小黑圆点*/
            width:225px;
            /*height:200px;*/
            background:#fff;
            float:left;/*左浮动:与父元素的左端对齐依次往右端显示,显示不下就换行接着显示*/
            padding:5px;
            margin:5px;
            box-shadow:0 0 5px #333;/*边框阴影:x方向的偏移 y方向偏移 模糊度 颜色*/
        }
        #box ul li img{
             width:225px;
             transition:1s;
        }
    </style>

javascript代码:

代码语言:javascript
复制
<script src="js/jquery.js"></script><!--引入jq文件-->
    <script>
        //创建一个数组来保存图片
        var arr = [//数组名字
            {src : "images/1.png"},
            {src : "images/2.jpg"},
            {src : "images/3.jpg"},
            {src : "images/4.jpg"},
            {src : "images/5.jpg"},
            {src : "images/6.jpg"},
            {src : "images/7.jpg"},
            {src : "images/8.jpg"},
            {src : "images/9.jpg"},
            {src : "images/10.jpg"},
            {src : "images/11.jpg"},
            {src : "images/12.jpg"}
        ];
        //console.log(arr[0].src);
        var i = 0;//定义一个变量
        //动态生成图片标签,添加到Li里面
        function create(){//封装一个函数来创建
            //创建一个div标签
            var oDiv = document.createElement("div");
            var oImg = new Image();//新建一个图片对象
            //0%12 0/12=0 余0 1/12=0余1 2/12=0余2 12/12=1余0 13/12=1余1
            oImg.src = arr[i%arr.length].src;//把数组里面图片的路径赋值给img
            oImg.style.cssText = "opacity:0;transform:scale(0)";
            oDiv.appendChild(oImg);//把图片标签放到div里面
            //把div放到高度最小的li里面
            getList($("#box ul li")).append(oDiv);
            (function(oImg){
                setTimeout(function(){
                    oImg.style.cssText = "opacity:1;transform:scale(1)";
                },100);
            })(oImg)//立马执行
        }
        //create();//调用函数
        //alert(arr.length);
        //封装一个函数来获取高度最小的li
        function getList(obj){
            var length = obj.length;//定义一个变量保存li的列数
            var h = Infinity;//每一列的高度都可以无限高
            var oLi;//定义一个变量来保存符合条件的li列返回出去
            for (var i=0;i<length ;i++ )
            {
                //循环获取每一列的高度来和无限高h作对比 若果小于h加给这个元素添加eq(i)  jq插件里面具体获取某一个元素
                if (obj.eq(i).height() < h)
                {
                    h = obj.eq(i).height();
                    oLi = obj.eq(i);
                }
            }
            return oLi;
        }
        //封装一个函数来循环动态添加多个图片
        var sum;
        function upload(){//自定的
            i++;
            if(i<12){
                for(;i<12;i++){
                    create();
                }
            }else{
                sum = i;
                for (;i<sum+3 ;i++ )
                {
                    create();
                }
            }
        }
        upload();
        //判断滚动条的高度,然后动态添加
        var scrollH = '';//文档高度
        var srollT = '';//滚动条高度
        $(function(){
            var _height = $(window).height();//获取可视区域的高度
            $(window).scroll(function(){//jq滚动条事件
                scrollH = document.body.scrollHeight;//文档高度
                srollT = document.body.scrollTop;//滚动条高度
                //看得见的可视区域高度加上看不见的滚动条高度之和如果大于文档的高度的话就再添加图片
                if(_height + srollT + 50 > scrollH){
                    upload();
                }
            });
        });
    </script>
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
内容识别
内容识别(Content Recognition,CR)是腾讯云数据万象推出的对图片内容进行识别、理解的服务,集成腾讯云 AI 的多种强大功能,对存储在腾讯云对象存储 COS 的数据提供图片标签、图片修复、二维码识别、语音识别、质量评估等增值服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档