如何在动画完成后随机改变位置
How to randomly change position after animation complete?
我想创造一个模拟天空中星星闪烁的效果。
我已经在一定程度上做到了:小提琴
我的JS创建星星:
var limit=50,
body = document.body;
spread={
start:function(){
for (var i=0; i<=limit; i++){
var star=this.newStar();
var randomD = Math.random()*30;
var randomDelay = randomD.toString() + "s";
star.style.top=this.rand()*90+"%";
star.style.left=this.rand()*98+"%";
star.style.animationDelay= randomDelay;
body.appendChild(star);
};
},
rand:function(){
return Math.random();
},
newStar:function(){
var d = document.createElement('div');
d.innerHTML= '<figure class="star"></figure>';
return d.firstChild;
}
};
spread.start();
然而,我想在动画完成后随机化"星星"的位置。
我怎么才能做到呢?
你可以监听元素的animationiteration
事件,当动画循环时触发。
spread={
start:function(){
for (var i=0; i<=limit; i++){
var star=this.newStar();
var randomD = Math.random()*30;
var randomDelay = randomD.toString() + "s";
this.randomizeStar(star);
star.style.animationDelay= randomDelay;
star.addEventListener("animationiteration",
this.randomizeStar.bind(null, star));
body.appendChild(star);
};
},
rand:function(){
return Math.random();
},
newStar:function(){
var d = document.createElement('div');
d.innerHTML= '<figure class="star"></figure>';
return d.firstChild;
},
randomizeStar:function(star){
star.style.top=Math.random()*90+"%";
star.style.left=Math.random()*98+"%";
}
};
你需要稍微调整一下动画,使动画在opacity:0
结束,但演示清楚地显示星星在移动。
关于代码的一些提示和注释:
- 只使用
Math.random()
而不是在spread
上创建rand
函数,它不会增加太多。 - 如果你将星形创建和随机化逻辑封装在
Star
原型中,代码将更清晰。
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 使用当前日期生成随机id
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 从a-z中随机选择一个字母
- 为什么使用immutableJS我的状态没有改变
- RequireJ无法随机加载脚本
- 单击按钮时显示随机字符串
- JavaScript改变了双方的显示风格
- Ajax更新面板随机错误'PRM_MissingPanel'
- 如何检查if/else语句中的随机条件
- Javascript随机单元格背景颜色改变
- 如何在动画完成后随机改变位置
- 每次球碰到墙时,将球的颜色改变为随机的颜色
- 改变css背景与jquery的动画随机背景
- JavaScript幻灯片显示,改变幻灯片每3秒,并开始在一个随机的图像
- JavaScript:if语句正在改变随机生成器的结果
- 根据随机的ul改变音乐
- 改变图像随机点击而不重复
- 我如何改变背景颜色随机与Javascript