Result
こういうやつです。割と今更感な内容ですが書いてなかった気がするので
例によってinput
と:checked
を使います
css
.gallery {/*親*/ display: flex; margin: 10px auto; max-width: 600px; position: relative; padding-top: 66.6666666667%; } .gallery__img {/*表示される大きな画像。エフェクト付き*/ position: absolute; top: 0; left: 0; opacity: 0; transition: opacity 0.3s ease-in-out; } .gallery__thumb {/*サムネイル*/ padding-top: 6px; margin: 6px; display: block; } .gallery__selector { position: absolute; opacity: 0; visibility: hidden; } .gallery__selector:checked + .gallery__img {/*大きな画像は全て透明にしておき、チェックが入ったら表示させる*/ opacity: 1; } .gallery__selector:checked ~ .gallery__thumb > img {/*サムネは選択されたら枠が表示されるように*/ box-shadow: 0 0 0 3px #0be2f6; }
仕組みは今までと変わりません。画像は非表示設定にしておき、チェックが入ったら表示します
html
<section class="gallery"> <div class="gallery__item"> <input type="radio" id="img-1" checked name="gallery" class="gallery__selector"/> <img class="gallery__img" src="large.jpg" alt=""/> <label for="img-1" class="gallery__thumb"><img src="small.jpg" alt=""/></label> </div> <div class="gallery__item"> ・ ・ ・ </div> </section>