これが UX にどのように影響するかを考えたいと思うかもしれませんが、これについてはどうですか: http://jsfiddle.net/7Xuep/6/
わかりましたので、虹のすべての色を回転させることは、CSS アニメーションを使用して簡単に行うことができます。問題は、アニメーションが適切な場所で開始されるように、それらをすべてのスパン タグにリンクすることです。(つまり、緑色からアニメーションを開始するには、緑色の文字が必要です。) これを行うには、次を使用できますanimation-delay
。
https://developer.mozilla.org/en-US/docs/Web/CSS/animation-delay
これを使用して、各文字の適切な色で虹のアニメーションを開始できます。タイミング関数を使用するlinear
と、アニメーションが各色に到達する時間を簡単に決定できます。したがって、各要素に適切なanimation-delay
値を付けるだけです。既に生成された HTML を取得し、各要素の属性<span>
に CSS ルールを追加するだけでそれを行います。style
var animTime = 6, // time for the animation in seconds
hueChange = 3, // the hue change from one span element to the next
prefixes = ["", "-webkit-", "-moz-", "-o-"],
numPrefixes = prefixes.length;
$('.unicorn').find('span').each(function (i) {
for (var j = 0; j < numPrefixes; j++) {
$(this).css(prefixes[j] + 'animation-delay', (animTime * ((i * hueChange) % 360) / 360) - animTime + 's');
}
});
span
ただし、すべての要素を生成すると同時にこれを行うことができます。次に、CSS を使用してアニメーションを設定する例です。
.unicorn:hover span {
animation: colorRotate 6s linear 0s infinite;
}
@keyframes colorRotate {
from {
color: rgb(255, 0, 0);
}
16.6% {
color: rgb(255, 0, 255);
}
33.3% {
color: rgb(0, 0, 255);
}
50% {
color: rgb(0, 255, 255);
}
66.6% {
color: rgb(0, 255, 0);
}
83.3% {
color: rgb(255, 255, 0);
}
to {
color: rgb(255, 0, 0);
}
}
これですべてここにたどり着きます:http://jsfiddle.net/P6WVg/7/
ここで、誰かがホバリングしなくなったときに色をリセットしたくない場合は.unicorn
、次を使用できますanimation-play-state
。
https://developer.mozilla.org/en-US/docs/Web/CSS/animation-play-state
ただし、最初のフレーム (つまり、この場合) を表示するように、初期値-webkit-animation-play-state:paused;
と負の値を組み合わせることで Chrome に問題があることがわかりました。したがって、イベント リスナーを使用して、最初のホバー時にアニメーション CSS を含むクラスを追加する必要がありました。-webkit-animation-delay
color: rgb(255,0,0);
http://jsfiddle.net/7Xuep/6/
(クロムのバグはここで追跡できます: https://code.google.com/p/chromium/issues/detail?id=269340 )