从事网页重构好几年了,Javascript能力一直比较菜,主要还是做得太少。为了提高这方面的能力,这段时间主动承担了一些这方面的工作,真心感到学习和积累的不易,不过时常伴随着一些解决问题之后的小小成就感又让人乐此不疲。
在近期一个项目中,遇到一个图片列表自适应宽度显示的问题,需求本身并不难,借此且算是梳理和总结一下当时的解决思路吧,也期望能给有需要做这类需求而又知如何下手的同学带来一点小启发。实现的 *** 应该很多,如果你有更好的,要分享哦~~
需求是这样的,在一个自适应宽度的栏目里(如图1):
1、 栏目的宽度可以因用户的操作发生改变,如拖拽改变窗口大小等;
2、 当宽度改变之后,需要图片列表总是能在栏目中完好地显示:图片之间有一定的间距,并且不会出现半张图。
3、 若当前宽度不能完全显示所有图片时,可以通过点击左右两边的箭头进行滚动显示。
如图2:
经过分析我们可以把需求分解为:栏目的宽度自适应、图片列表的自适应显示、列表的左右滚动。栏目的宽度自适应,可以直接用样式来解决,宽度的获取也简单,不再多说。图片的滚动也还好说,无非就是通过样式改变列表的左右位置来实现。难点在于,在一个宽度会各种变化的区域中,怎么让图片列表自适应显示呢?
对比图1、图2,我们发现前后的变化有:栏目宽度、图片显示个数、图片之间的间距。宽度自适应好办,那图片个数和间距呢?嗯哪,这就是我们需要解决的核心问题。
1、关于可视区域
再看图2,栏目中只有3个图片,我们知道是因为其它部分被样式隐藏了,而整个图片列表其实是一直存在的一个整体。就像Flash里的遮罩一样,我们要做的其实是按照用户的意愿控制图片列表的某一部分显示给用户看到。为便于后面好讲,我们把用户可以看到的这部分列表区域称为列表的可视区域。它的特点是随着当前栏目的宽度变化而变化,
如图3:
图片列表是死的,栏目宽度是变化的,如何让图片列表适应栏目宽度的变化完好显示在可视区域里呢?好吧,你已经想到了…答案就是通过改变图片之间的间距来实现。
如图4:
那么我们可以得出:
可视区域的宽度 = 可视区域内可显示的图片宽度总和(下文称可视图片数) 图片间距总和
2、计算可视图片数
事情的关键是显示图片,我们就从计算可视图片数开始。可视区域的宽度我们可以轻易获取,所有图片的宽度也是统一的尺寸(什么?不统一?还好还好,我们这的产品经理倒是还没有 *** 到这个地步呢^^~ 这里还是先讲固定的情况吧,不固定的情况下回再探讨)。先忽略一下图片间距,那么问题可以简化为:
可视图片数 = 可视区域宽度 / 单位图片宽度
代码(代码中涉及到的html代码请查看下文Demo):
//获取当前可视区域的宽度 varpLstWrpWth=$(\\\’.jQ_ptlst\\\’).width(); //获取单位图片宽度(图片可能包括边框样式等,取列表元素Li的宽度参与计算以避免误差) varvalLstliWth=$(\\\’.jQ_ptLstli\\\’).width(); //计算当前可视图片数(可视区域宽度/单位图片宽度再取整) valImgLth=Math.floor(pLstWrpWth/valLstLiWth);更多关于 云服务器, 域名注册, 虚拟主机的问题,请访问 西部数码官网: www.west.cn俺自来安徽省一个偏僻的乡村,小时候家里很穷,13岁的时候我的母亲去逝了,父亲一个人拉扯我和大我2岁的哥哥。我的童年生活在我的印像中已经很模糊了!为了能给父亲减轻生活压力能早日给哥哥娶上媳妇,高中没读完便缀学了,在家里帮父亲做活。那一段时间我什么都做过,农忙在家干活,农闲就出去打工。...
各位网友朋友大家好,看到admin5的(草根站长故事征集活动),无意之间就有心里一种冲动,看着网络上的故事真是太多了,大千世界,无奇不有。现在还是饿着肚子,也没有什么事情可做,天天添加内容,都快累死了,有太多的时候都是这样度过的,早上10点起床,来到公司一天就是2顿饭,天天关注自...
2006刚过完年,家人都移身前往深圳去玩了,我没有那心情就没跟去。自己一个人在家呆着。呆着无聊,就准备准备去了师傅那里继续我的网络维护学习生涯。在师傅给我安排的工作室里 我天天进的都是it.pconline.com.cn(太平洋IT基地)和网易、天极这些门户站的论坛里 学习巩固师傅说的东西,有...
这是一篇很难得的博客文章 ,一个自己说文笔不好,但是字里行间对公司深情的员工 ———————————————————————————— 看到很多朋友写博客在介绍自己的站,我虽然文笔不好,但是也时常有这种冲动,想把心里面的一些想法,或者自己的作品能让更多人去了解和指出不足的地方。 很荣幸加...
有个女孩叫君儿,男孩叫磊。他们通过QQ聊天认识了,然后经常写信聊天,到相识相知。03年的圣诞节他们见面了,彼此感觉应该还算 很不错,晚上在一起吃饭,在晚上一起去了我们学校过圣诞节。这一晚,君回学校宿舍了,2004年1月1日 元旦到了,磊磊非常想君儿,磊就打电话喊君一起出来玩,那一晚上我们都没有...
站长交流群讲座qq群 17770150 每天 晚8点30 邀请草根精英 演讲网站运营 推广盈利经验 ————————————————————————————————————傲雪(41567549) 20:31:20先综合分析一下这个站最高PR值:5 www.adm...