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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

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

CSS

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

Q&A

解決済

1回答

2070閲覧

CSSアニメーションで画像の切り替わる速さを均一にしたいです

newyee

総合スコア213

CSS3

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

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

CSS

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

0グッド

0クリップ

投稿2018/11/13 00:35

編集2018/11/13 00:37

CSSにて、animationプロパティでの画像切り替えについて、お聞きしたいことがあります。
コードの方はコードペンの方に上げさせていただきましたので、チェック頂けましたら幸いです。
コードペンのリンクになります。
コードペンに上げさせて頂きましたコードの、クラス「slide_animation」に適用しているアニメーションなのですが、1枚目から、2枚目に切り替わる速さと3枚目から一枚目に切り替わる速さは同じくらいに見えるのですが、2枚目から3枚目に切り替わる速さだけ、少し早いような気がします。全て、画像が切り替わる速さを均一にするには、どのように修正すればよろしいでょうか?また、ページにアクセスしてからアニメーションが始まるまでに、少し時間がかかってしまっているように思えるのですが、そういった部分を改善することは可能でしょうか?
もし、教えてくださる方いらっしゃいましたら、ご回答頂けましたら幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

animation-duration8s
1枚目と2枚目の時間差が2.6s(.slide_animation_3animation-delayanimation-durationの差より)
2枚目と3枚目の時間差が2.6s(.slide_animation_2animation-delayより)
3枚目と1枚目の時間差が2.8s(.slide_animation_2.slide_animation_3animation-delayの差より)

なので、3枚目→1枚目の長さが他より少し長いですね。

解決策としては、animation-duration7.8s.slide_animation_3を'5.2s'にする感じですかね。

追記

CSS

1.slide_animation{ 2 animation-name:slide; 3 animation-duration:7.8s; /* 2.6s × 3枚 */ 4 animation-iteration-count:infinite; 5 opacity:1; 6 position:absolute; 7} 8 9@keyframes slide { 10 0%{opacity:1} 11 33.33333%{opacity:0} 12 66.66666%{opacity:0;} 13 100%{opacity:1;} 14} 15.slide_animation_1{ 16 z-index: 3; 17 animation-delay:0s; 18} 19.slide_animation_2{ 20 z-index: 2; 21 animation-delay:2.6s; 22} 23.slide_animation_3{ 24 z-index:1; 25 animation-delay:5.2s; 26}

こうすると、見かけ上、1番最初だけ画像が消えるのが早い気がすると思うので、その場合は
.slide_animation_1から.slide_animation_3までanimation-delayを同じ秒数ずつ伸ばしてやればよいです。

例)

CSS

1.slide_animation_1{ 2 z-index: 3; 3 animation-delay:1.3s; 4} 5.slide_animation_2{ 6 z-index: 2; 7 animation-delay:3.9s; 8} 9.slide_animation_3{ 10 z-index:1; 11 animation-delay:6.5s; 12}

投稿2018/11/13 00:59

編集2018/11/14 06:20
macaron_xxx

総合スコア3191

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

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

newyee

2018/11/13 04:57

ご回答ありがとうございます。 「.slide_animation_3」の「animation-delay」に関しましては、計算ミスをしており、「5.2s」指定するところを、「5.4s」と指定していました。 ということは、これで、全ての時間差はそろったことになりますでしょうか...?
macaron_xxx

2018/11/13 05:47

animation-durationが8sのままだと、1枚目と2枚目が2.8sになりますので、全体の時間のanimation-durationを7.8sにする必要があります。
newyee

2018/11/13 08:44

ご返信ありがとうございます。 1枚目と2枚目の差が、2.8sだということなのですが、「.slide_animation_2」の「animation-delay」に2.6sを指定している為、時間差は2.6sではないかと思うのですが、何故2.8sになるのでしょうか?
macaron_xxx

2018/11/14 06:03 編集

今、画面の表示上、 1枚目:shop_img3 .slide_animation_3 2枚目:shop_img1 .slide_animation_1 3枚目:shop_img2 .slide_animation_2 となっていることに留意してください。
newyee

2018/11/14 02:33

ご返信ありがとうございます。 初期表示状態が、「shop_img3」ということなのですが、画面を更新した際に表示される画像はまず、「shop_img1」が表示されている状況です...
macaron_xxx

2018/11/14 04:03 編集

CodepenではBeesというサロン名が入っている画像が表示されていますが?
newyee

2018/11/14 05:06

slide_wrapper内の最初の要素には、クラス「slide_animation_1」があり、その下に、「slide_animation_2」その下に「slide_animation_3」が配置されているため、初期状態の画像は、「slide_animation_1」ではないかと思うのですが、そうではないということでしょうか?
macaron_xxx

2018/11/14 06:02

実態と見比べていますか? あなたの想像よりも実際の状況を把握してください。 absoluteで重なっており、z-indexが同じ(=指定されていない)場合は、あとに書いたブロックが上に重なります。 なので、今回は3→2→1の順番で重なっています。
macaron_xxx

2018/11/14 06:09 編集

https://codepen.io/iamaimi/pen/BGWKvX 上記コードでは少しずつずらしていますが、あなたのコードはこれがすべて重なっているので、初期に表示されているのは一番最後のブロックである3です。
macaron_xxx

2018/11/14 06:13

>ページにアクセスしてからアニメーションが始まるまでに、少し時間がかかってしまっているように思えるのですが、そういった部分を改善することは可能でしょうか? この部分見落としてました。 この問題を解決するためにはやはりz-indexを制御する必要があるので、回答に追記します。
newyee

2018/11/14 09:07

ご返信ありがとうございます。 確認してみましたら、お答えいただいた通りでした... クラス「slide_animation_1」の子要素の画像は、「slide_animation_3」の画像だと勘違いしてしまっていたために、実際には、実現したいことができてしまっていたというのもあり、気づきませんでした... もし、画像が違っていたら、混乱してしまっていたでしょうし、大変勉強になりました...
newyee

2018/11/14 09:26

追記ありがとうございます。 重ね重ね申し訳ないのですが、ご回答下さったこの部分「1番最初だけ画像が消えるのが早い気がする」なのですが、自分の説明不足で申し訳ないのですが、ページにアクセスしてからむしろ、アニメーションが始まる時間を早めたいと考えております。実は、現在作成していますWEBサイトは勉強の為、既存のサイト真似る形で参考にさせて頂いているのですが、そこでは、ページにアクセスしてから、感覚としては一秒もたたない内にアニメーションが始まり、画像の切り替えがスタートし、2枚目の画像に移行していきます。しかし、自分の作成したコードでは、ページを更新してから、数秒立たないとアニメーションが始まらず、2枚目の画像に移行し始めるのが遅いといった状態です。 細かい点かもしれないのですが、ページを更新してからアニメーションをスタートさせる時間を早めたいといった感覚でおります。
macaron_xxx

2018/11/14 10:06

追記の上の方のコードは即アニメーションが始まるようにしてありますよ。
macaron_xxx

2018/11/14 10:08

そもそも元のコードは、slide_animation_3が一番上になっていた関係で、animation-delayの5.4s後からアニメーションが始まっていました。 私が提示したコードでは、slide_animation_1が一番上になっているので、delayなしですぐにアニメーションが始まります。
newyee

2018/11/14 12:09

画像がそのままでも、並びは問題なかった為、z-indexを設定していなかったのですが、設定したら、すぐに表示されるようになりました... 何度もご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問