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

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

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

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

CSS

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

Q&A

解決済

2回答

1127閲覧

HTML・cssのアニメーションで背景画像が表示されない

Hinomae

総合スコア7

HTML

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

CSS

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

0グッド

0クリップ

投稿2022/12/24 15:10

編集2022/12/24 15:11

実装したいこと

PCやスマホで作成したHTMLファイルを開いたとき、2枚の背景画像がフェードで交互に表示される実装をしたいです。
ウェブ上のサイトを参考にコーディングしましたが、現状2枚の画像ファイルそのものが表示されないため改善点を教えて頂きたいです。

以下のコードでは2枚の画像をそれぞれ2秒ずつ、計4秒を無限ループさせる仕様を目指しています。
画像の相対パスが正しいことは確認できています。

コード

HTML

1<body> 2 <div class="IMAGE"> 3 <div class="img1"></div> 4 <div class="img2"></div> 5 </div> 6</body>

css

1@charset "utf-8"; 2 3.IMAGE { 4 height: 100vh; 5} 6 7.img1, .img2 { 8 background-size: contain; 9 position: absolute; 10 background-position: center center; 11 background-repeat: no-repeat; 12 animation: anime 4s infinite; 13 opacity: 0; 14} 15 16.img1 { 17 background-image: url(../2arrows_right.png); 18} 19 20.img2 { 21 background-image: url(../2arrows_Left.png); 22 animation-delay: 2s; 23} 24 25@keyframes anime { 26 0% { 27 opacity: 0; 28 } 29 37.5% { 30 opacity: 1; 31 } 32 50% { 33 opacity: 1; 34 } 35 63.5% { 36 opacity: 0; 37 } 38 100%{ 39 opacity: 0; 40 } 41}

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

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

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

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

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

guest

回答2

0

ベストアンサー

高さと幅を設定する必要があります。

css

1.img1, 2.img2 { 3 background-size: contain; 4 height: 100%; /* 追加 */ 5 width: 100%; /* 追加 */ 6 position: absolute; 7 background-position: center center; 8 background-repeat: no-repeat; 9 animation: anime 4s infinite; 10 opacity: 0; 11}

別案

今なら、gridで重ねて配置してもいいですね。

css

1.IMAGE { 2 height: 100vh; 3 display: grid; /* 追加 */ 4} 5 6.img1, 7.img2 { 8 grid-area: 1 / 1 / 2 / 2; /* 追加 */ 9 background-size: contain; 10 background-position: center center; 11 background-repeat: no-repeat; 12 animation: anime 4s infinite; 13 opacity: 0; 14}

投稿2022/12/25 02:36

編集2022/12/25 02:46
hatena19

総合スコア33715

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

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

Hinomae

2022/12/25 03:58

ご解答ありがとうございます! widthとheightを指定したところ正常に表示されました。 つかぬことを伺いますが、基本的に全てのdivタグはcssで幅や高さを指定する必要がある、という解釈で良いのでしょうか??
hatena19

2022/12/25 04:21

divは、通常、サイズ指定しない場合、幅は親要素の幅まで広がり、高さは中身の要素の高さになります。 ただし、position: absolute; にすると、フローから浮いた状態になるので、中身のサイズになります。中身がないときは、幅も高さも0になります。
guest

0

div自体に高さがないからではないでしょうか?
height: 0の状態なので、何も表示されない)

修正例

css

1.img1, .img2 { 2 height: 100%; /* 追加 */ 3 background-size: contain; 4 position: absolute; 5 background-position: center center; 6 background-repeat: no-repeat; 7 animation: anime 4s infinite; 8 opacity: 0; 9}

おまけ

CSSのみでスライドショーを実装する方法を以前回答させていただき、ベストアンサーに選んでいただきました。

https://teratail.com/questions/cfl1hb1nkg612l
↑の、『コード例(CSS編)』をご覧ください。

考え方を理解すれば2枚だけでなく、任意の枚数に対応できます。
よろしければご参考ください。

投稿2022/12/24 16:36

Cocode

総合スコア2314

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

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

Hinomae

2022/12/25 01:20

ご回答ありがとうございます!おまけの方非常にありがたいです。 参考にさせて頂きます。 本題の質問についてですが、記述の通りdivの高さを指定して読み込んでみました。 結果画像は表示されないままで変わらず、という感じです…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問