原声JS瀑布流加延迟加载

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>瀑布流</title>
    <style>
       *{
        margin: 0px;
        padding:0px;
       }
       .box{
        position: relative;
        top:0px;
        }
       ul li{
        list-style-type: none;
        position: absolute;
        padding:10px;
        width:300px;
        border:1px solid #ccc;
        -webkit-transition:all .7s ease-out .1s;
        -moz-transition:all .7s ease-out .1s;
        -o-transition:all .7s ease-out .1s;
        transition:all .7s ease-out .1s;
        opacity:0;
       }
       h1{
        text-align: center;
       }
       h1 span{color: #ff0ff0;}
    </style>
    <script>
       document.getElementsByClassName=function(oparent,oclass){
            try {
                return oparent.querySelectorAll("." + oclass);
            } catch (ex){
                var reset = [];
                var reg = new RegExp("\\b" + oclass + "\\b");
                var oCur = oparent.all;
                for (var i = 0; i < oCur.length; i++) {
                    if (reg.test(oCur[i].className)) {
                        reset.push(oCur[i]);
                    }
                };
                return reset;
            }
        }  

        window.onresize=window.onload=function(){
           var obox=document.getElementsByClassName(document,"box")[0];
               margin=10;
               oli=obox.getElementsByTagName("li");
               liWidth=oli[0].offsetWidth+margin;
              function show(){
                   var bodyWidth=document.body.offsetWidth;
                       columnHeight=[];
                     /*olight=oli.length;*/
                       n=parseInt(bodyWidth/liWidth);
                       columnNum=n==0?1:n;
                      // console.log(columnNum)
                       bodyLeft=bodyWidth>=liWidth?bodyWidth-columnNum*liWidth:0;
                       obox.style.left=parseInt(bodyLeft/2)-(margin/2)+"px";
                        j=0;
                       for (var i = 0; i < oli.length; i++) {
                           if(i<columnNum){
                                columnHeight[i]=oli[i].offsetHeight+margin;
                                oli[i].style.left=i*liWidth+"px";
                                oli[i].style.top=0;
                           }else{
                                if(j>=columnHeight.length){
                                   j=0;
                                }
                            var imgheight=oli[i].offsetHeight+margin;
                                oli[i].style.top=columnHeight[j]+"px";
                                oli[i].style.left=j*liWidth+"px";
                                columnHeight[j]+=imgheight;
                                j++;
                                console.log(j+"J"+oli[i].offsetTop+"和"+ j*liWidth+"I"+i)
                                }

                       }

               }
               function runing(){
                    wscrillTop=document.documentElement.scrollTop||document.body.scrollTop;
                    winH=document.documentElement.clientHeight;
                    for (var i = 0; i < oli.length; i++) {
                        var oliheight=oli[i].offsetHeight/3;
                            scrolltop=(oli[i].getBoundingClientRect().top)+wscrillTop;
                             if(scrolltop>=wscrillTop&&wscrillTop+winH>scrolltop+oliheight){
                                 oli[i].style.opacity=1;
                             }
                    };
               }
               show();
               runing();
               window.onscroll=function(){
                runing();
               }
        }

    </script>
</head>
<body>
<h1>众森美女动漫大集合- <span>延迟加载+瀑布流</span>(缩小扩大窗口有惊喜哦-IE8以下。360浏览器暂时无效,请用chrome看效果。)</h1>
     <div class="box">
         <ul>
             <li><img src="1.jpg" alt="111111"></li>
             <li><img src="2.jpg" alt="111111"></li>
             <li><img src="3.jpg" alt="111111"></li>
             <li><img src="4.jpg" alt="111111"></li>
             <li><img src="5.jpg" alt="111111"></li>
             <li><img src="6.jpg" alt="111111"></li>
             <li><img src="7.jpg" alt="111111"></li>
             <li><img src="8.jpg" alt="111111"></li>
             <li><img src="9.jpg" alt="111111"></li>
             <li><img src="10.jpg" alt="111111"></li>
             <li><img src="11.jpg" alt="111111"></li>
             <li><img src="12.jpg" alt="111111"></li>
             <li><img src="13.jpg" alt="111111"></li>
             <li><img src="14.jpg" alt="111111"></li>
             <li><img src="15.jpg" alt="111111"></li>
             <li><img src="1.jpg" alt="111111"></li>
             <li><img src="2.jpg" alt="111111"></li>
             <li><img src="3.jpg" alt="111111"></li>
             <li><img src="4.jpg" alt="111111"></li>
             <li><img src="5.jpg" alt="111111"></li>
             <li><img src="6.jpg" alt="111111"></li>
             <li><img src="7.jpg" alt="111111"></li>
             <li><img src="8.jpg" alt="111111"></li>
             <li><img src="9.jpg" alt="111111"></li>
             <li><img src="10.jpg" alt="111111"></li>
             <li><img src="11.jpg" alt="111111"></li>
             <li><img src="12.jpg" alt="111111"></li>
             <li><img src="13.jpg" alt="111111"></li>
             <li><img src="14.jpg" alt="111111"></li>
             <li><img src="15.jpg" alt="111111"></li>
         </ul>
     </div>
</body>
</html>

宽度固定 这样才能做瀑布流 再用绝对定位进行,第一排的top都等于0 首先用body 的宽度除以1个li的宽度 等到n列 在到第二列开始循环每行的top值 left值和第一排是一样 列数数更具body 的宽度变化而变化 不等于 最低等于1列 用数字保存对应列的li高度。延迟加载在上一篇写过,原理可以看看那边的 。不懂的可以加我QQ相互探讨:295989501

dome

原声JS瀑布流加延迟加载

时间: 2024-12-10 23:43:43

原声JS瀑布流加延迟加载的相关文章

[JS] 瀑布流加载

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="keywords" content=""> <meta name="description" content=""> <title></title> <script type=&

js实现瀑布流加载图片效果

今天学习了一个瀑布流加载效果,很多网站都有瀑布流效果,瀑布流就是很多产品显示在网页上,宽相同,高度不同,表现为多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.原理是:1.设定一行中的列数:2.取第一行中每一个div的高度并把每一个高度放进一个数组中:3.算出数组中最小高度的index值:4.把第二行的第一个div放到最小高度的div的下方并把重新算出的高度值放进数组中,重新计算最小高度的index值:5.以此类推实现多栏布局的瀑布流效果:6.如果最后一张div的高度

面向对象js瀑布流效果

index.html <!doctype html><html lang="en"> <head>  <!--网站编码格式,UTF-8 国际编码,GBK或 gb2312 中文编码-->  <meta charset="UTF-8">  <meta name="Keywords" content="">  <meta name="Descri

原声js基础笔记

原声js基础笔记 前端开发群: 欢迎加入. <!DOCTYPE html> <html> <head> <title>设置一个元素是否可见</title> <meta charset="utf-8"> </head> <style type="text/css"> .tips{width:370px;background:#CCC;display:none;} </

js 瀑布流

项目没上线,办公室里坐着学习技术,尼玛钱不够花啊,所以多学技术呗,仿写了个js 瀑布流,ide用的是idea14. 效果还可以. 1.项目效果图 index.html <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>js瀑布流</title> <link href="css/app.css

js瀑布流的代码

<!doctype html> <html> <head> <meta charset="utf-8"> <title>Jquery瀑布流布局(每行代码都有详细注释)-作者:刘晓帆</title> <style type="text/css"> body, ul, li, h3 { margin: 0; padding: 0; list-style: none; font: bold

关于产品的一些思考——瀑布流加载

对网站页面的瀑布流加载已经忍受了很长时间,今天就在这里记录一下,讨论下那些令我"厌恶"的瀑布流加载. 当初好像是因为Pinterest,各大网站开始纷纷引入瀑布流加载方式,引入瀑布流仁者见仁智者见智,个人觉得还是不是很友好的(瀑布流适合图片类网站,针对文章性网站,真的不是很合适),我是可以在同一个页面看完所有相关的内容,可是我要无限地滚动鼠标,无限地点按向下箭头或者无限地点按空格键,还是觉得没有点击下一页要好,尤其是当用户看了很多内容,想回头寻找自己感兴趣的内容的时候,当然可以使用Ct

css3多列布局瀑布流加载样式

看了一些网站的瀑布流加载,正好看到css3的多列属性,尝试着写了一个css做布局的瀑布流. 直接上代码: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>CSS3多列属性瀑布流</title> <style> /*大层*/ .container{width:80%;margin: 0 auto;}

JS瀑布流效果-布局

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>JS瀑布流效果-布局</title> <style> * { margin: 0px; padding: 0px; } #container { position: relative; } .box { padding: 5px; float: left; } .box_img {