瀑布流布局完成的代码
发表时间:2023-09-06 来源:明辉站整理相关软件相关文章人气:
[摘要]这篇文章给大家介绍的内容是关于瀑布流布局实现的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。index.html<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"...
这篇文章给大家介绍的内容是关于瀑布流布局实现的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
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>
@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;
}
window.onload = function(){
waterfall();
//要加载的数据,暂时写一个固定数据
var dataInt = {"data":[{"src":'3.jpg'},{"src":'13.jpg'},{"src":'23.jpg'},{"src":'1.jpg'}]};
//一个判断拖动滚动条后是否加载新内容的方法
window.onscroll = function(){
if(checkScrollSlide()){
//将数据块渲染到当前页的尾部
for(var i = 0; i < dataInt.data.length;i++){
var parent = document.getElementById('main');
var newBox = document.createElement('p');
newBox.className = 'box';
parent.appendChild(newBox);
var newPic = document.createElement('p');
newPic.className = 'pic';
newBox.appendChild(newPic);
var newImg = document.createElement('img');
newImg.src = "./imgs/" + dataInt.data[i].src;
newPic.appendChild(newImg);
waterfall();
}
}
}
}
function waterfall(){
var parent = document.getElementById("main");
//写一个方法根据类名box,找到所有节点
var boxArr = getByClass(parent,'box');
//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 = 'width:' + mainWidth + 'px;';
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 + 'px';
iBox.style.top = top + 'px';
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('main');
var boxArr = getByClass(parent,'box');
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;
}
相关文章推荐:
div标签:水平居中和垂直居中的实现(附代码)
css box-sizing属性(盒子模型)的用法介绍
以上就是瀑布流布局实现的代码的详细内容,更多请关注php中文网其它相关文章!
网站建设是一个广义的术语,涵盖了许多不同的技能和学科中所使用的生产和维护的网站。