前端学习----瀑布流

上代码

   html部分
<div class="content">
		<div>
			<img src="imgs/t01.jpeg">
		</div>
		<div>
			<img src="imgs/t02.jpeg">
		</div>
		...
</div>
css部分
.content{
	width: 1200px;
	margin: 0 auto;
}
.content>div{
	float: left;
	border: 1px solid rgb(66, 65, 65);
	padding: 10px;
}
.content>div>img{
	width: 250px;//注意这里height不能设置
}
js部分
<script>
	window.onload = function () {
		//1.获取主容器的宽度
		var content = document.getElementsByClassName("content")[0]
		var contentWidth = content.offsetWidth

		//2.获取单个图片高度
		var imgs = content.children
		var imgsWidth = imgs[0].offsetWidth

		//3.第一行可以排列多少张照片
		var nums = Math.floor(contentWidth / imgsWidth)
		console.log(nums);

		//4.收集第一排的所在高度
		var arrHeight = []
		for (var i = 0; i < imgs.length; i++) {
			if (i < nums) {//这里是第一行
				arrHeight.push(imgs[i].offsetHeight)//记录第一行图片的高度
			} else {//在第一行找到最小的高度,把后面的插进去
				var obj = {
					minH: arrHeight[0],//先把第一张设置最小
					minI: 0
				}
				for (var j = 0; j < arrHeight.length; j++) {
					if (arrHeight[j] < obj.minH) {
						obj.minH = arrHeight[j],//找到真正最小的
							obj.minI = j
					}
				}
				imgs[i].style.position = "absolute"//把后一张接在第一行高度最小的
				//记得加px
				imgs[i].style.left = imgs[obj.minI].offsetLeft + 'px'
				imgs[i].style.top = obj.minH + 'px'
				arrHeight[obj.minI] = arrHeight[obj.minI] + imgs[i].offsetHeight//高度更新
			}
		}
	}
</script>

 主要思想:

将图片高度设置成一个空数组,将图片插入到空数组中,数组长度自己定义。

遍历imgs数组找出这一行最小盒子高度,将下一张设置定位拖到最小高度的下面

重新设置该最小高度图片和高度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值