皆様おなじみのLightBox(画面はそのままで、画面中央に大きいイメージを表示するのに使用されるJavaScriptアプリケーション)タイプのフォトギャラリーである。
本サンプル表示用HTML
<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"> <input type="radio" id="r6" name="gal"> <input type="radio" id="r7" name="gal"> <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 id="frame"> <div id="photo1"><img src="wp-images/1.jpg"><span class="title">1/5 朝焼けの焼岳</span></div> <div id="photo2"><img src="wp-images/2.jpg"><span class="title">2/5 針ノ木岳、スバリ岳を背に岩小屋沢岳への登り</span></div> <div id="photo3"><img src="wp-images/3.jpg"><span class="title">3/5 剣岳を真近に望む</span></div> <div id="photo4"><img src="wp-images/4.jpg"><span class="title">4/5 鹿島槍ヶ岳、後立山連峰</span></div> <div id="photo5"><img src="wp-images/5.jpg"><span class="title">5/5 岩小屋沢、鳴沢岳を背に岳爺ヶ岳への登り</span></div> <div id="close_btn"><label for="r6">? 閉じる</label></div> </div> <label for="r7"><div id="darkscreen"></div></label>
HTMLの概要説明
・ラジオボタン r1 – r5 は表示写真用、r6 は閉じるボタン用、r7 はダークスクリーン用にそれぞれ割り付ける
・r6、r7は、写真のアニメーションには関連付けていないので、これをクリックすると元の状態に戻る。
(拡大写真が消え、サムネイル表示画面に戻る)
・写真は、#frameに全部重ねて配置しておき、サムネイルクリックで該当する写真をcss transition でフェイド・インさせる。
本写真表示用CSS
/*ラジオボタンを非表示に*/ #r1, #r2, #r3, #r4, #r5,#r6,#r7 { display: none; } /*全サムネイルのコンテナー*/ #thumbs { position: relative; width: 630px; left: 20px; margin:0 auto; } /*サムネイルのマウスオーバーでポインターを手のひら*/ #thumbs label img { cursor: pointer; } /*表示写真の初期配置(全部透明に)とtransition設定*/ #photo1, #photo2, #photo3, #photo4, #photo5 { position: absolute; top:0; margin:5px 5px 0 5px; opacity: 0; -webkit-transition: opacity 1s ease; -moz-transition: opacity 1s ease; -o-transition: opacity 1s ease; transition: opacity 1s ease; } /* サムネイルがクリックされたら#frame を表示 */ #r1:checked ~ #frame,#r2:checked ~ #frame,#r3:checked ~ #frame,#r4:checked ~ #frame,#r5:checked ~ #frame { opacity:1; z-index:95; } /*チェックされたサムネイルに相当する写真だけを表示*/ #r1:checked ~ #frame #photo1, #r2:checked ~ #frame #photo2, #r3:checked ~ #frame #photo3, #r4:checked ~ #frame #photo4, #r5:checked ~ #frame #photo5 { opacity: 1; z-index:100; } /* サムネイルがクリックされたら#darkscreen を表示 */ #r1:checked ~ label #darkscreen,#r2:checked ~ label #darkscreen,#r3:checked ~ label #darkscreen,#r4:checked ~ label #darkscreen,#r5:checked ~ label #darkscreen { opacity:0.6; z-index:90; } /* #frame */ #frame { position:fixed !important; position:absolute; background:#fff; width:610px; height:370px; left:50%; top:50%; margin-left:-305px; margin-top:-170px; opacity:0; z-index:-11; } /* 写真の下に表示するタイトル */ .title { position:absolute; left:10px; top:345px; font-size:12px; } /* 右下に表示する閉じるボタン */ #close_btn label { position:absolute; left:540px; top:350px; font-size:14px; font-weight:bold; cursor:pointer; } /*写真表示時の画面遮蔽スクリーン*/ #darkscreen { position:fixed !important; position:absolute; width:100%; height:100%; top:0; left:0; background:#000; opacity:0; z-index:-5; }
CSSのポイント説明
・サムネイルがクリックされたら、#frame を画面中央に表示させ、その中に該当する番号の写真を表示させる。
・拡大写真表示時の重ね順は、下から、#darkscreen -> #frame -> photo とする。
・#frameの大きさや、関連する位置データなどは、拡大写真のサイズに合わせて設定しているので、表示写真の大きさに応じて替える必要がある。