1

ボタンをクリックして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 に答える