瀑布流效果

效果图

html代码


 1 <div class="wrap">
2 <div class="bigbox" id="bigbox">
3 <!--每一小块开始-->
4 <div class="listbox">
5 <div class="listbox-con">
6 <h2>图片介绍和描述</h2>
7 <p>此为介绍和描述</p>
8 </div>
9 </div>
10 <div class="listbox">
11 <div class="listbox-con">
12 <h2>图片介绍和描2述</h2>
13 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述2</p>
14 </div>
15 </div>
16 <div class="listbox">
17 <div class="listbox-con">
18 <h2>图片介绍和描3述</h2>
19 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述3</p>
20 </div>
21 </div>
22 <div class="listbox">
23 <div class="listbox-con">
24 <h2>图片介绍和描4述</h2>
25 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述4</p>
26 </div>
27 </div>
28 <div class="listbox">
29 <div class="listbox-con">
30 <h2>图片介绍和描5述</h2>
31 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述5</p>
32 </div>
33 </div>
34 <div class="listbox">
35 <div class="listbox-con">
36 <h2>图片介绍和描述</h2>
37 <p>此为介绍和描述</p>
38 </div>
39 </div>
40 <div class="listbox">
41 <div class="listbox-con">
42 <h2>图片介绍和描2述</h2>
43 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述2</p>
44 </div>
45 </div>
46 <div class="listbox">
47 <div class="listbox-con">
48 <h2>图片介绍和描3述</h2>
49 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述3</p>
50 </div>
51 </div>
52 <div class="listbox">
53 <div class="listbox-con">
54 <h2>图片介绍和描4述</h2>
55 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述4</p>
56 </div>
57 </div>
58 <div class="listbox">
59 <div class="listbox-con">
60 <h2>图片介绍和描5述</h2>
61 <p>此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述此为介绍和描述5</p>
62 </div>
63 </div>
64
65 </div>
66 </div>

样式代码


