Heim > Web-Frontend > HTML-Tutorial > Code für die Implementierung des Wasserfall-Flow-Layouts

Code für die Implementierung des Wasserfall-Flow-Layouts

不言
Freigeben: 2018-08-07 09:52:06
Original
1885 Leute haben es durchsucht

Dieser Artikel stellt Ihnen den Code für die Implementierung des Wasserfall-Flow-Layouts vor. Er hat einen gewissen Referenzwert. Ich hoffe, er wird Ihnen hilfreich sein.

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>waterfall layout</title>
<link type="text/css" href="./imgs/wf.css" rel="stylesheet"/> 
<script type="text/javascript" src="./imgs/wf.js"></script>
</head>
<body>
<div id="main">
    <div class="box">
        <div class="pic">
            <img src="imgs/0.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/1.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/2.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/3.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/4.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/5.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/6.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/7.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/8.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/9.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/10.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/11.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/12.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/13.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/14.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/15.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/16.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/17.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/18.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/19.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/20.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/21.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/22.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/23.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/24.jpg"/>
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="imgs/25.jpg"/>
        </div>
    </div>
</div>
</body>
</html>
Nach dem Login kopieren
  • wf.css

@CHARSET "UTF-8";
*{margin:0;padding:0}
#main{
    position: relative;
    margin: 10px auto 0 auto;
}
.box{
    float:left;
    padding: 0 0 15px 15px; 
}
.pic{
    border: 1px solid #ccc;
    padding: 10px;
}
.box img{
    width: 200px;
    height: auto;
}
Nach dem Login kopieren
  • wf.js

window.onload = function(){
    waterfall();
    //要加载的数据,暂时写一个固定数据
    var dataInt = {"data":[{"src":&#39;3.jpg&#39;},{"src":&#39;13.jpg&#39;},{"src":&#39;23.jpg&#39;},{"src":&#39;1.jpg&#39;}]};
    //一个判断拖动滚动条后是否加载新内容的方法
    window.onscroll = function(){
        if(checkScrollSlide()){
            //将数据块渲染到当前页的尾部
            for(var i = 0; i < dataInt.data.length;i++){
                var parent = document.getElementById(&#39;main&#39;);
                var newBox = document.createElement(&#39;p&#39;);
                newBox.className = &#39;box&#39;;
                parent.appendChild(newBox);
                var newPic = document.createElement(&#39;p&#39;);
                newPic.className = &#39;pic&#39;;
                newBox.appendChild(newPic);
                var newImg = document.createElement(&#39;img&#39;);
                newImg.src = "./imgs/" + dataInt.data[i].src;
                newPic.appendChild(newImg);
                waterfall();
            }
        }
    }
}
function waterfall(){
    var parent = document.getElementById("main");
    //写一个方法根据类名box,找到所有节点
    var boxArr = getByClass(parent,&#39;box&#39;);
    //console.log(boxArr.length);//26,检验是否获取到
    var bodyWidth = document.body.clientWidth;
    //document.body.clientWidth  窗口实时显示时的body的宽度
    var colWidth = boxArr[0].offsetWidth;//box p的宽度
    var cols = Math.floor(bodyWidth / colWidth);
    //给main p一个宽度,从而让显示内容不会随着浮动,改变布局
    var mainWidth = colWidth * cols;
    parent.style.cssText = &#39;width:&#39; + mainWidth + &#39;px;&#39;;
    var colsHeight = [];//放列高度的数组
    for(var i = 0; i < boxArr.length;i++){
        var iBox = boxArr[i];
        if(i < cols){
            colsHeight.push(iBox.offsetHeight);
        }else{
            var rArr = searchMin(colsHeight);
            var index = rArr[0];
            var minH = rArr[1];
            var left = parseInt(index * colWidth);
            var top = minH;
            iBox.style.position = "absolute";
            iBox.style.left = left + &#39;px&#39;;
            iBox.style.top = top + &#39;px&#39;;
            colsHeight[index] += iBox.offsetHeight;
        }
    }
}

function getByClass(parent,clsName){
    //用通配符获得prent下的所有标签节点
    var allTags = document.getElementsByTagName("*");
    var arr = new Array();
    for(var i = 0; i < allTags.length;i++){
        if(allTags[i].className == clsName){
            arr.push(allTags[i]);
        }
    }
    return arr;
}
function searchMin(arr){
    var min = arr[0];
    var index = 0;
    for(var j = 0; j < arr.length; j++){
        if(arr[j] < min){
            min = arr[j];
            index = j;
        }
    }
    return [index,min];    
}
function checkScrollSlide(){
    var parent = document.getElementById(&#39;main&#39;);
    var boxArr = getByClass(parent,&#39;box&#39;);
    var lastBox = boxArr[boxArr.length-1];
    var lbHeight = lastBox.offsetTop+Math.floor(lastBox.offsetHeight/2);
    console.log(lbHeight);
    var slideH = document.body.scrollTop || document.documentElement.scrollTop;
    console.log(slideH);
    var winH = document.body.clientHeight || document.documentElement.clientHeight;
    console.log(winH);
    var swHeight = slideH + winH;
    return (lbHeight < swHeight) ? true : false;
}
Nach dem Login kopieren

Empfohlene verwandte Artikel:

div-Tag: Implementierung der horizontalen Zentrierung und vertikalen Zentrierung (mit Code)

Einführung in die Verwendung des CSS-Boxgrößenattributs (Boxmodell)

Das obige ist der detaillierte Inhalt vonCode für die Implementierung des Wasserfall-Flow-Layouts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage