🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1076閲覧

親要素の中心を基点としたcssアニメーション

harapara

総合スコア39

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

1クリップ

投稿2019/09/13 08:49

編集2019/09/13 09:48

円の中にアイコンがあり、クリックするとactiveクラスが追加されアニメーションが開始されます。
(円だけが中心に小さくなっていき、消えた後再び中心から現れる)

PCやAndoroidでは上手く表示されたのに、Iphone7では右下に消えていきます。。
検索ヒットしたtransform-origin:50% 50%;なども効きませんでした

解決法、原因の調べ方など検討つくかた、ぜひ教えていただければと思います!
よろしくお願いいたします。

HTML

1<div class="reaction"> 2 <div class="button heart_b"> 3 <div id="v_love_stamp" class="outline"><div class="stamp"></div> 4  <span class="far fa-heart"></span> 5 </div> 6 </div> 7 <div class="button nice_b"> 8 <div id="v_good_stamp" class="outline"><div class="stamp"></div> 9 <span class="far fa-thumbs-up"></span> 10 </div> 11 </div> 12</div>

CSS

1.reaction .button { 2 display: inline-block; 3 margin: 0 4%; 4} 5.button .outline { 6 display: block; 7 width: 100px; 8 height: 100px; 9 color: #fff; 10 position: relative; 11} 12.stamp{ 13 width: 100%; 14 height: 100%; 15 background: orange; 16 border-radius: 50%; 17 position: absolute; 18 top: 50%; 19 left: 50%; 20 transform: translate(-50%, -50%); 21 -webkit-transform: translate(-50%, -50%); 22 transform-origin:50% 50%; 23} 24.button .active .stamp{ 25 animation: stamp linear 1.4s; 26 -webkit-animation: stamp linear 1.4s; 27} 28@keyframes stamp { 29 25%{ 30 transform:translate(-50%, -50%) scale(0); 31 -webkit-transform:translate(-50%, -50%) scale(0); 32 } 33 70%{ 34 transform:translate(-50%, -50%) scale(0); 35 -webkit-transform:translate(-50%, -50%) scale(0); 36 } 37 85%{ 38 transform:translate(-50%, -50%) scale(1.3); 39 -webkit-transform:translate(-50%, -50%) scale(1.3); 40 } 41 90%{ 42 transform:translate(-50%, -50%) scale(1); 43 -webkit-transform:translate(-50%, -50%) scale(1); 44 } 45} 46.reaction .far{ 47 position: absolute; 48 top: 50%; 49 left: 50%; 50 transform: translate(-50%, -50%); 51 -webkit-transform: translate(-50%, -50%); 52 font-size: 6rem; 53}

参考になるか不明ですが補足です。

@keyframes stampをscale(0.01)ではうまく真ん中に縮んでくれます。
プラスscale(0)を追加するとそこから右下に消えていきます。
また、scale(0)をwidth:0、height:0にすると左上に消えていきます。

Lhankor_Mhy👍を押しています

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

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

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

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

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

Lhankor_Mhy

2019/09/13 09:14

これが原因なのかわかりませんが、ベンダープレフィックスを後に書くのはよくないと思います。
harapara

2019/09/13 09:20

コメントありがとうございます。 試してみましたが、以前かわらずでした。。。 ですが、知らなかったので勉強になりました!
Lhankor_Mhy

2019/09/13 09:56

ああ、なるほど、つまり、iOS Safari では translate される前の center を基準にしてるんですね。 これ、どっちが正しい動作なんだろう、興味深い……
harapara

2019/09/13 10:17

”translate される前の center”というのはanimationがスタートする前のことでしょうか??
Lhankor_Mhy

2019/09/13 10:30

いえ、translate(-50%, -50%) で左上に動かす前の中心は、動かした後の右下ですよね? そういうことなのかなあ、と。 だから、iOS Safari では scale(0) にすると表示されるものがなくなるから演算をショートカットしていて、transform-origin の基点の演算に translate(-50%, -50%) を計算していないのかな、と思ったわけです。
harapara

2019/09/13 10:59

なるほど、、0にする場合はscaleは使えないのですかね、、 scaleをなくし、すべてwidthとheightで指定するとうまく真ん中に消えていきました、、! これで対処しようかと思います!ありがとうございます!
guest

回答1

0

自己解決

scale()の問題のようなので下記のように変更

css

1@keyframes stamp { 2 25%{ 3 width: 0; 4 height: 0; 5 } 6 70%{ 7 width: 0; 8 height: 0; 9 } 10 85%{ 11 width: 120%; 12 height: 120%; 13 } 14 90%{ 15 width: 100%; 16 height: 100%; 17 } 18}

投稿2019/09/13 12:34

harapara

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問