【原创】javascript原生实现图片瀑布流

<!DOCTYPE html>
<html lang="zh-cn">
<head>
	<meta charset="UTF-8">
	<title>瀑布流</title>
	<style>
		*{
			padding: 0;
			margin: 0;
		}
		#main{
			position: relative;
		}
		.box{
			float: left;
			padding: 15px 0 0 15px;
		}
		.pic{
			padding:10px;
			border: 1px solid #666;
			border-radius: 3px;
			box-shadow: 0 0  3px #777;
		}
		.pic img{
			height: auto;
			width: 150px;
		}

	</style>
</head>
<body>
	<div id="main">
		<div class="box">
			<div class="pic"><img src="img/1.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/2.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/3.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/4.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/5.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/6.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/7.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/8.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/9.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/10.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/11.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/12.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/13.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/14.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/15.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/16.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/17.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/18.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/19.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/20.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/21.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/22.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/23.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/24.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/25.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/26.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/27.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/28.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/30.jpg" ></div>
		</div>
		<div class="box">
			<div class="pic"><img src="img/31.jpg" ></div>
		</div>
	</div>
	<script>
		window.onload=function(){
			waterfall(‘main‘,‘box‘);
		}

		function waterfall(id,clsN){
			var oid=document.getElementById(id);
			var cls=getByClassName(oid,clsN);
			var boxW=cls[0].offsetWidth;
			var num=Math.floor(document.documentElement.clientWidth/boxW);
			oid.style.cssText="width:"+num*boxW+"px ; margin:0 auto;";
			var ar=[];
			for(var i=0; i<cls.length;i++){
				if(i<num){
					ar[i]=cls[i].offsetHeight;
				}else{
					var minH=Math.min.apply(null,ar);
					var minIndex=getminHIndex(ar,minH);
					cls[i].style.position="absolute";
					cls[i].style.top=minH+"px";
					cls[i].style.left=cls[minIndex].offsetLeft+"px";
					ar[minIndex]+=cls[i].offsetHeight;
				}
			}

		}
		function getminHIndex(arr,minH){
    		for(var i in arr){
       			 if(arr[i]==minH){
            		return i;
       			 }
    		}
		}      
		function getByClassName(parent,classname){
			var arr=new Array();
			var oparent=parent.getElementsByTagName(‘*‘);
			for(var i=0;i<oparent.length;i++){
				if(oparent[i].className==classname){
					arr.push(oparent[i]);
				}
			}
			return arr;
		}

	</script>
</body>
</html>

  

时间: 2024-08-26 10:33:28

【原创】javascript原生实现图片瀑布流的相关文章

【Javascript Demo】图片瀑布流实现

瀑布流就是像瀑布一样的网站——丰富的网站内容,特别是绚美的图片会让你流连忘返.你在浏览网站的时候只需要轻轻滑动一下鼠标滚轮,一切的美妙的图片精彩便可呈现在你面前.瀑布流网站是新兴的一种网站模式——她的典型代表是pinterest.美丽说.蘑菇街这类型的网站. 下面是效果: 核心内容: 1.先设置布局 主要HTML代码如下 <div id="container"> <div class="box"> <div class="co

原生JS实现瀑布流

浏览网页的时候经常会遇到瀑布流布局的网站.也许有些读者不了解瀑布流.瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.比如下面图片的效果,就是一个典型的瀑布流. 网上有很多JQ的瀑布流插件,而且都写好了兼容,都可以尝试去使用,这里只是跟大家分享一下原生js实现瀑布流的效果,一起学习. 一步一步来: 首先新建一个文件,就叫瀑布流.html吧. <!doctype html> <html

代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)

代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到合意的,所以根据网上找的一段代码,进行了较大改动. 需引用 zepto 或 jquery. 我这个是应用于手机上的,两列瀑布流,图片高度未知——等图片的onloaded事件触发后,才对容器进行计算和定位. 大容器是 $("#imgList"),容器格子是$(".pin"

ajax抓取网站接口图片瀑布流笔记

用php结合ajax来实现去其它网站抓取图片,在自己本地用! ajax代码部分 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>图片瀑布流</title> </head> <style>     body{         margin:0;     }    #u

jQuery+HTML5图片瀑布流效果

JavaScript与HTML5实现美女瀑布流布局,本方法是把图片的路径写在了JS的数组里,不过重点好像不是在这里,而是在图片如何自动排列的问题,你可以运行本实例后,点击“加载瀑布流布局”按钮,即可看到图片的瀑布流排列效果,现在很流行这个,希望您从本代码中能找到一些灵感. <!DOCTYPE HTML> <html> <head> <title>jQuery+HTML5图片瀑布流效果丨河北电动叉车|石家庄苗木</title> <style

ios图片瀑布流代码

ios瀑布流,实现简单的瀑布流视图布局,可以显示网络图片,下拉刷新,上拉加载更多. 下载:http://www.huiyi8.com/sc/9087.html ios图片瀑布流代码,布布扣,bubuko.com

js图片瀑布流

一个简单的图片瀑布流 首先准备一个html文件,css用到很少,所以写在html里,还需要一个js文件及几张图片(分辨率随意) html的代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> body { margin: 0px; padding: 0px;

利用LruCache和DiskLruCache加载网络图片实现图片瀑布流效果(升级版)

MainActivity如下: package cc.patience7; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 采用瀑布流的形式加载大量网络图片 * 详细分析参见WaterfallScrollView * * 更新说明: * 在原本的的基础上添加了本地缓存DiskLruCache * * 所以在该示例中对于图片的缓存采用了:LruCache + DiskLruCache 的技术 * * 参考

利用LruCache加载网络图片实现图片瀑布流效果(改进版)

MainActivity如下: package cc.patience4; import cc.patience4.R; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 采用瀑布流的形式加载大量网络图片 * 详细分析参见WaterfallScrollView * * 更新说明: * 该示例在基础版的基础上加入了图片查看功能. * 点击瀑布流中一张图片后可欣赏图片并能对图片进行单指拖动和两指缩放. * 对