Chrome は問題ありませんが、Firefox (v17 で試行) で遭遇した CSS3 ネイティブ アニメーションには問題があります。
サンプルは Codepen でも入手できます: http://codepen.io/anon/pen/yxteC
コードも以下に複製されます。
いくつかのクラスをいくつかの要素に適用します(ホバリング時にJSで適用しようとしましたが、ホバリング自体はまったく同じように機能します(クラス:hover
ではなくセレクター.hover
))。したがって、問題は、Firefox ではアニメーションが 1 回だけトリガーされることです。つまり、クラスが最初に適用されたときです。次回はそうではありません。
それはChromeで完全に機能します。ただし、他のブラウザーはテストしていません (IE はまだそれを広くサポートしておらず、Opera ... まあ、今のところあまり気にしません)。
もう 1 つの詳細: 内部要素 ( display:none
/ block
) を非表示/表示しない場合、Firefox で問題なく動作します (ただし、これは明らかに解決策ではありません)。
一般的な清潔さとコードの可能な改善に関連するコメントを追加しないでください。これはほんの一例です。
HTML:
<div>
<span>menu</span>
<ul>
<li>Item1</li>
<li>Item2</li>
<li>Item3</li>
</ul>
</div>
CSS:
ul
{
display: none;
}
div.hover ul
{
display: block;
}
div li
{
position: relative;
top: -10px;
}
div.hover li
{
-webkit-animation: filterAppear 0.5s;
-moz-animation: filterAppear 0.5s;
top: 0;
opacity: 1;
-webkit-animation: filterItemAppear 0.1s;
-moz-animation: filterItemAppear 0.1s;
-webkit-animation-fill-mode: backwards;
-moz-animation-fill-mode: backwards;
}
div.hover li:nth-child(1)
{
-webkit-animation-delay: 0.15s;
-moz-animation-delay: 0.15s;
}
div.hover li:nth-child(2)
{
-webkit-animation-delay: 0.35s;
-moz-animation-delay: 0.35s;
}
div.hover li:nth-child(3)
{
-webkit-animation-delay: 0.55s;
-moz-animation-delay: 0.55s;
}
@-webkit-keyframes filterItemAppear
{
from { opacity:0; top:-25px; }
to { opacity:1; top:0; }
}
@-moz-keyframes filterItemAppear
{
from { opacity:0; top:-25px; }
to { opacity:1; top:0; }
}