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


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 相关文章推荐
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
Sep 09 Javascript
基于jQuery实现最基本的淡入淡出效果实例
Feb 02 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
Nov 07 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
Apr 03 Javascript
Bootstrap select实现下拉框多选效果
Dec 23 Javascript
vue使用Axios做ajax请求详解
Jun 07 Javascript
4个顶级JavaScript高级文本编辑器
Oct 10 Javascript
vue中监听返回键问题
Aug 28 Javascript
jQuery实现简易聊天框
Feb 08 jQuery
Jquery $.map使用方法实例详解
Sep 01 jQuery
Vue3 响应式侦听与计算的实现
Nov 11 Javascript
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中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
Python描述器descriptor详解
2015/02/03 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
python实现简易通讯录修改版
2018/03/13 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
表扬信格式
2014/01/12 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
高中教师考核方案
2014/05/18 职场文书