使用javascript点击css3动画
css3 animation on click with javascript
我需要同时设置多个项目的动画,点击几次。我不允许使用Jquery,所以我使用本机javascript和CSS3。
Array.prototype.forEach.call(els, function(el) {
elemId = el.getAttribute("id");
var toWidth = boxPos[thisId][elemId].width;
var toHeight = boxPos[thisId][elemId].height;
var toTop = boxPos[thisId][elemId].top;
var toLeft = boxPos[thisId][elemId].left;
var from = "0% {width:"+currPos[elemId].width+"; height:"+currPos[elemId].height+"; top:"+currPos[elemId].top+"; left:"+currPos[elemId].left+";}";
var to = "100% { width:"+toWidth+"; height:"+toHeight+"; top:"+toTop+"; left:"+toLeft+";}";
currPos[elemId].width = toWidth;
currPos[elemId].height = toHeight;
currPos[elemId].top = toTop;
currPos[elemId].left = toLeft;
var styleSheets = document.styleSheets;
for (var i = 0; i < styleSheets.length; ++i) {
for (var j = 0; j < styleSheets[i].cssRules.length; ++j) {
if (styleSheets[i].cssRules[j].type == window.CSSRule.WEBKIT_KEYFRAMES_RULE && styleSheets[i].cssRules[j].name == elemId){
keyframes = styleSheets[i].cssRules[j];
}
}
}
keyframes.deleteRule("0%");
keyframes.deleteRule("100%");
keyframes.insertRule(from);
keyframes.insertRule(to);
el.style.webkitAnimationName = elemId;
});
我已经搜索了整个网站,并尝试使用一些代码。动画将运行一次,所有元素,但只有第一次:"(
下面是一个不起作用的示例代码http://jsfiddle.net/kR384/2/
动画将运行一次,所有元素,但只是第一次
您似乎在寻找animation-iteration-count
CSS属性,该属性指定动画运行的频率。您可以将其设置为infinite
或任何数值(正)。
动画的问题是,它们只在第一次单击时启动。之后,就不会更改元素的样式(重新指定animation-name
没有帮助),因此不会触发任何动画(即使更改了关键帧规则)。上的文章http://css-tricks.com/restart-css-animation/讨论了这一点以及一些解决方案。
在您的情况下,甚至可以将动画的名称更改为包含"状态"的名称:
if( …cssRules[j].name.split("-")[0] == elemId)
keyframes = styleSheets[i].cssRules[j];
…
var newname = elemId+"-"+thisId;
keyframes.name = newname;
…
el.style.animationName = newname;
(带有标准属性和一些错误修复的演示,带有webkit
前缀的更新演示)
我只需添加一个setTimeout(0)就可以修复它,以便在动画名称设置为none后调用动画。
这是固定代码http://jsfiddle.net/kR384/3/:
function resetAndRun(o){
one.style.webkitAnimationName = "none";
…
ten.style.webkitAnimationName = "none";
setTimeout(function(){o.animateBox();}, 0);
}
我希望它对某人有用。
相关文章:
- 关键帧之间的css3动画延迟
- 访问css3动画的关键帧
- CSS3动画图像质量按比例
- CSS3卡翻转动画,检测是否不支持
- jQuery鼠标输出调用CSS3动画
- 使用带有onclick事件的Javascript启动CSS3动画
- 在 CSS3 动画完成后重新加载 JavaScript
- 为什么当我用jQuery制作长方体动画时,CSS3长方体阴影会分离
- 如何正确地链接调用$.show()和$.thoggClass()来触发CSS3动画
- 哪种动画最适合表演?css3或javascript
- css3动画文本居中对齐
- Chrome在尝试从Javascript修改CSS3动画时崩溃
- 如何用Javascript覆盖CSS3动画
- 在没有关闭H/W加速的情况下优化CSS3动画会让它在GPU上运行得更快吗
- Chrome动画CSS3三维立方体与悬停状态问题
- 具有弹性图像效果的动画(CSS3和JS)
- 正弦球动画CSS3
- 从“开始”屏幕恢复动画 CSS3
- 有趣的动画CSS3 404页面
- 动画CSS3旋转单击上一个和下一个