瀑布流布局

 

代码 

function putImg(data){
	let element=[];
	data.forEach(item=>{
		let waterItem=create("div","waterItem");
		let images=create("img");
		images.src=item.url;
		let waterText=create("div","waterText");
		waterText.textContent=item.title;
		waterItem.append(images,waterText);
		element.push(waterItem);
		$(".waterfall").append(waterItem);
	})
	return element;
}

let temp=putImg(data);
let waterfallWidth=$(".waterfall").offsetWidth;
let waterItemWidth=$(".waterItem").offsetWidth;
let cols=parseInt(waterfallWidth/waterItemWidth);
let height=new Array(cols).fill(0);
let width=new Array(cols).fill(0);
let marginBottom=20;
window.onload=function(){
	for(let i=0;i<temp.length;i++){
		if (i<cols) {
			height[i]=temp[i].offsetHeight;
			width[i]=temp[i].offsetLeft;
		}else{
			temp[i].style.position="absolute";
			let minHeight=Math.min(...height);
			let minIndex=height.indexOf(minHeight);
			temp[i].style.top=`${minHeight+marginBottom}px`;
			temp[i].style.left=`${width[minIndex]}px`;
			height[minIndex]+=temp[i].offsetHeight+marginBottom;
		}
	}
}

window.addEventListener("scroll",function(){
	let scroll=document.documentElement.scrollTop;
	let winHeigth=this.innerHeight;
	let min=Math.min(...height);
	if (scroll+winHeigth>=min) {
		let temp=putImg(data);
		for(let i=0;i<temp.length;i++){
			temp[i].style.position="absolute";
			let minHeight=Math.min(...height);
			let minIndex=height.indexOf(minHeight);0
			temp[i].style.top=`${minHeight+marginBottom}px`;
			temp[i].style.left=`${width[minIndex]}px`;
			height[minIndex]+=temp[i].offsetHeight+marginBottom;
		}
	}
})

 

数据 

let data=[
	{
		"url":"images/01.jpg",
		"title":"日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。"
	},
	{
		"url":"images/02.jpg",
		"title":"寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急!"
	},
	{
		"url":"images/03.jpg",
		"title":"好雨知时节,当春乃发生。 随风潜入夜,润物细无声。 野径云俱黑,江船火独明。 晓看红湿处,花重锦官城。"
	},
	{
		"url":"images/04.jpg",
		"title":"床前明月光,疑是地上霜。 举头望明月,低头思故乡。"
	},
	{
		"url":"images/05.jpg",
		"title":"君不见黄河之水天上来,奔流到海不复回。 君不见高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来"
	},
	{
		"url":"images/06.jpg",
		"title":"朝辞白帝彩云间,千里江陵一日还。 两岸猿声啼不住,轻舟已过万重山。"
	},
	{
		"url":"images/07.jpg",
		"title":"春眠不觉晓,处处闻啼鸟。 夜来风雨声,花落知多少。"
	},
	{
		"url":"images/08.jpg",
		"title":"白日何短短,百年苦易满。 苍穹浩茫茫,万劫太极长。 麻姑垂两鬓,一半已成霜。"
	},
	{
		"url":"images/09.jpg",
		"title":"昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否,应是绿肥红瘦。"
	},
	{
		"url":"images/10.jpg",
		"title":"国破山河在,城春草木深。 感时花溅泪,恨别鸟惊心。 烽火连三月,家书抵万金。 白头搔更短,浑欲不胜簪。"
	},
	{
		"url":"images/11.jpg",
		"title":"死去元知万事空,但悲不见九州同。 王师北定中原日,家祭无忘告乃翁。。"
	},
	{
		"url":"images/12.jpg",
		"title":"远上寒山石径斜,白云深处有人家。 停车坐爱枫林晚,霜叶红于二月花。"
	},
	{
		"url":"images/13.jpg",
		"title":"美人卷珠帘,深坐颦蛾眉。 但见泪痕湿,不知心恨谁。"
	},
	{
		"url":"images/14.jpg",
		"title":"茅檐低小,溪上青青草。醉里吴音相媚好,白发谁家翁媪。 大儿锄豆溪东,中儿正织鸡笼。最喜小儿亡赖,溪头卧剥莲蓬。"
	},
	{
		"url":"images/15.jpg",
		"title":"四五十年,风雨如晦不重见。 过眼飞云,横竖茫茫一线天。 休要夸口,豪杰劫后是民愿。 海天环顾,一路走来一路烟。"
	},
	{
		"url":"images/16.jpg",
		"title":"人民胜利今何在?满路新贵满目衰! 核弹高置昆仑巅,摧尽腐朽方释怀。"
	},
	{
		"url":"images/17.jpg",
		"title":"江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝。能不忆江南?"
	},
	{
		"url":"images/18.jpg",
		"title":"众鸟高飞尽,孤云独去闲。 相看两不厌,只有敬亭山。"
	},
	{
		"url":"images/19.jpg",
		"title":"碧玉妆成一树高,万条垂下绿丝绦。 不知细叶谁裁出,二月春风似剪刀。"
	},
	{
		"url":"images/20.jpg",
		"title":"鹦鹉来过吴江水,江上洲传鹦鹉名。 鹦鹉西飞陇山去,芳洲之树何青青。 烟开兰叶香风暖,岸夹桃花锦浪生。 迁客此时徒极目,长洲孤月向谁明。"
	},
	{
		"url":"images/21.jpg",
		"title":"慈母手中线,游子身上衣。 临行密密缝,意恐迟迟归。 谁言寸草心,报得三春晖。"
	},
	{
		"url":"images/22.jpg",
		"title":"生当作人杰,死亦为鬼雄。至今思项羽,不肯过江东。"
	},
	{
		"url":"images/23.jpg",
		"title":"汉皇重色思倾国,御宇多年求不得。 杨家有女初长成,养在深闺人未识。 天生丽质难自弃,一朝选在君王侧。 回眸一笑百媚生,六宫粉黛无颜色。 春寒赐浴华清池,温"
	},
	{
		"url":"images/24.jpg",
		"title":"泉眼无声惜细流,树阴照水爱晴柔。 小荷才露尖尖角,早有蜻蜓立上头。"
	},
	{
		"url":"images/25.jpg",
		"title":"幽闺情脉脉,漏长宵寂寂。草萤飞夜户,丝虫绕秋壁。薄笑夫为欣,微欢还成戚。金簪鬓下垂,玉箸衣前滴"
	},
	{
		"url":"images/26.jpg",
		"title":"今朝春比昨朝春,北阮番成南阮贫。 借问牧童应没酒,试尝梅子又生仁。 六如偈送钱塘妾,八斗才逢洛水神。 多少好花空落尽,不曾遇着赏花人。"
	},
	{
		"url":"images/27.jpg",
		"title":"富儿重安居,贫士轻远游。衣食苟不充,奔迸宁得休?前年游稷下,将母住齐州。母卒始归葬,暂一省林邱。本无置锥地,故乡安可留?今当涉河洛,但为妻子谋。出门瞰春光"
	},
]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值