网页布局--瀑布流

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<style>

*{margin: 0;padding: 0;}

#wrap{width: 90%;margin: 10px auto;border: 1px solid;}

.pics{width: 200px;padding: 5px;border: 1px solid #ddd;margin-top: 15px;left: 0;top: 0;}

.pics img{width: 200px;display: block;}

</style>

<script src="jquery-1.12.4.js"></script>

<script>

$(function(){

var position = []; //声明一个空数组,存放各列高度

$(window).on(‘load resize‘,function(){

var wrapWidth = $(‘#wrap‘).innerWidth(), //容器的寬度

$pics = $(‘.pics‘),

picsWidth = $pics.eq(0).outerWidth(),

cols = Math.floor(wrapWidth / picsWidth),//每行的列數

spacing = (wrapWidth - picsWidth * cols) / (cols + 1),

html =‘‘;  //用於保存中間處理過程中的html字符串

/*=================按最短列添加================*/

//循環向wrap中存放cols個列盒子

for(i=0; i<cols; i++){

html += "<div style=‘display:inline-block; width:"+picsWidth+"px; margin-left:"+spacing+"px; vertical-align:top;‘></div>";

}

var $wrapCols = $(html).appendTo(‘#wrap‘);

//遍历所有的图片并将它们按最短了的顺序放在各个列div元素中

$pics.each(function(index,element){

if(index < cols){

position.push(0);

}

//查找最短列的索引值

var min = Math.min.apply(null,position), //position中的最小值         minIndex = $.inArray(min,position); //找出最短列的索引

$wrapCols.eq(minIndex).append(element); //将当前图片append到最短列

position[minIndex] += $(element).outerHeight(true);  //重新计算minIndex列的高度

});

//ajax加载更多图片 当滚动高度超过最短列时开始加载

var _page = 2,

isLoading = false;  //是否是正在通过ajax加载图片

$(window).on(‘scroll‘,function(){

var _scTop = $(this).scrollTop(),

minHeight = Math.min.apply(null,position),

winHeight = $(window).height();  //窗口高度

if(!isLoading && _scTop >= minHeight-winHeight){

isLoading = true;

$.ajax({

type:‘get‘,

url:‘http://apis.baidu.com/txapi/mvtp/meinv‘,

data:{‘num‘:20},

headers:{‘apikey‘:‘your own apiey‘},  //此处的apikey需要换成自己的apikey

dataType:‘json‘,

success:function(data){

console.log(data);//先将responseText打印出来看一下长什么样子,方便我们进一步对其进行处理

var array = data.newslist,

html = ‘‘;

$.each(array,function(){

html += ‘<div class="pics"><img src="‘ + this.picUrl+ ‘" /></div>‘;

});

$(html).each(function(index,element){

$(this).children(‘img‘).on(‘load‘,function(){

var minIndex = $.inArray(Math.min.apply(null,position),position);

$(‘#wrap>div‘).eq(minIndex).append(element);

position[minIndex] += $(element).outerHeight(true);

});

});

isLoading = false; //可以继续加载图片

}

});

}

});

});

</script>

</head>

<body>

<div id="wrap">

<div class="pics"><img src="img3/1.jpg" alt="1" /></div>

<div class="pics"><img src="img3/2.jpg" alt="1" /></div>

<div class="pics"><img src="img3/3.jpg" alt="1" /></div>

<div class="pics"><img src="img3/4.jpg" alt="1" /></div>

<div class="pics"><img src="img3/5.jpg" alt="1" /></div>

<div class="pics"><img src="img3/6.jpg" alt="1" /></div>

<div class="pics"><img src="img3/7.jpg" alt="1" /></div>

<div class="pics"><img src="img3/8.jpg" alt="1" /></div>

<div class="pics"><img src="img3/9.jpg" alt="1" /></div>

<div class="pics"><img src="img3/10.jpg" alt="1" /></div>

<div class="pics"><img src="img3/11.jpg" alt="1" /></div>

<div class="pics"><img src="img3/12.jpg" alt="1" /></div>

<div class="pics"><img src="img3/13.jpg" alt="1" /></div>

<div class="pics"><img src="img3/14.jpg" alt="1" /></div>

<div class="pics"><img src="img3/15.jpg" alt="1" /></div>

<div class="pics"><img src="img3/16.jpg" alt="1" /></div>

<div class="pics"><img src="img3/17.jpg" alt="1" /></div>

<div class="pics"><img src="img3/18.jpg" alt="1" /></div>

</div>

</body>

</html>

<!--最后我们可以看到得到的responseText长成下面图片中的样子,首先它是一个object,有3个属性,分贝为code,msg和newslist。我们感兴趣的是newslist,因为里面保存了请求到的图片对象,而且它是一个数组,它的picUrl属性就是我们需要的图片网络地址。有了这些信息就可对它进行处理了。详细步骤见代码,就不啰嗦了。

最后希望对大家有所帮助。-->

时间: 2024-11-08 10:52:56

网页布局--瀑布流的相关文章

网站布局--瀑布流式布局

瀑布流式布局简介 现在越来越流行一种瀑布流式布局的页面布局方式,希望你没有对这个名字陌生,看张图相信你就知道它是什么了. 怎么样,是不是很熟悉,越来越多的网站采用这种布局,比如 Pinterest (貌似是最早使用这种布局的网站了),Mark之,蘑菇街,点点网,哇哦等等. 瀑布式流式布局,这个名字是很形象的,这种布局适合于小数据块,每个数据块内容相近且没有侧重.通常,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.这种布局可以说是扩展了原始的格子布局,给用户更加自由,灵活的感

css3多列布局瀑布流加载样式

看了一些网站的瀑布流加载,正好看到css3的多列属性,尝试着写了一个css做布局的瀑布流. 直接上代码: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>CSS3多列属性瀑布流</title> <style> /*大层*/ .container{width:80%;margin: 0 auto;}

多列布局--瀑布流原理

多列布局 CSS3中新出现的多列布局(multi-column)是传统HTML网页中块状布局模式的有力扩充.这种新语法能够让WEB开发人员轻松的让文本呈现多列显示.我们知道,当一行文字太长时,读者读起来就比较费劲,有可能读错行或读串行:人们的视点从文本的一端移到另一端.然后换到下一行的行首,如果眼球移动浮动过大,他们的注意力就会减退,容易读不下去.所以,为了最大效率的使用大屏幕显示器,页面设计中需要限制文本的宽度,让文本按多列呈现,就像报纸上的新闻排版一样 常用属性: a)      colum

iOS开发-UICollectionView实现瀑布流

关于瀑布流的实现网上有很多种解法,自定义控件,TableView+ScrollView,UICollectionView是iOS6发布之后用于展示集合视图,算起来已经发布三年左右了,不过知识点是不变的,集合视图提供了一个更优雅的方式去展示图片或者文字信息.UICollectionView与UITableView相似,UICollectionViewController与UITableViewController都负责视图,存储需要的数据,并且能处理数据源与委托协议. 简单瀑布流 首先来看一个简单

Wookmark-jQuery-master 瀑布流插件使用介绍,含个人测试DEMO

要求 必备知识 本文要求基本了解 Html/CSS,  JavaScript/JQuery. 开发环境 Dreamweaver CS6 / Chrome浏览器 演示地址 演示地址 资料下载 测试预览截图(抬抬你的鼠标就可以看到演示地址哦): 程序核心代码看这里: $(function(){ function show(){ var colors=["#BA4A3A","#5BB5D6","#8EA83B","#EE5C92",

风行一时瀑布流网页布局,实现无限加载(jquery)

今天跟大家分享一个瀑布流网页布局,先跟大家分析下实现的思路吧 主要思路:一.根据屏幕宽度和单个浮动层的宽度来确定浮动层列数 var $boxs = $("#main>div") var boxw = $boxs.eq(0).outerWidth(); var clos = Math.floor($(window).width()/boxw); $("#main").width(boxw*clos).css('margin','0 auto'); 二.用绝对定位

1、网页后退 2、瀑布流 3、上下左右的阿斯科码值 4、加密技术

1.网页后退 /前进  <a href="javascript:history.go(-1);">后退</a><a href="javascript:history.go(1);">前进</a> 2.瀑布流              瀑布流是目前一种比较流行的页面布局和加载效果.百度,花瓣等一些好的网站都广泛用了这样一种效果,适用于单页面展示对内容的页面.这几天就跟着一些资料学习了一下瀑布流效果的制作.其原理是利用js

自定义UICollectionLayout布局 —— UIKit之学习UICollectionView记录一《瀑布流》

一.思路 思路一:比较每一行所有列的cell的高度,从上到下(也就是从第一行开始),从最短的开始计算,(记录下b的高度和索引,从开始计算,依次类推) 思路二:设置上.下.左.右间距和行间距.列间距及列数. 思路三:实现的重要的方法. 二.代码先行. 1.自定义layout类. //入口 #import <UIKit/UIKit.h> @protocol STRWaterLayoutDelegate; @interface STRWaterLayout : UICollectionViewLay

瀑布流式布局

今天终于搞懂了瀑布流式布局,哈哈,总结下 瀑布流式布局分为两种类型:1.每一列都限定宽度不限定高度的布局(使用浮动)2.宽度不是写死的,是根据页面的放大缩小变化的(定位布局) 瀑布流式布局的重点是:每个新加载的模块都应该显示在原有模块高度最小的下方 注意事项: 图片:接收到的数据在插入到文档的过程中,可能会因为图片的加载速度影响Li的最小高度,可以等图片加载完触发某个事件,再继续加载图片(还未研究出):可以设置图片的相对宽高; 什么时候鼠标滚动的时候继续加载数据:当最小高度的模块显示在文档可视区