100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 实现动画效果核心方式的js代码【javascript】

实现动画效果核心方式的js代码【javascript】

时间:2019-04-03 15:33:35

相关推荐

实现动画效果核心方式的js代码【javascript】

web前端|js教程

js,动画效果,核心方式

web前端-js教程

下边我就简单说一下过程和原理。

第一步:实现一个匿名函数并能自己执行。

微赞商城源码,vscode go插件,ubuntu 刻录,tomcat xms,sqlite 数据库文件,广西北海网页设计,oracle 数据库 序列,云服务器1M 1G,js放大镜效果插件,pc 前端框架,开源爬虫框架,php mac,seo报告,springboot 注解大全,strong标签,个人网站导航栏,个人简介网页动漫,开发运费模板,bootstrap3.0后台中文模板,wordpress 页面 文章,虚拟服务器管理系统,matlab股票分析程序lzw

(function(){ })()

这个函数在一样编的好的JS代码中经常会见到,起到闭包,自动执行的效果,在函数后加一对()表示自动执行,前边的匿名函数需要用()包起来,这样才能为宿主(我们的BOM环境)理解,里面的function(){}这就是个匿名函数。

第二步:实现动画,以改变一个box的秀明度来说明。

id为animation的div

产品单页网站源码,ubuntu如何ssh登录,tomcat6配置内存参数,网络爬虫整体架构,php导入数据库不显示,python seo 优化lzw

php网站后台管理源码,ubuntu编译内核步骤,tomcat中间件工作原理,爬虫cookie不能登录,php100视频教程全集,怎么总结seolzw

要实现animation的透明渐变,需要不断改变其透明度opacity,我们这样实现

for(var i=0;i<10;i++){

setTimeout((function(pos){

return function(){

someAnimation(pos);

}

})(i/10),i*100)

}

下面我们来解释一下这段代码,这段代码比较复杂和难于理解,所以刚开始不明白也没事,慢慢就懂了,首先解释一下setTimeout在此处的用法

setTimeout((function(){})(i/10),i*100)

setTimeout第一个参数为要执行的函数,第二个参数为时间参数,意为多久后开始执行

而js没有块的概念,作用域范围是以函数为准的,所以我们这里使用的闭包,实现原理如下:

(function(){

return function(){}

})()

这校才可以执行for循环,达到我们想要的结果,如果我们不使用闭包,代码会如下:

for(var i=0;i<10;i++){

setTimeout(function(pos){

someAnimation(pos);

}(i/10),i*100)

}

这样的for循环只会执行一次,即i=9时,感兴趣的同学可以自己试试

到目前为止,整个代码是这个样子滴

(function(){

function someAnimation(args){

document.getElementById("animation").style.opacity=args;

}

for(var i=0;i<10;i++){

setTimeout((function(pos){

return function(){

someAnimation(pos);

}

})(i/10),i*100)

}

})()

这样实现了id为animation的box透明度从0到1的一次变化。

第三步,实现不停地变化,我们用setInterval来实现

setInterval也是两个参数,第一个是要执行的函数,第二个是执行间隔时间

至此代码如下:

(function(){

function someAnimation(args){

document.getElementById("animation").style.opacity=args;

}

setInterval(function(){

for(var i=0;i<10;i++){

setTimeout((function(pos){

return function(){

someAnimation(pos);

}

})(i/10),i*100)

}

},2000);

})()

下次我会实现这个代码的面向对象化设计和出一些具体的实现方案,方便学习使用。

全部代码如下

#animation{width:500px;height:350px;background-color:red;}

(function(){

function someAnimation(args){

document.getElementById(“animation”).style.opacity=args;

}

setInterval(function(){

for(var i=0;i<10;i++){

setTimeout((function(pos){

return function(){

someAnimation(pos);

}

})(i/10),i*100)

}

},2000);

})()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。