transitionやtransformでCSSアニメーションを要素にかけた時に、要素の幅が一瞬だけ伸縮してしまったり、ちらついてしまう場合があります。私もよく以下のようなCSSを指定することがあるのですが、アニメーション時に画像が一瞬だけ伸縮してしまうことがあります。
a img{ transition:all .3s ease-in-out; } a:hover img{ opacity:0.8; }
このような現象を対処するための方法をご紹介したいと思います。
CSSアニメーションで要素が一瞬伸縮したりちらついたりする場合の対処法
要素が伸縮したりちらついてしまう現象が発生する場合は、アニメーションを指定している要素に対して、以下のCSSを追加します。
a img{ -webkit-backface-visibility:hidden; backface-visibility:hidden; }
これで現象は収まるはずです。上記を追加してもダメな場合は、「overflow:hidden;」も追加してみましょう。
あとがき
backface-visibilityプロパティは、変形した要素の背面の表示方法を指定します。初期値はvisibleになっていて、前面の要素が変形した場合も背面を描画します。この仕様によって、要素が伸縮したりちらついて見えてしまうというわけです。値をhiddenにすることで、背面を描画しなくなるので現象が収まります。