1 *{ margin:0px; padding:0px;}
2 .wrap{ padding:15px;}
3 .bigbox{ width:100%; position:relative;}
4 .listbox{ width:23%; padding:1%; position:absolute; box-shadow:0 0 1px #CCC;}
5 .listbox-con{ background:#fefefe;}
6 .listbox-con h2{ font-size:16px; color:#333;}
7 .listbox-con p{ font-size:14px; color:#666;}

插件代码


 1 ;(function($){
2 var defaults ={
3 wflist:‘.listbox‘
4 };
5 $.fn.waterfal = function(opt){
6 opt =$.extend({},defaults,opt);
7 // 变量
8 var obj = $(this);//当前对象
9
10 var wfwidth = $(opt.wflist).outerWidth(true),
11 minHeight = 0,
12 maxcol=Math.floor($(window).width()/wfwidth);
13
14 (function(wflist,maxcol,wfwidth,minHeight){
15 var wfarr = new Array(),minHeight = 0,minCol=0;
16
17 for(i=0;i<wflist.length;i++){
18 colHeight=wflist.eq(i).outerHeight(true);
19 if(i<maxcol){
20 wfarr[i] = colHeight;
21 wflist.eq(i).css({‘top‘:0,left:i*wfwidth});
22 }else{
23 minHeight=Math.min.apply(null,wfarr);//
24 minCol = getArrayKey(wfarr, minHeight);
25 wfarr[minCol] += colHeight; //加上新高度后更新高度值
26 wflist.eq(i).css({"top":minHeight,left:minCol * wfwidth}); //先得到高度最小的Li,然后把接下来的li放到它的下面
27 }
28 wflist.eq(i).attr(‘id‘,"post_"+i);
29 };
30 })( $(opt.wflist),maxcol,wfwidth,minHeight);
31
32 function getArrayKey(wfa,minh){//使用for in运算返回数组中某一值的对应项数(比如算出最小的高度值是数组里面的第几个)
33 for( ind in wfa ) {
34 if( wfa[ind] == minh) {
35 return ind;
36 }
37 }
38 };
39 var wfAreaH = parseInt( $(opt.wflist).last().css("top")) + $(opt.wflist).last().outerHeight(true)+ "px"; //显示区域的高度为 最后一个元素的Top值+自身高度
40 obj.css({ "width":wfwidth * maxcol,"height":wfAreaH }); //设置显示区域宽度和高度
41 }
42 })(jQuery);

时间: 2024-10-06 16:27:58

瀑布流效果的相关文章

自定义实现带文字标题的瀑布流效果

在网上能找到的大部分资料中的瀑布流效果都是单纯的照片实现,现在我来实现一个带文字标题的.效果如下: 每个item都是由图片和文字标题两部分组成. 布局方式为ScrollView里面嵌套一个水平方向的LinearLayout,里面再嵌套两个竖直方向的LinearLayout,然后判断竖直方向的两个LinearLayout的高度,向比较低的那个Linearlayout里面添加item. 下面是代码 <ScrollView xmlns:android="http://schemas.androi

瀑布流效果的一些收获

瀑布流效果已经流行了很久,之前在项目中做了一次,今天页面改版又做了一次瀑布流的效果,中间又有了一些收获,谨记于此. 这个瀑布流效果是借鉴的网上一位大神写的代码,然后正好在项目中得到了应用. 1 function waterFall(mr, mb) { //mr水平方向的间距,mb垂直方向的间距 2 var ocontainer = document.getElementById("container"); 3 if (ocontainer) { 4 var pageWidth = oc

【前端】用jQuery实现瀑布流效果

jQuery实现瀑布流效果 何为瀑布流: 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pinterest,逐渐在国内流行开来.国内大多数清新站基本为这类风格. 瀑布流的应用: 瀑布流对于图片的展现,是高效而具有吸引力的,用户一眼扫过的快速阅读模式可以在短时间内获得更多的信息量,而瀑布流里懒加载模式又避免了用户鼠标点击的翻页操作,瀑布流的主要特性便是错落有致,定宽而不

一步步教你js原生瀑布流效果实现

一步步教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一张挨着一张竖直排列 4.鼠标向下滚动,一直不停的加载图片 5.浏览器的宽度改变,图片的列数会进行相应的更改 那么这种效果类似现实生活中的瀑布,所以我们叫它瀑布流的效果. Js原生瀑布流效果的实现 从上述分析中,我们可以把整个效果分为以下四个部分: html+css界面搭建 瀑布流效果 浏览器向下滚动

一种瀑布流效果的实现

最近一个项目使用到了瀑布流效果,在这里总结一下.使用jquery框架. 最终效果: 思路: 使用五个并列的div:     首次加载n条数据:     之后由scroll触发ajax数据加载:     加载每条数据时,判断5个div的高度,把数据加载到高度最短的div里. 数据加载代码: $(document).bind('scroll',(function(){     //离底部100px时触发加载     var closeToBottom = ($(window).scrollTop()

RecyclerView实现瀑布流效果(二)

在上篇中我们知道RecyclerView中默认给我们提供了三种布局管理器,分别是LinearLayoutManager.GridLayoutManager.StaggeredGridLayoutManager.其中StaggeredGridLayoutManager可实现交错式网格布局,正好可以用来实现瀑布流. 下面先看看效果图吧,再贴代码: 其中大部分内容实现其实是和上篇文章是一样的,就不多叙述了,就一个地方不同,就是我们在适配器中绑定ViewHolder的方法中需要重新给我们的itemVie

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

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

异步加载技术实现瀑布流效果

异步加载技术实现瀑布流效果.当滚动条到最底部的时候触发一个事件,这个事件写入$.get()事件,向内部程序页传递类别id和页码,程序将会返回那个类别下的相对页的产品列表,如果程序查询当前类无产品即返回空. 滚动条事件要写在window.onscroll中才有效判断.如下: window.onscroll=function(){ // var scrolltop=document.documentElement.scrollTop||document.body.scrollTop; var top

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

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

Android开发--瀑布流效果的实现

对手机App的瀑布流效果一直有所耳闻,却从未自己亲自动手实践,趁着这几天还有些时间,做了些研究,也参考了网络上很多大神的博客,终于写出来自己的瀑布流效果了,先上一图. 正如图所示:瀑布流的原理很简单,就是自己重新写一个ScrollView,添加一个横向排布的LinearLayout,再向这个横向的LinearLayout中添加三个纵向排布的LinearLayout,接着我们就可以向每个一LinearLayout中依次添加图片.原理很容易理解,但实践起来也很困难,需要注意的问题也很多: 1.为了防