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

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

詳細はこちら
CSS

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

Q&A

解決済

1回答

511閲覧

CSS animation keyframes

退会済みユーザー

退会済みユーザー

総合スコア0

CSS

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

0グッド

0クリップ

投稿2021/01/30 10:43

編集2021/01/30 13:13

前提・実現したいこと

現在左から右へメッセージを徐々に表示し、
徐々に戻るというアニメーションを作っています
表示するメッセージ画像は4つです
4つの表示時間の間隔をうまく指定できません
下記ソースを実行すると4つ目が終わったあとに間が空いてしまいます
全て均等に表示時間を設定するには%をいじると思うのですが、
どうやってみても均等にすることができません
それとなぜかopacityの設定も効いてません(左から出てくるときに徐々に表示、消える時に徐々に消えるようにしたい)
CSS初心者で無駄が多い書き方になってると思いますが、教えていただけると幸いです

該当のソースコード

CSS

1<style> 2body,html{ 3background:black; 4height:100%; 5} 6.a { 7width:30%; 8height:10%; 9transform:translateX(-500%); 10left:0%; 11top:0%; 12position:absolute; 13background:transparent url('') no-repeat center; 14background-size:contain; 15animation: a_ 35s infinite; 16opacity:0; 17} 18 19@keyframes a_ { 200%,20%,40%,60%,80%,100%{ 21transform:translateX(-500%); 22opacity: 0; 23} 243%,18%{ 25background:transparent url('http://placehold.jp/24/cccccc/ffffff/250x50.png?text=こんにちわ1') no-repeat center; 26background-size:contain; 27transform:translateX(10%); 28opacity: 1; 29} 3022%,38%{ 31background:transparent url('http://placehold.jp/24/cccccc/ffffff/250x50.png?text=こんにちわ2') no-repeat center; 32background-size:contain; 33transform:translateX(10%); 34opacity: 1; 35} 3642%,58%{ 37background:transparent url('http://placehold.jp/24/cccccc/ffffff/250x50.png?text=こんにちわ3') no-repeat center; 38background-size:contain; 39transform:translateX(10%); 40opacity: 1; 41} 4262%,78%{ 43background:transparent url('http://placehold.jp/24/cccccc/ffffff/250x50.png?text=こんにちわ4') no-repeat center; 44background-size:contain; 45transform:translateX(10%); 46opacity: 1; 47} 48} 49</style> 50 51<div class="a"></div>

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

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

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

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

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

hatena19

2021/01/30 12:16

タイトルは質問内容を表すもの変更してください。
gentaro

2021/01/30 12:43

よく見かけるけど初心者を名乗る人が「詳しい方いますか?」って、オメーはどこに来て質問してるつもりなんだ?と思ってしまう言葉だ。
退会済みユーザー

退会済みユーザー

2021/01/30 13:15

それと同時にあなたは何様なんでしょうね
gentaro

2021/01/30 13:35

「同時に」ってことは自分でも言われた内容には納得はできてるのね。なかなかお利口さんだなぁ。
退会済みユーザー

退会済みユーザー

2021/01/30 13:39

teratailの一利用者の分際で偉そうなこったなぁ
gentaro

2021/01/30 13:46

「teratailの一利用者の分際」って利用者全てを見下すとはなかなか偉そうな人だなぁ。
退会済みユーザー

退会済みユーザー

2021/01/30 13:52

オメーはどこに来て質問してるつもりなんだ?と思ってしまう言葉 ↑これってteratailがレベルが低すぎて詳しい奴なんていないって意味だったのかな 脳内完結してて意味不明だよね
退会済みユーザー

退会済みユーザー

2021/01/30 13:54

誰がいつ利用者全てを見下したんだろう お前さんに突き付けただけだよ
gentaro

2021/01/30 14:01

ギャグで言ってる?本気だとしたら国語力なさすぎて笑ってしまうけど。「脳内完結してて意味不明」ってブーメランにしかなってない。 自分が初心者を名乗ってるなら、回答する人は全員「お前より詳しい人」だろ、という意味以外何があるの?医者に行って「医療に詳しいお医者さんお願いします」とか言うか?こいつバカにしてんの?って反応になるからやめとけ、という話なんだが。
退会済みユーザー

退会済みユーザー

2021/01/30 14:06

回答ができる人間がいるかわからないから詳しい人って言ってるんだろ、アホはお前さんだろw しかもteratailはジャンル分けされてるわけでw 難癖付ける暇があるならまともな回答の一つでもしてから言うんだなw ぶっひゃひゃひゃww
gentaro

2021/01/30 23:50

