質問するログイン新規登録

Q&A

解決済

2回答

341閲覧

4枚の写真切り替えで一枚目が表示されない

kimu05

総合スコア29

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

0グッド

0クリップ

投稿2026/08/03 06:14

0

0

実現したいこと

4枚の写真を2秒ごとの切り替えで表示させたい。イメージ説明

発生している問題・分からないこと

4枚のslideimg_paraを2秒ごとに写真切り替えするようにしたいのですが、
どうしても1枚目が表示されないエラーが発生しています。
ご教示いただけないでしょうか。

エラーメッセージ

error

14枚のslideimg_paraを2秒ごとに写真切り替えするようにしたいのですが、 2どうしても1枚目が表示されないエラーが発生しています。 3ご教示いただけないでしょうか。

該当のソースコード

html

1<div class="box2"> 2<div class="container_kasane_flarerib delayScroll"> 3<div class="conte2"> 4<div class="conte2-child slider-container-full"> 5 <!-- 1枚目 --> 6 <div class="slideimg_para"> 7 <p><a href="#"><img src="image/top.webp" alt="1枚目"></a></p> 8 </div> 9 <!-- 2枚目 --> 10 <div class="slideimg_para"> 11 <p><a href="#"><img src="image/2.webp" alt="2枚目"></a></p> 12 </div> 13 <!-- 3枚目 --> 14 <div class="slideimg_para"> 15 <p><a href="#"><img src="image/3.webp" alt="3枚目"></a></p> 16 </div> 17 <!-- 4枚目 --> 18 <div class="slideimg_para"> 19 <p><a href="#"><img src="image/4.webp" alt="4枚目"></a></p> 20 </div> 21 </div> 22 </div> 23<div class="conte3"> 24<p class="title_flare delayScroll"><img src="image/5_a.webp" /></p> 25<p class="hira_flare delayScroll"><a href="#"><img src="image/5_b.webp" /></a></p> 26</div> 27 28</div> 29 30<div class="container_kasane_flarerib delayScroll"> 31<div class="conte2"> 32<p class="color_flare delayScroll"><a href="#"><img src="image/6.webp" /></a></p> 33</div> 34 35<p class="point_text6 js-template-ignore-br delayScroll"> 36 おしゃれ見えも叶えてくれる 37 アイテムです。 38</p> 39 40<div class="conte3"> 41<p class="model_flare delayScroll"><a href="#"><img src="image/7.webp" /></a></p> 42</div> 43 44</div> 45 46 47</div> 48

css

1.box2 { 2 width: 100%; 3padding: 15% 0 15% 0; 4} 5.container_kasane_flarerib { 6 position: relative; 7width: 100%; 8} 9.conte2{ 10width: 100%; 11height:auto; 12display:flex; 13justify-content:flex-start; 14 margin: 70px 0 0 0; 15 } 16.conte2-child { 17 width:90%; 18 height:auto; 19} 20 21 22 23/* パラパラここから */ 24.slider-container-full { 25 position: relative; 26 width: 70%; 27 overflow: hidden; 28} 29 30.slideimg_para { 31 position: absolute; 32 pointer-events: none; 33 left: 0; 34 width: 100%; 35 opacity: 0; 36 animation: flip 4s steps(1) infinite !important; 37} 38 39/* 最初の画像だけ高さの基準にする */ 40.slideimg_para:nth-child(1) { 41 position: relative; 42 opacity: 1; 43 animation-delay: 0s !important; 44} 45 46/* 2枚目 */ 47.slideimg_para:nth-child(2) { 48 animation-delay: 1s !important; 49} 50 51 52/* 3枚目 */ 53.slideimg_para:nth-child(3) { 54 animation-delay: 2s !important; 55} 56 57 58/* 4枚目 */ 59.slideimg_para:nth-child(4) { 60 animation-delay: 3s !important; 61} 62 63 64@keyframes flip { 65 0% { opacity: 1; } 66 24.99% { opacity: 1; } 67 68 25% { opacity: 0; } 69 100% { opacity: 0; } 70} 71 72 73.slideimg_para p img{ 74 width: 680px; 75 } 76 77 78.conte3{ 79 width: 100%; 80 height:auto; 81 display:flex;/* 親につける */ 82justify-content:flex-end;/* 水平方向中央揃え */ 83 } 84.title_flare { 85 position: absolute; 86 bottom: 550px; /* 上からの距離 */ 87 margin:auto 0; 88} 89.title_flare img { 90width: 90%; 91 } 92 93.hira_flare { 94 position: absolute; 95 bottom: 270px; /* 上からの距離 */ 96 margin:auto 0; 97} 98.hira_flare img { 99width: 90%; 100 101 } 102 103 104.model_flare { 105position: absolute; 106top: -40px; 107margin:auto 0; 108} 109.model_flare img { 110width: 100%; 111 112 } 113 114.color_flare { 115 position: absolute; 116top: 380px; 117margin:auto 0; 118} 119.color_flare img { 120width: 100%; 121 122} 123 124 125/*=========== 126 スライドイン 127===========*/ 128.fadeUp { 129 animation-name: fadeUpAnime; /* 下で定義するアニメーションを適用 */ 130 animation-duration: 0.5s; /* アニメーションの時間は0.5秒 */ 131 animation-fill-mode: forwards; /* アニメーション終了後、状態を保持 */ 132 opacity: 0; /* 初期状態は非表示(透明) */ 133} 134 135/* fadeUpアニメーションの内容 */ 136@keyframes fadeUpAnime { 137 from { 138 opacity: 0; /* 最初は透明で */ 139 transform: translateY(100px); /* 100px下から表示開始 */ 140 } 141 to { 142 opacity: 1; /* 完全に表示された状態に */ 143 transform: translateY(0); /* 元の位置に移動 */ 144 } 145} 146 147

javascript

1<script> 2// ふわっと下からフェイドイン 3// delayScrollAnime 4// ------------------------- 5// スクロールに応じて、要素の子要素を順番にふわっと表示(フェードイン)させる関数 6function delayScrollAnime() { 7 var time = 0.2; // アニメーションのディレイ間隔(秒) 8 var value = time; // 各要素に適用する現在のディレイ時間 9 10 $('.delayScroll').each(function () { 11 var parent = this; // 親要素(.delayScroll)のDOMを取得 12 var elemPos = $(this).offset().top; // 要素のページ上の位置(上からの距離) 13 var scroll = $(window).scrollTop(); // 現在のスクロール量 14 var windowHeight = $(window).height(); // ウィンドウの高さ 15 var childs = $(this).children(); // .delayScroll の子要素を取得 16 17 // 要素が画面内に入ったかどうかをチェックし、playクラスが付与されていない場合のみ実行 18 if (scroll >= elemPos - windowHeight && !$(parent).hasClass("play")) { 19 $(childs).each(function () { 20 // すでにfadeUpが付与されていない子要素に対してのみ処理 21 if (!$(this).hasClass("fadeUp")) { 22 $(parent).addClass("play"); // 処理中フラグとして"play"を付与 23 $(this).css("animation-delay", value + "s"); // 遅延時間を設定 24 $(this).addClass("fadeUp"); // アニメーションクラスを付与 25 value = value + time; // 次の子要素のディレイ時間を加算 26 27 // 最後の子要素まで処理が終わったらplayフラグを外す 28 var index = $(childs).index(this); 29 if ((childs.length - 1) == index) { 30 $(parent).removeClass("play"); 31 } 32 } 33 }); 34 } else { 35 // 画面外に出たとき、または条件を満たさないときはアニメーションをリセット 36 $(childs).removeClass("fadeUp"); 37 value = time; // ディレイ時間をリセット 38 } 39 }); 40} 41 42// ページが読み込まれた際に delayScrollAnime を実行 43// ------------------------- 44$(window).on('load', function () { 45 delayScrollAnime(); 46}); 47 48// スクロールまたはウィンドウサイズ変更時にも実行 49// ------------------------- 50$(window).on('scroll resize', function () { 51 delayScrollAnime(); 52}); 53</script> 54

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

AI活用等しながら修正したのですが

<変更前>
.slideimg_para:nth-child(1) {
position: relative;
animation-delay: 0s !important;
}

<変更後>
.slideimg_para:nth-child(1) {
position: relative;
opacity:1 !important;
animation-delay: 0s !important;
}

補足

特になし

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

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

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

Lhankor_Mhy

2026/08/03 07:32

ご提示のコードを試してみましたが、1枚目だけしか表示されないようでした。 ですので、ご質問の問題が再現しませんでした。実際のコードとご提示されたコードが少し違うのかもしれません。 個人的に気になったのは、 /* 最初の画像だけ高さの基準にする */ .slideimg_para:nth-child(1) { position: relative;
kimu05

2026/08/03 10:38

Lhankor_Mhy様 お世話になっております。 いつもありがとうございます!! 一度ご指摘いただいた部分修正してみます。
guest

回答2

0

ベストアンサー

以下が原因ではないでしょうか?

.slideimg_para { position: absolute; pointer-events: none; top: 0; # この指定が不足していたため、一枚目の下の位置と判断されコンテナ外に配置されていた left: 0; width: 100%; opacity: 0; animation: flip 4s steps(1) infinite !important; }

自分の環境でもコメントの方と同様に1枚目しか表示されませんでしたが、この修正で直りました。

投稿2026/08/03 10:35

yuyafujiwara

総合スコア99

hiroki-o

2026/08/03 11:09

それで正解です。(回答しようと思ったら先をこされた...) topのデフォルト値はautoなので、overflow: hidden;との組み合わせでそうなりますね。
guest

0

jsにこだわりが無ければCSSで8秒周期で処理してみては?

html

1<style> 2.slider-container-full{position:relation;} 3.slideimg_para{position:absolute;opacity: 0;} 4.slideimg_para{animation: fadeUp 8s ease infinite;} 5:nth-child(2 of .slideimg_para){animation-delay:2s;} 6:nth-child(3 of .slideimg_para){animation-delay:4s;} 7:nth-child(4 of .slideimg_para){animation-delay:6s;} 8@keyframes fadeUp { 9 0% {opacity: 0;transform:translateY(20px);} 10 10% {opacity: 1;;transform:translateY(0)} 11 24% {opacity: 1} 12 25% {opacity: 0;} 13} 14</style> 15 16<div class="conte2-child slider-container-full"> 17 <!-- 1枚目 --> 18 <div class="slideimg_para"> 19 <p><a href="#"><img src="https://placehold.jp/ff0000/00000/100x100.png?text=1" alt="1枚目"></a></p> 20 </div> 21 <!-- 2枚目 --> 22 <div class="slideimg_para"> 23 <p><a href="#"><img src="https://placehold.jp/00ff00/00000/100x100.png?text=2" alt="2枚目"></a></p> 24 </div> 25 <!-- 3枚目 --> 26 <div class="slideimg_para"> 27 <p><a href="#"><img src="https://placehold.jp/0000ff/00000/100x100.png?text=3" alt="3枚目"></a></p> 28 </div> 29 <!-- 4枚目 --> 30 <div class="slideimg_para"> 31 <p><a href="#"><img src="https://placehold.jp/ffff00/00000/100x100.png?text=4" alt="4枚目"></a></p> 32 </div> 33 </div> 34</div>

投稿2026/08/04 12:02

yambejp

総合スコア118589

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問