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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

CSS

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

Q&A

1回答

740閲覧

CSSだけでフェードイン・アウトのスライドショー(自動再生・サムネイル付)を作りたい

time_waits

総合スコア15

スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

CSS

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

0グッド

0クリップ

投稿2018/09/19 00:37

編集2018/09/19 02:17

前提・実現したいこと

CSSだけでフェードイン・アウトするスライドショー(サムネイル付)
を作成したいのですが、画像3枚で自動再生がうまくいきません。

発生している問題・エラーメッセージ

真ん中、2枚目が真っ白で、なおかつ
一瞬しか表示されません。

該当のソースコード

<div class="cp_cssslider"> <input type="radio" name="cp_switch" checked/> <label for="photo1"><img src="img/photo1.jpg" /></label> <img src="img/photo1.jpg" > <input type="radio" name="cp_switch"/> <label for="photo2"><img src="img/photo2.jpg" /></label> <img src="img/photo2.jpg"/> <input type="radio" name="cp_switch"/> <label for="photo3"><img src="img/photo3.jpg" /></label> <img src="img/photo3.jpg"/> </div>
*, *:before, *:after { -webkit-box-sizing: border-box; box-sizing: border-box; } .cp_cssslider { width: 1420px; padding-top: 550px; position: relative; margin: 2em auto; text-align: center; } .cp_cssslider > img { animation: show 12s infinite; max-width: 100%; height: auto; opacity: 0; position: absolute; left: 0; top: 0; } .cp_cssslider input[name='cp_switch'] { display: none; } /* サムネイル */ .cp_cssslider label { margin: 15px 5px 15px 5px; border: 2px solid #ffffff; display: inline-block; cursor: pointer; transition: all 0.5s ease; opacity: 0.6; border-radius: 3px; float:right; } .cp_cssslider label:hover { opacity: 0.9; } .cp_cssslider label img { display: block; width: 140px; border-radius: 2px; } .cp_cssslider input[name='cp_switch']:checked + label { border: 2px solid #FF7043; opacity: 1; } .cp_cssslider input[name='cp_switch'] ~ img { opacity: 0; } .cp_cssslider input[name='cp_switch']:checked + label + img { opacity: 1; } @keyframes show { 0% {opacity: 0} 17% {opacity: 1} 33% {opacity: 1} 50% {opacity: 0} } .slide-show img:nth-of-type(1) { position: relative; } .slide-show img:nth-of-type(2) { animation-delay: 0s; } .slide-show img:nth-of-type(3) { animation-delay: 4s; } .slide-show img:nth-of-type(4) { animation-delay: 8s; }

試したこと

色々検索して、上手く動きそうなものを組み合わせたつもり
だったのですが、どうしても上手くいきません…。

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

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

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

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

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

m.ts10806

2018/09/19 01:04

プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
guest

回答1

0

各画像に指定していると思われる.slide-show img:nth-of-type()ですが、.slide-showが存在しません。
また、本来指定したい.cp_cssslider対しての子要素imgは3つ(あとはlabelの子要素)です。

追記

子要素についてですが、labelの子要素imgは全て.cp_csssliderの子要素labelの子要素imgとして解釈されるので、.cp_cssslider img:nth-of-type()とした場合は.cp_cssslider img:nth-of-type(1)として判断されます。

.cp_cssslider img:nth-of-type()に変更し、2,3,4と指定しているものを1,2,3としてあげればとりあえずは動きます(レイアウトは崩れると思うのでご自分で修正してみてください。)

あと、コードブロックにしたのはよいですが、コードブロックにする前の部分が残っていますので、削除してくださいね。
同じコードがふたつ並んでいるのに気づかないと、読む時間がもったいない&めんどくさいです。

編集ありがとうございます。

投稿2018/09/19 01:58

編集2018/09/19 02:51
yukihisa

総合スコア672

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問