让你的博客飘雪花超出屏幕依然看得见


Posted in Javascript onJanuary 04, 2013

前些天,在园子里看到了使你的博客飘雪花的文章,就赶紧弄到自己的博客里来看看效果,别说,还真是漂亮啊。可是看了一会,就发现页面变得特别卡。

看了下代码后发现,原作者是在body中不停的插入多个小div雪花来向下慢慢飘,一直飘到body的底部后,将雪花移除。

但是,实际上,超出屏幕的页面我们又看不见,就算有雪花在飘又有什么意义呢。
于是,将原来的代码稍加修改,让他只是从屏幕的顶部飘落到屏幕底部(不是body的底部)后,就将雪花移除,另外将雪花改为fixed定位。

将页面刷新下,果然好多了。现把修改代码贴出来与大家分享。
PS.原作者链接我没找到,版权归原作者所有:)

(function($){ 
$.fn.snow=function(options){ 
var $flake=$('<div />') 
.css({ 
'position':'fixed',//'absolute', 
'top':'-50px', 
'z-index':'1000' 
}) 
.html('❄'); 
var documentHeight=document.documentElement.clientHeight;//$(document).height(); 
var documentWidth=$(document).width(); 
var defaults={minSize:10,maxSize:20,newOn:500,flakeColor:"#FFFFFF"}; 
var options=$.extend({},defaults,options); 
var interval=setInterval(function(){ 
var startPositionLeft=Math.random()*documentWidth-100; 
var startOpacity=0.5+Math.random(); 
var sizeFlake=options.minSize+Math.random()*options.maxSize; 
var endPositionTop=documentHeight-40; 
var endPositionLeft=startPositionLeft-100+Math.random()*200; 
var durationFall=documentHeight*10+Math.random()*5000; 
$flake.clone() 
.appendTo('body') 
.css({ 
left:startPositionLeft, 
opacity:startOpacity, 
'font-size':sizeFlake, 
color:options.flakeColor 
}) 
.animate({ 
top:endPositionTop, 
left:endPositionLeft, 
opacity:0.2 
}, 
durationFall, 
'linear', 
function(){ 
$(this).remove(); 
}); 
},options.newOn);//interval End 
};//$.fn.snow End 
})(jQuery); 
$.fn.snow({ minSize: 10, maxSize: 60, newOn: 800, flakeColor: '#ccc'});
Javascript 相关文章推荐
基于jquery的一个简单的脚本验证插件
Apr 05 Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
商城常用滚动的焦点图效果代码简单实用
Mar 28 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
封装属于自己的JS组件
Jan 27 Javascript
AngularJS基础 ng-value 指令简单示例
Aug 03 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
Aug 16 Javascript
three.js绘制地球、飞机与轨迹的效果示例
Feb 28 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
js prototype和__proto__的关系是什么
Aug 23 Javascript
微信小程序文章列表功能完整实例
Jun 03 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 #Javascript
jquery入门—选择器实现隔行变色实例代码
Jan 04 #Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
Jan 04 #Javascript
formvalidator验证插件中有关ajax验证问题
Jan 04 #Javascript
使用jquery mobile做幻灯播放效果实现步骤
Jan 04 #Javascript
jquery 插件开发 extjs中的extend用法小结
Jan 04 #Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 #Javascript
You might like
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
Laravel实现表单提交
2017/05/07 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
python生成日历实例解析
2014/08/21 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
《永远的白衣战士》教学反思
2014/04/25 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
大学生求职自荐信
2015/03/24 职场文书