aタグ+CSS3アニメーション Chromeで再現できない現象と注意点

aタグ+CSS3アニメーション Chromeで再現できない現象と注意点

(2015年8月7日追記: Chromeでリンクの背景色にアニメーションがかからない件ですが、どうやら訪問済みリンクに限り変化がないようです……!)

aタグに背景色を指定し、その背景色をanimationと@keyframesで徐々に変化するように指定したところ、SafariやFirefoxでは表示されているのになぜかChromeでうまく再現できない事態に。

結局、aタグをdivで囲い、divへスタイルを指定することでChromeでも無事に表示されるようになったのですが……ポイントはなんだったのだろう?

ということで、気になるのでいろいろ比べてみました。

background-color・rotate・opacity

左から、background-color(今回の問題になったアニメーションですね)・rotate・opacity。

Chromeのみなさん、いかがでしょうか。いちばん左、変化ないですね。うーん。

See the Pen MwLVmr by haru-m (@haru-m) on CodePen.

background-position

もしかして、background〜関連がだめなのか!?と思い、
左から、background-positionを変化させてみる。いずれも問題なし。バディングのロゴがしっかり流れていますね。

See the Pen MwLGJx by haru-m (@haru-m) on CodePen.

background-image・background-scale

ダメ押しで、background関連の違うパターンでアニメーションを!

左から、background-image・background-scale。

background-imageは単純に2枚の画像を用意し、aタグのbackgroundに指定し、徐々に2枚を切り替えるという動きです。

お!変化ありました、background-imageの変化がFirefoxだとみられないですね……!

See the Pen pJGVwq by haru-m (@haru-m) on CodePen.

Firefoxで二枚の画像のクロスフェードをアニメーションで再現できなかった理由

これもなんとも不思議な現象なのですが、background-imageはanimation不可だとかなんとか。

animatable-background-image

参照元:http://www.w3.org/TR/css3-background/#the-background-image

あらほんと!というかならば何故Chromeやsafariで再現できているのだろうというところはあれですが。

一応、ホバーをきっかけに変化させるという動きではありますがtransitionでも試してみました。Firefoxでは、変化はしてくれるものの、単にぱっと切り替わってしまいます。

See the Pen mJvoqy by haru-m (@haru-m) on CodePen.

まとめ

結局、「aタグにbackground-color変化のアニメーション」がなぜChromeでうまくいかず、「divで囲み、divにスタイルをあてることで回避できた」というのが実に謎なのですが、aタグにアニメーションを使用する際はちょっと注意してみます。
Firefoxでbackground-imageにアニメーションが当てられなかったのは「background-imageは仕様的にはアニメーション不可能なプロパティだから」というわけなので、むしろChromeとSafariが再現できているのが何故なのか?というまとめでした。

技術

Categoryカテゴリー一覧

メニューを閉じる

tagタグ一覧

メニューを閉じる