質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

1回答

4303閲覧

iOS SafariでCSS3のアニメーションがチラつく

Shichi7

総合スコア35

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2019/08/10 12:46

css3でアニメーションを設定しましたが、アニメーションがカクカクしたり、関係ない要素がチラついたりします。
調べてみて一通り試してみたのですが治りませんでした。

Vue.jsで作っています。
よろしくお願いします。

vue.js

1<template> 2 ... 3 // 同じ要素が複数存在し、同時にアニメーションされます。 4 <span class="circle circle-anime"></span> 5 ... 6</template> 7 8<style lang="scss"> 9.circle { 10 display: block; 11 position: absolute; 12 background-color: #fff; 13 border-radius: 50%; 14 } 15 16.circle-anime { 17 width: 56px; 18 height: 56px; 19 top: 0; 20 left: 0; 21 right: 0; 22 bottom: 0; 23 margin: auto; 24 animation: sizeScaleAndDisappear 3s ease-out 1s forwards infinite; 25 -webkit-animation: sizeScaleAndDisappear 3s ease-out 1s forwards infinite; 26 -webkit-backface-visibility: hidden; // 調べて追記した部分 効果出ず 27 backface-visibility: hidden; // 調べて追記した部分 効果出ず 28 will-change: animation; // 調べて追記した部分 効果出ず 29 } 30 31@keyframes sizeScaleAndDisappear { 32 0% { 33 width:28px; 34 height: 28px; 35 opacity: 1; 36 transform: translate3d(0, 0, 0); 37 } 38 30% { 39 width: 120px; 40 height: 120px; 41 opacity: 0; 42 transform: translate3d(0, 0, 0); 43 } 44 45 100% { 46 opacity: 0; 47 transform: translate3d(0, 0, 0); 48 } 49</style>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

関係ない要素がチラついたり

このチラつくという現象については「関係ない要素」のソースを質問者さんが開示してませんので確認できませんでしたが、「カクカクする」という点についてはより良い状態と思われる書き方があるので以下を試されることをおすすめします。

scss

1 2.circle-anime { 3 ... 4 5 // 1. GPUレンダリングを有効にして、アニメーションを滑らかに行えるように指定 6 // 2. いくつかのブラウザでCSS Transformがチラつく場合がある問題を解消 7 transform: translate3d(0, 0, 0); // 1. 8 animation: sizeScaleAndDisappear 3s ease-out 1s forwards infinite; 9 will-change: transform; // 1. 10 backface-visibility: hidden; // 2. 11} 12 13@keyframes sizeScaleAndDisappear { 14 // 拡大・縮小は scale() で処理させる 15 // (width/heightよりもtransformで処理させる方が滑らかになるため) 16 0% { 17 opacity: 1; 18 transform: scale(.5); // 元サイズを1とした好みの拡大・縮小割合 19 } 20 30% { 21 opacity: 0; 22 transform: scale(2.142857); // 元サイズを1とした好みの拡大・縮小割合 23 } 24 100% { 25 opacity: 0; 26 transform: scale(1); 27 } 28}

各プロパティの意味はソースコードコメントに書いた通りで、まず translate3d() は何の変化もしないのでキーフレームごとに書かれてる必要はありません。ですが、CSSアニメーションのGPUレンダリングを有効にするために必要になるケースもあるので .circle-anime の方に移します。

そして、各キーフレームのcircleサイズの変化を質問者さんはwidth/heightで書いてましたが scale() でやる方が滑らかになるので、scaleに行わせるようにします。

-webkit- のベンダープレフィックス付きプロパティはCan I useなどでご自身のプロジェクトのターゲットブラウザなどを確認し適宜付与してください。iOS 9.0以上、Android 5以上であれば書かなくてもいいはずです。

投稿2019/08/22 14:15

archetypes.k

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問