照片墙 Html

本文介绍了如何创建一个照片墙效果,包括使用Css层叠样式进行美化,通过JQuery Script和JQuery Style进行交互设计,以及详细阐述处理函数和库引用的步骤。还提供了瀑布流布局和不同版本的实现文件,如css3版本和jquery版本。
摘要由CSDN通过智能技术生成

效果

效果如图

Css 层叠样式

* {
	margin: 0;
	padding: 0;
}
#main {
	position: relative;
	width: 100%;
}
.box {
	padding: 15px 0 0 15px;
	float: left;
}
.pic {
	padding: 10px;
	border: 1px solid #ccc;
	border-radius: 5px;
	box-shadow: 0 0 5px #ccc;
}
.pic img {
	width: 165px;
	height: auto;
}

JQuery Script

$(window).on('load', function() {
	waterfall();
	var dataInt = {"data":[{"src":"o.jpg"},{"src":"2.jpg"},{"src":"3.jpg"}]};
	$(window).on('scroll',function(){
		if(checkScrollSlide){
			$.each(dataInt.data,function(key,value){
				console.log(value);
				var oBox=$('<div>').addClass('box').appendTo($('#main'));
				var oPic = $('<div>').addClass('pic').appendTo($(oBox));
				 $('<img>').attr('src','images/'+$(value).attr('src')).appendTo($(opic));
				// console.log($(value).attr('src'));
				

			})
			waterfall();
		}
	})


})
function checkScrollslide(){
	var $lastBox=$('#main>div').last();
	var lastBoxDis=$lastBox.offset().top+Math.floor($lastBox.outerHeight()/2);
	var scrollTop=$(window).scrollTop();
	var documentH = $(window).height();
	return (lastBoxDis<scrollTop+documentH)?true:false;

}
function waterfall(){
	var $boxs = $('#main>div');//找到所有main下面的一级div
	var w = $boxs.eq(0).outerWidth();//获取每一列的宽度,包括margin和padding
	var cols = Math.floor($(window).width()/w);//获取列数
	$('main').width(w*cols).css('margin','0','auto');
	var hArr = [];
	$boxs.each(function(index,value){
		var h=$boxs.eq(index).outerHeight();//找到index下标的然后获取他的高
		if(index<cols){
			hArr[index] = h;
		}else{
			var minH = Math.mim.apply(null,hArr);
			var minHIndex = $.inArray(minH,hArr);		
			$(value).css({
				'postion': 'absolute',
				'top': minH+'px',
				'left':minHIndex*w+'px'
			});
			hArr[minHIndex]+=$boxs.eq(index).outerHeight()

		}
	})
	console.log(hArr);


}

JQuery Style

#main{-wibkit-column-widht:202px;
	-moz-colum-width:202px;
	-o-column-width:202px;
	-ms-colum-width:202px;
	-webkit-column-count:6;
	-moz-column-count:6;
	-o-column-count:6;
	-ms-columncount:6;
}
.box{padding:10px 0 0 15px;}
.pic{
	padding: 10px;
	border: 1px solid #ccc;
	border-radius: 5px;
	/*圆角的属性*/
	box-shadow: 0 0 5px #ccc;
	width:165px;
}
.pic img{
	display: block;
	width: 165px;
	height: auto; 
}


处理 函数

