Images – fancybox3 · Documentation
目次
fancyboxのギャラリー画像にキャプションを設定する方法
公式ドキュメントの冒頭に記載されている分かりやすい方法。
data-caption=””の中にはタグを入れることも可能。画像のタイトルの他、簡単な説明文なども載せるつもりならきちんとタグも含めて記述する方が良い。
ただし、data-caption=””の中身が長くなる場合はコードが読みにくくなってしまうという問題点がある。
jQueryを使う
HTML内にcaptionを示す記述を作って、そこからjQueryで取得する方法もある。
data-captionを使うよりもjsの記述は増えてしまうが、
- jsの記述量の差は誤差レベルなのでデメリットという程ではない
- 画像そのものとキャプションを分けて記述するので、コードの読みやすさ・理解のしやすさが増す
と言った理由により、こっちの方が良いと思う。
サンプル(コードは後述)内ではfigcaptionを使っているが、divなどでも問題ないはず。
ソースコード
HTML
jQueryを使う
CSS
h2 {
padding: 10px 0;
border-top: 1px dotted #000;
border-bottom: 1px dotted #000;
margin: 100px 0 50px;
}
.gallery {
width: 60%;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-around;
}
img {
width: 200px;
height: 200px;
object-fit: cover;
}
.hidden {
/* figcaptionの内容はfancyboxのギャラリー用なので非表示にしておく */
display: none;
}
jQuery
$(function(){
/*
data-captionを使う
*/
$('[data-fancybox="gallery-01"]').fancybox();
/*
jQueryを使う
*/
$( '[data-fancybox="gallery-02"]' ).fancybox({
caption: function(instance, current ) {
return $(this).next('figcaption').html();
}
});
});