基于JavaScript实现百叶窗动画效果不只单纯flas可以实现


Posted in Javascript onFebruary 29, 2016

看到这种什么百叶窗的动画,以为都是flash实现的,最近突然灵光一闪,想到了用js实现(虽然我不是做前端的,本人做.net)。代码虽然实现了,但是比较乱,先上个图:

基于JavaScript实现百叶窗动画效果不只单纯flas可以实现

一个js的动画,以前以为只有flash可以实现

代码主要就是一些数学的计算,然后结合html,css打造出类似flash的效果。

下面贴出主要的部分代码:

function all(books){
for(var i=;i<self.rows;i++) {
for (var j = ; j < self.columns; j++) {
if(!books[i][j])return false;
}
}
return true;
}
function resetBooks(books){
for(var i=;i<self.rows;i++) {
for (var j = ; j < self.columns; j++) {
books[i][j]=false;
}
}
return true;
}
var self=this,timer=null,_iindex= ;
var initdir=[[[,],[,]],[[-,],[,]],[[,-],[-,]],[[,-],[,]],[[,-],[,],[,],[-,]]],dir=initdir[];
var weight=[,,,,];
var initpos=[[{x:,y:-}],[{x:self.columns-,y:-}],[{x:self.columns-,y:self.rows}],[{x:,y:self.rows}],[{x:self.columns/,y:self.rows/}]];
timer=setInterval(function(){
var n=[];
for(var i=;i<self.preDivs.length;i++){
var _div=null,x= ,y=;
for(var j=;j<dir.length;j++){
x=self.preDivs[i].x+dir[j][];
y=self.preDivs[i].y+dir[j][];
if(x>=&&y>=&&x<self.columns&&y<self.rows&&!self.books[y][x]){
self.books[y][x]=true;
_div=self.zzDivStatck[y][x];
n.push({x:x,y:y});
_div.style.backgroundImage = "url(" + self.zzImages[_iindex] + ")";
_div.style.backgroundPositionX = (-x * self.zzDivW) + "px ";
_div.style.backgroundPositionY = (-y * self.zzDivH) + "px";
}
}
}
self.preDivs=n;
if(all(self.books)){
resetBooks(self.books);
var _r=util.randomWeight(weight);
self.preDivs = initpos[_r];
dir=initdir[_r];
_iindex++;
}
if(_iindex>=+self.zzImages.length){
_iindex=;
}
},);

以上代码是使用javascript实现的百叶窗动画效果,希望对大家有所帮助!

Javascript 相关文章推荐
js操作时间(年-月-日 时-分-秒 星期几)
Jun 20 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
Mar 05 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
Feb 10 Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
Feb 23 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
May 17 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 Javascript
vue离开当前页面触发的函数代码
Sep 01 Javascript
ClearTimeout消除闪动实例代码
Feb 29 #Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 #Javascript
jquery trigger函数执行两次的解决方法
Feb 29 #Javascript
理解js回收机制通俗易懂版
Feb 29 #Javascript
jquery trigger实现联动的方法
Feb 29 #Javascript
基于Javascript实现返回顶部按钮
Feb 29 #Javascript
JavaScript实现斗地主游戏的思路
Feb 29 #Javascript
You might like
下载文件的点击数回填
2006/10/09 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
js浮动图片的动态效果
2013/07/10 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
vue的for循环使用方法
2019/02/12 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
python每天定时运行某程序代码
2019/08/16 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
急诊科护士自我鉴定
2013/10/14 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
房地产项目建议书
2014/03/12 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
小学英语教师研修感悟
2015/11/18 职场文书