window.function(){
	waterfall('main','box');
	var dataInt = {"data":[{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"}]};
	window.onscrolls=function(){
		if(checkScrollSlide){
			var oParent = document.getElementById('main');
			//将数据渲染到当前页面尾部
			for(var i=0; i<dataInt.data.length;i++){
				var oBox = document.createElement('div');
				oBox.className='box';
				oParent.appendChild(oBox);
				var oPic = document.createElement('div');
				oPic.className='pic';
				oBox.appendChild(oPic);
				var oImg = document.createElement('img');
				oImg.src = "images/"+dataInt.data[i].src;
				oPic.appendChild(oImg);
			}
			waterfall('main','box');
		}
	}
}
//检测是否具备加载数据块的条件
function checkScrollSlide(){
	var oParent = document.getElementById('main');
	var oBoxs = getByClass(oParent,'box');
	var lastBoxH = oBoxs[oBoxs.length-1].offsetTop+Math.floor(oBoxs[oBoxs.length-1].offsetHeight/2);
	var scrollTop=document.body.scrollTop || document.documentElement.scrollTop;
	console.log(scrollTop);			
	var height = document.body.clientHeight || document.documentElement.clientHeight;
	console.log(height);
	return (lastBoxH<scrollTop+height)?true:false;

}

function waterfall(parent, box){
//将main下的所有class为box的元素取出来
var oParent = document.getElementById(parent);
var oBoxs = getByClass(oParent,box);
console.log(oBoxs.length);
//计算整个页面显示的列数使用(页面宽度/box的宽)
var oBoxW = oBoxs[0].offsetWidth;
console.log(oBoxW);
var cols = Math.floor(document.documentElement.clientWidth/oBoxW);
console.log(cols);
//设置main的宽
oParent.style.cssText='width:'+oBoxW*cols+'px;margin:0 auto';
var hArr=[];
for(var i=0; i<oBoxs.length;i++){
	if(i<=cols){
		hArr.push(oBoxs[i].offsetHeight);
	}else{
		var minH = Math.min.apply(null,hArr);
		console.log(minH);
		var index = getMinIndex(hArr,minH);
		oBoxs[i].style.position='absolute';
		oBoxs[i].style.top=minH+'px';
		oBoxs[i].style.left=oBoxW*index+'px';
		// oBoxs[i].style.left=oBoxs[index].offsetLeft+'px';这两个都可以 
		hArr[index]+=oBoxs[i].offsetHeight;
	}
}
console.log(hArr);
}
function getMinIndex(arr,val){
	for(var i in arr){
		if(arr[i]==val){
			return i;
		}
	}
}
//根据class获取元素
function getByClass(parent,clsName){
	var boxArr = new Array();//用来存储所有class为box的元素
	var oElements = parent.getElementsByTagName('*');//就获取这个下所有的子元素
	for(var i = 0; i<oElements.length;i++){
		if(oElements[i].className == clsName){
			boxArr.push(oElements[i]);
		}
	}
	return boxArr;
}

库引用

jquery-1.9.1.min.js

瀑布流布局.html

<!DOCTYPE html>
<html>
<head>
	<title>瀑布流模型</title>
	<meta charset="utf-8"/>
	<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<div id="main">
	<div class="box">
		<div class="pic">
			<img src="images/0.jpg"/>
		</div>
	</div>
	<div class="box">
		<div class="pic">
			<img src="images/1.jpg"/>
		</div>
	</div>
	<div class="box">
		<div class="pic">
			<img src="images/2.jpg"/>
		</div>
	</div>
	<div class="box">
		<div class="pic">
			<img src="images/3.jpg"/>
		</div>
	</div>
	<div class="box">
		<div class="pic">
			<img src="images/4.jpg"/>
		</div>
	</div>
	<div class="box">
		<div class="pic">
			<
要制作多彩的照片墙,可以使用HTML来创建一个网页,并通过CSS来添加样式和布局。下面是一个简单的教程,说明如何制作一个多彩照片墙HTML页面。 首先,我们需要创建一个HTML文档。在文档的<head>标签里,我们可以引入一个CSS样式表,来定义照片墙的外观。这可以通过在<head>标签里添加如下代码实现: ```html <link rel="stylesheet" type="text/css" href="style.css"> ``` 接下来,在<body>标签里,我们可以创建一个<div>容器,用于展示照片墙。这可以通过添加如下代码实现: ```html <div class="photo-wall"> <!-- 照片墙的内容将在这里添加 --> </div> ``` 然后,在style.css样式表中,我们可以为照片墙容器添加一些样式。例如,可以设置容器的宽度和高度、背景颜色、边框等等。以下是一个例子: ```css .photo-wall { width: 800px; height: 600px; background-color: #f1f1f1; border: 1px solid #ccc; } ``` 现在,我们可以通过添加<img>标签来插入照片。每个<img>标签将显示一个照片。可以通过为<img>标签添加src属性来指定照片的路径。以下是一个例子: ```html <img src="photo1.jpg"> <img src="photo2.jpg"> <img src="photo3.jpg"> ``` 最后,请根据需要在style.css样式表中为<img>标签添加样式,例如设置图片的大小、边距等等。以下是一个例子: ```css img { width: 200px; height: 150px; margin: 10px; } ``` 通过以上步骤,我们可以创建一个简单的多彩照片墙HTML页面。如果希望更加复杂和有趣的效果,还可以通过使用JavaScript或其他技术来添加动画、交互等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值