一个简单的瀑布流效果(主体形式自写)


Posted in Javascript onMay 27, 2013

闲着没事,自己写了个瀑布流,我个人写脚本或者是网页的习惯是:只参考别人的效果,很少参考别人的代码,有时侯我宁愿用审查元素来推断代码,也不愿去看源代码。我不知道这个习惯好不好。虽然中间过程是花了我不少时间,但是我做的东西的每一个细节我都还能记清楚(当然肯定后来会忘),因为是我实现的。下面说正题:

瀑布流的主体即为几个ul标签,新增加的元素以 li的形式按照当前 ul的高度有选择性的插入到某个ul下。
主体形式如下:

<div id="main"> 
<ul class="pics"> 


<li> <div class="pic"><img /></div> <div class="content">anytext..</div> </li> 


<li><div class="pic"><img /></div> <div class="content">anytext..</div> </li> 


... 

</ul> 

<ul class="pics"> <li> <div class="pic"><img /></div> <div class="content">anytext..</div> </li> 


<li><div class="pic"><img /></div> <div class="content">anytext..</div> </li> 


... 

</ul> 

.... 
</div>

css定义如下:
.pics { 

 float:left; 


 list-style:none; 


 margin-left:10px; 


 margin-right:10px; 


 width:230px; 
} 
.pics li { 


 display:block; 


 width:100%; 


 margin:0 auto; 


 margin-bottom:10px; 


 position:relative; 


 background-color:#FFF; 


 box-shadow: 0 1px 2px 0; 


 padding-top:10px; 
} 
.pic { 


 width:92%; margin:0 auto; 


 padding-top:10px; 


 text-align:center; 


 font-size:180px; 


 background-color:#0CF; 
} 
.pic img { 


 width:100%; 


 margin:0 auto; 
} 
.content { 


 width:92%; 


 margin:0 auto; 


 padding-top:10px; 


 height:50px; 


 text-overflow:ellipsis; 


 white-space:nowrap; 


 overflow:hidden; 
}

脚本实现如下:
$(function(){ 
//alert($(window).height()); 浏览器当前窗口可视区域高度 
//alert($(document).height()); 
//浏览器当前窗口文档的高度 alert($(document.body).height()); 
//浏览器当前窗口文档body的高度 alert($(document.body).outerHeight(true)); 
//浏览器当前窗口文档body的总高度 包括border padding margin alert($(window).width()); 
//浏览器当前窗口可视区域宽度 alert($(document).width()); 
//浏览器当前窗口文档对象宽度 alert($(document.body).width()); 
//浏览器当前窗口文档body的高度 alert($(document.body).outerWidth(true)); 
//浏览器当前窗口文档body的总宽度 包括border padding margin 
$(document).scroll(function(){ 
var pics=$(".pics"); 
var sc=$(document).scrollTop(); 
$("#float").text(sc); 
for(var i=0;i<pics.length;i++){ 
var pic=pics.eq(i); 
var bottom =pic.offset().top+pic.height(); 
if((sc+$(window).height())>=bottom){ 
eval( "var word=" + '"\\u' + (Math.round(Math.random() * 20901) + 19968).toString(16)+'"'); 
var li="<li> <div class='pic'>"+word+"</div><div class='content'>梦里过客笑眼望,望回廊,秋螽藏</div></li>"; 
pic.append(li); 
} 
} 
}); 
});

这样做基本实现了最简单的一个瀑布流,但是脚本中并没有考虑内存消耗,即无限加载的问题。现在我也没搞懂,以后再完善吧 。
来看效果:
一个简单的瀑布流效果(主体形式自写)
Javascript 相关文章推荐
Jquery中使用setInterval和setTimeout的方法
Apr 08 Javascript
带左右箭头图片轮播的JS代码
Dec 18 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
Mar 25 Javascript
vue2组件实现懒加载浅析
Mar 29 Javascript
React教程之Props验证的具体用法(Props Validation)
Sep 04 Javascript
详解AngularJS之$window窗口对象
Jan 17 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
js的对象与函数详解
Jan 21 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 Javascript
浅谈javascript错误处理
Aug 11 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 Javascript
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
jquery实现的一个导航滚动效果具体代码
May 27 #Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
May 27 #Javascript
jQuery数据缓存功能的实现思路及简单模拟
May 27 #Javascript
jQuery函数的等价原生函数代码示例
May 27 #Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
May 26 #Javascript
jQuery动态地获取系统时间实现代码
May 24 #Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 #Javascript
You might like
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
JavaScript 数组循环引起的思考
2010/01/01 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
AngularJS的$location使用方法详解
2017/10/19 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
西式结婚主持词
2014/03/14 职场文书
市场营销专业自荐书
2014/06/10 职场文书
工会工作个人总结
2015/03/03 职场文书
基石观后感
2015/06/12 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