頭大丈夫?まともに質問のタイトルも書けずに注意されてるヤツの言うことじゃねーぞ。ことごとくブーメランだわ。
guest

回答1

0

ベストアンサー

4個の画像を切り替えるので、一つの画像のアニメーションは25%の幅で完結するように設定すれば間隔は同じなるでしょう。
あと、transition-timing-function を linear にしておかないと、初期値はeaseなので最初と最後で動きが変化するので間隔が同じにならないですね。

下記のような感じでしょうか。細かい動きは%を調節してください。

css

1body,html{ 2 background:black; 3 height:100%; 4} 5.a { 6 width:30%; 7 height:10%; 8 left:0; 9 top:10px; 10 position: absolute; 11 background: center / contain no-repeat; 12 animation: a_ 20s linear infinite; 13 opacity:0; 14} 15 16@keyframes a_ { 17 0%{ 18 background-image: url('http://placehold.jp/24/cccccc/ffffff/250x50.png?text=こんにちわ1'); 19 transform:translateX(-100%); 20 opacity: 0; 21 } 22 10%,15%{ 23 transform:translateX(10%); 24 opacity: 1; 25 } 26 25%{ 27 background-image: url('http://placehold.jp/24/cccccc/ffffff/250x50.png?text=こんにちわ1'); 28 transform:translateX(-100%); 29 opacity: 0; 30 } 31 25.1%{ 32 background-image: url('http://placehold.jp/24/cccc00/ffffff/250x50.png?text=こんにちわ2'); 33 transform:translateX(-100%); 34 opacity: 0; 35 } 36 35%,40%{ 37 transform:translateX(10%); 38 opacity: 1; 39 } 40 50%{ 41 background-image: url('http://placehold.jp/24/cccc00/ffffff/250x50.png?text=こんにちわ2'); 42 transform:translateX(-100%); 43 opacity: 0; 44 } 45 50.1%{ 46 background-image: url('http://placehold.jp/24/cc00cc/ffffff/250x50.png?text=こんにちわ3'); 47 transform:translateX(-100%); 48 opacity: 0; 49 } 50 60%,65%{ 51 transform:translateX(10%); 52 opacity: 1; 53 } 54 75%{ 55 background-image: url('http://placehold.jp/24/cc00cc/ffffff/250x50.png?text=こんにちわ3'); 56 transform:translateX(-100%); 57 opacity: 0; 58 } 59 75.1%{ 60 background-image: url('http://placehold.jp/24/00cccc/ffffff/250x50.png?text=こんにちわ4'); 61 transform:translateX(-100%); 62 opacity: 0; 63 } 64 85%,90%{ 65 transform:translateX(10%); 66 opacity: 1; 67 } 68 100%{ 69 background-image: url('http://placehold.jp/24/00cccc/ffffff/250x50.png?text=こんにちわ4'); 70 transform:translateX(-100%); 71 opacity: 0; 72 } 73}

@keyframes は下記のようにまとめて記述すると短くできますね。

css

1@keyframes a_ { 2 10%,15%, 35%,40%, 60%,65%, 85%,90%{ 3 transform:translateX(10%); 4 opacity: 1; 5 } 6 0%, 25%, 50%, 75%, 100%{ 7 transform:translateX(-100%); 8 opacity: 0; 9 } 10 0%, 25%{ 11 background-image: url('http://placehold.jp/24/cccccc/ffffff/250x50.png?text=こんにちわ1'); 12 } 13 25.1%, 50%{ 14 background-image: url('http://placehold.jp/24/cccc00/ffffff/250x50.png?text=こんにちわ2'); 15 } 16 50.1%, 75%{ 17 background-image: url('http://placehold.jp/24/cc00cc/ffffff/250x50.png?text=こんにちわ3'); 18 } 19 75.1%, 100%{ 20 background-image: url('http://placehold.jp/24/00cccc/ffffff/250x50.png?text=こんにちわ4'); 21 } 22}

投稿2021/01/30 13:56

編集2021/01/30 14:58
hatena19

総合スコア34073

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

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

退会済みユーザー

退会済みユーザー

2021/01/30 14:10

詳しい回答ありがとうございました 勉強になります 均等にするには細かく%を指定する必要があるんですね あと、 私の書いたソースのopacityはなぜ動かなかったのか、わかりますか?
hatena19

2021/01/30 14:26

opacityは変化していると思います。 ただ、translateX(-500%) から translateX(10%) まで移動させているので、これだと、大部分が画面外なので、見えている部分での変化が少ないだけだと思います。 translateX(-100%)にすると変化が分かると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問