1

我正在尝试通过单击按钮向 div 添加 CSS 类名称来为 div 设置动画。但这仅适用于第一次。下次我单击按钮并添加 CSS 类名称时,它不会为 div 设置动画。我在这里做错了什么?

<head>
<script>
function abc() {
 document.getElementById("a").className = "";
 document.getElementById("a").className = document.getElementById("a").className + " b";
}
</script>
<style> 
#a {
 width:100px;
 height:100px;
 background:red;
 position:relative;
}
.b {
 animation-name:myfirst;
 animation-duration:5s; 
 animation-timing-function:linear;
 animation-delay:2s;
 animation-iteration-count:1;
 animation-direction:alternate;
 animation-play-state:running;
}

@keyframes myfirst
{
 0%   {background:red; left:0px; top:0px;}
 25%  {background:yellow; left:200px; top:0px;}
 50%  {background:blue; left:200px; top:200px;}
 75%  {background:green; left:0px; top:200px;}
 100% {background:red; left:0px; top:0px;}
}

@-webkit-keyframes myfirst /* Safari and Chrome */
{
 0%   {background:red; left:0px; top:0px;}
 25%  {background:yellow; left:200px; top:0px;}
 50%  {background:blue; left:200px; top:200px;}
 75%  {background:green; left:0px; top:200px;}
 100% {background:red; left:0px; top:0px;}
}
</style>
</head>

<body>

<div id="a" class="c"></div>
<button onclick="abc()">Click</button>

</body>
4

1 回答 1

1

给定元素上的类是一个集合,因此添加一个已经存在的类不会改变任何东西。使用 JavaScript 可能会更好地完成这种动画。(实际上,CSS 动画就像 CSS 中的任何东西一样——它取决于状态,而不是动作。)

还是我误会了?是停不下来的问题吗?

由于您使用的是动画,因此假设classList支持可能是安全的,因此:

document.getElementById("a").classList.toggle("b");
于 2013-09-14T17:39:42.333 回答