DDR爱好者之家 Design By 杰米
下边我就简单说一下过程和原理。
第一步:实现一个匿名函数并能自己执行。
复制代码 代码如下:
(function(){ })()
这个函数在一样编的好的JS代码中经常会见到,起到闭包,自动执行的效果,在函数后加一对()表示自动执行,前边的匿名函数需要用()包起来,这样才能为宿主(我们的BOM环境)理解,里面的function(){}这就是个匿名函数。
第二步:实现动画,以改变一个box的秀明度来说明。
id为animation的div
复制代码 代码如下:
<div id="animation"></div>
要实现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);
})()
下次我会实现这个代码的面向对象化设计和出一些具体的实现方案,方便学习使用。
全部代码如下
复制代码 代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title></title>
<style type="text/css">
#animation{width:500px;height:350px;background-color:red;}
</style>
</head>
<body>
<div id="animation">
</div>
<script type="text/javascript">
(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);
})()
</script>
</body>
</html>
第一步:实现一个匿名函数并能自己执行。
复制代码 代码如下:
(function(){ })()
这个函数在一样编的好的JS代码中经常会见到,起到闭包,自动执行的效果,在函数后加一对()表示自动执行,前边的匿名函数需要用()包起来,这样才能为宿主(我们的BOM环境)理解,里面的function(){}这就是个匿名函数。
第二步:实现动画,以改变一个box的秀明度来说明。
id为animation的div
复制代码 代码如下:
<div id="animation"></div>
要实现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);
})()
下次我会实现这个代码的面向对象化设计和出一些具体的实现方案,方便学习使用。
全部代码如下
复制代码 代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title></title>
<style type="text/css">
#animation{width:500px;height:350px;background-color:red;}
</style>
</head>
<body>
<div id="animation">
</div>
<script type="text/javascript">
(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);
})()
</script>
</body>
</html>
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2025年01月21日
2025年01月21日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]