QQ技术群:5678537,70210212,77813547 个人网站:http://www.lovewebgames.com 邮箱:55342775@qq.com

JY案例二:瀑布流布局页面(高度判断式)

JY案例二:瀑布流布局页面(高度判断式)

作者:田想兵 博客地址:http://www.cnblogs.com/tianxiangbing

由于昨天写的那篇博文《JY案例一:瀑布流布局页面》,大家都对它不屑一顾,我本着不以为耻反以为荣的态度,决定写瀑布流的续集,我还就跟你们耗上了。昨天有观众说我写的只是像瀑布流,还达不到瀑布流的效果,让我看什么jquery实现的XX效果,我告诉你,我急眼了,我不跟外行计较!

在上一篇《JY案例一:瀑布流布局页面》里提到说,会遇到一个很严重的问题,就是当页面内容足够多了的时候,会出现严重的不对齐状况,因为我们没有办法计算它的高度,除非每次加载完后再进行一次重排。又有人说了,我们为什么没有办法得到它的高度呢?好,这个问题问得好,因为图片没加载完前是很难知道高度的,注意是很难,不是不能。方法可能会有如下几种:

本文案例请点击这里! 

1。后台返回图片高度

2。通过预加载图片得到高度

3。你猜你猜你猜猜猜

明显的,第一种更现实点,因为只要是站内图片,一般程序在上传的时候都会保存它的高度。 好,先看今天的效果图:

 

 这次出现了三列不均等数目了,所以它的底部会更均匀显示,具体演示页请猛击http://www.lovewebgames.com/demo/waterfall-height.html

好,来说说我的思路,首先,每一项,都要找到这N列中高度最短的那一列进行强势插入。 然后没了,好像这个要比昨天那个更简单些。本来打算今天做定位瀑布流的例子的,就是因为有观众觉得我昨天的那个不算瀑布流,所以又拖了一次,改日再说。

贴判断最小高度的代码:

for (var j=0;j<rl ;j++ ){
                var minColumn = JY.query(".waterfall_old ul:eq(0)")[0];
                var tmpH = JY.height(minColumn);
                for (var i =0,l=column; i<l ; i++ ){
                    var curColumn = JY.query(".waterfall_old ul:eq("+i+")")[0];
                    var curHeight = JY.height(curColumn);
                    if (curHeight < tmpH){
                        minColumn = curColumn;tmpH =curHeight;
                     }
                }} 

复杂吗?不复杂。比冒泡简单多了。然后就是插入到最小高度列:

                var tmp = document.createElement("li");
                tmp.innerHTML = '<img src="'+r[j].url+'" alt="'+r[j].text+'" height="'+r[j].height+'px"/><div>'+r[j].text+'</div>'  
;                         minColumn.appendChild(tmp);
  
我再次表达对博客园的编辑器插入代码的不满。

今天到此结束了,本文案例请点击这里! 如果您有任何的疑问,都不要来问我,请重复重复再重复的阅读本文或上篇博文。也可以加入我的扣扣群:70210212.              

 

posted @ 2012-07-26 10:50  田想兵  阅读(4654)  评论(18编辑  收藏  举报
联系QQ:55342775,QQ技术群:5678537,70210212,77813547 个人网站:http://www.lovewebgames.com 邮箱:55342775@qq.com