下記のURLを参考にCSSだけでスライダーの作成を試みました。
▼フェイドイン型フォトギャラリー(レスポンシブ)
http://css.programming.jp/?p=901
上記のタグに対して、サムネイルを小さくして、フォトギャラリーの上に置きました。
【得たい結果】
①CSSだけでスライダーを作る
②サムネイルをクリックすると、画像がフェイドインで入れ替わる
③サムネイルとクリックすると、目的のURLに飛ぶ。
(ここで書くタグにはすべて「#」が入ってますが、実際のURLを記述したとき、そのような問題が発生しました。)
【発生した問題】
上記③をもくろんで5枚の画像に5カ所の<a href>を記載するも、どの画像を押しても、一番最後のURLに飛んでしまう。
[HTML]
<!doctype html> <html> <head> <meta charset="utf-8"> <title>CSSだけでスライダー</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div id="stage"> <input type="radio" id="r1" name="gal"> <input type="radio" id="r2" name="gal"> <input type="radio" id="r3" name="gal"> <input type="radio" id="r4" name="gal"> <input type="radio" id="r5" name="gal"> <img style="width:100%" src="wp-images/1.jpg"> <div id="photo1" class="photo"><a href="#"><img src="wp-images/1.jpg" alt=""></a></div> <div id="photo2" class="photo"><a href="#"><img src="wp-images/2.jpg" alt=""></a></div> <div id="photo3" class="photo"><a href="#"><img src="wp-images/3.jpg" alt=""></a></div> <div id="photo4" class="photo"><a href="#"><img src="wp-images/4.jpg" alt=""></a></div> <div id="photo5" class="photo"><a href="#"><img src="wp-images/5.jpg" alt=""></a></div> <div style="padding:0 0;"></div> <div id="thumbs"> <label for="r1"><img src="wp-images/s1.jpg"></label> <label for="r2"><img src="wp-images/s2.jpg"></label> <label for="r3"><img src="wp-images/s3.jpg"></label> <label for="r4"><img src="wp-images/s4.jpg"></label> <label for="r5"><img src="wp-images/s5.jpg"></label> </div> </div> </body> </html>
[CSS]
/*ギャラリー全体のコンテナー*/ #stage { position: relative; max-width: 709px; margin: 0 auto; } /*全サムネイルのコンテナー*/ #thumbs { margin-right:2%; position: absolute; top:220px; left:400px; } /*サムネイルの幅、ポインターを手のひら*/ #thumbs label img { width:16%;/*18.5%*/ cursor: pointer; border: 3px solid #fff ; border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px; } #thumbs label img:hover { border: 3px solid #3d42e3; -webkit-transition: border 0.2s ease; transition: border 0.2s ease; } /*ラジオボタンを非表示に*/ #r1, #r2, #r3, #r4, #r5 { display: none; } /*表示写真の初期配置(全部透明に)とtransition設定*/ .photo { position: absolute; left: 0; top: 0; } .photo img { width:100%; opacity: 0; -webkit-transition: opacity 1s ease; transition: opacity 1s ease; } /*チェックされたサムネイルに相当する写真だけを表示*/ #r1:checked ~ #photo1 img, #r2:checked ~ #photo2 img, #r3:checked ~ #photo3 img, #r4:checked ~ #photo4 img, #r5:checked ~ #photo5 img { opacity: 1; }
※なお画像の大きさは「709px×285px」サムネイルにしようしたものは「120px×120px」を準備しました。
参考にしたサイトは、すべて最初に画像に
opacity: 0;をかけて透明化し、
該当の画像が押された時だけ、
opacity: 1;にして、透明化を解除して画像を表示しているようです。
5枚全部重なってる状態だから、一番最後の画像に貼られたリンク先に飛んでしまうと予測しているのですが、
対処方法がわかりません。
同じ効果が得られて、画像にリンクされている各々の先に飛べるなら、
opacity使用じゃないアイデアでもかまいません。
お手数ですが、みなさまのご教授をお待ちしております。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/14 09:01