瀑布流小总结

简单总结一下瀑布流的原理:
1、先规划好自己的布局,如一个页面有4列图片
2、获取这4列图片中最低的一个元素高度
3、遍历这4列元素,找出最低的一个元素
4、将要添加的图片添加到最低的元素中,将以上几步封装在一个函数里面
5、在触发滚动条滚动的时候触发这个函数
以此类推... ...
简单的瀑布流就完成了!
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>瀑布流布局</title>
	<style type="text/css">
		* {
			margin: 0;
			padding: 0;
			list-style: none;
		}
		.wrap {
			width: 100%;
			margin: 0 auto;
		}
		.wrap h2 {
			height: 60px;
			line-height: 60px;
			background: #333;
			color: #fff;
			padding-left: 200px;
		}
		.wrap .cont {
			width: 1000px;
			margin: 0 auto;
		}
		.cont ul {
			float: left;
			margin: 0 25px;
		}
		.cont ul li {
			width: 200px;
			height: 80px;
			background: #dcdcdc;
			margin: 10px 0;
		}
		.cont ul li.a1 {
			background: #3cf;
			height: 100px;
		}
		.cont ul li.a2 {
			background: #cf3;
			height: 180px;
		}
		.cont ul li.a3 {
			background: #fc3;
			height: 150px;
		}
		.cont ul li.a4 {
			background: #3fc;
			height: 240px;
		}
		.cont ul li.a5 {
			background: #ff00ff;
			height: 240px;
		}
		.cont ul li.a6 {
			background: #8400ff;
			height: 300px;
		}
		.cont ul li.a7 {
			background: #ff0000;
			height: 50px;
		}
		.clear {
			clear: both;
		}
	</style>
	<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
	<script type="text/javascript">
		$(function () {
			// 先获取页面中ul中的最小高度
			function appendLi () {
				var ulList = $('.cont ul');
				var ul1_h = ulList[0].offsetHeight; 
				var ul2_h = ulList[1].offsetHeight;
				var ul3_h = ulList[2].offsetHeight;
				var ul4_h = ulList[3].offsetHeight;
				var minUl = Math.min(ul1_h, ul2_h, ul3_h, ul4_h); // 获取ul中最小的高度
				var min_ul = '';
				var lis = '';
				for (var i = 0; i < ulList.length; i++) {
					if (ulList[i].offsetHeight == minUl) {   // 比较ul中最小的一个
						min_ul = ulList[i];
					}
					lis = '<li class="a'+getRandom(10)+'"></li>';
				}
				$(min_ul).append(lis); // 最小的元素下面添加li
			}


			for (var i = 0; i < 14; i++) {  // 页面一加载就循环添加 可去掉
				appendLi();
			}
			
			// 生成随机数
			function getRandom (n){
	        	return Math.floor(Math.random()*n+1)
	        }

	        // 当滚动条滚动的时候 触发函数
			window.onscroll = function () {
				var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
				var docH = document.documentElement.offsetHeight;//整个文档高度
				var winH = document.documentElement.clientHeight;//窗口高度
				if (docH-winH-100 < scrollTop) {
					appendLi();
				}

				// 窗口的高+滚动条距离顶部的距离 = 文档的高度
				// 文档的高度 - 窗口的高度 =  滚动条距离顶部的距离
				// 文档的高度 - 窗口的高度 - 100 < 滚动条距离顶部的距离
				// 最终得到的可以用另一句话说 滚动条距离底部100像素
			}
			
		})
	</script>
</head>
<body>
	<div class="wrap">
		<h2>瀑布流展示:</h2>
		<div class="cont">
			<ul>
				<li class="a1"></li>
			</ul>
			<ul>
				<li class="a2"></li>
			</ul>
			<ul>
				<li class="a3"></li>
			</ul>
			<ul>
				<li class="a4"></li>
			</ul>
			<div class="clear"></div>
		</div>
	</div>
</body>
</html>

原文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值