如何在fancybox-3自定义模板中添加div?
How to to add div to the fancybox-3 custom template?
我正在努力实现与上图类似的结果:
我使用 fancybox-3 插件创建了自定义模板:
$('[data-fancybox="gallery"]').fancybox({
fullScreen : false,
slideShow : false,
autoSize : false,
loop:true,
touch : {
vertical : false,
horizontal : false
},
thumbs : {
autoStart : true
},
onThumbsShow : function(instance, current) {
instance.Thumbs.$grid.appendTo( instance.$refs.inner );
},
clickOutside : 'close',
baseTpl :
'<div class="fancybox-container qv-container" role="dialog" tabindex="-1">' +
'<div class="fancybox-bg"></div>' +
'<div class="fancybox-inner">' +
'<button data-fancybox-prev title="{{PREV}}" class="fancybox-arrow fancybox-arrow--left" />' +
'<button data-fancybox-next title="{{NEXT}}" class="fancybox-arrow fancybox-arrow--right" />' +
'<button data-fancybox-close class="qv-close"></button>' +
'<div data-fancybox-close class="qv-close"></div>' +
'<div></div>' +
'</div>' +
'</div>',
});
部分我已经设法实现了类似于下图中的结果:
毕竟,我缺少图片下方带有文本的 div。我尝试使用 codepen example 作为参考,但没有任何不错的结果:/
有人知道我漏掉了什么吗?非常感谢所有可能的帮助。
期待,
您可以仅使用 CSS 存档大致相同的设计和布局,请参阅此演示 - https://codepen.io/anon/pen/qPaNwo
.fancybox-bg {
background: #fff;
}
.fancybox-stage {
top: 44px;
left: 200px;
right: 320px;
bottom: 100px;
}
.fancybox-inner {
right: 0 !important;
}
.fancybox-thumbs {
top: 44px;
right: 200px;
bottom: 44px;
width: 120px;
background: transparent;
}
.fancybox-thumbs>ul>li {
max-width: 100%;
}
.fancybox-caption-wrap {
padding: 0 200px;
background: transparent;
}
.fancybox-caption {
padding: 0;
border: 0;
color: #000;
}
似乎可以通过 data-attributes
;
向 fancybox 添加额外的内容
首先,在html中用data-
属性包装内容:
<a href="images/img.jpg" class="gallery-img" data-content="lorem ipsum bla bla bla" data-fancybox="images" style="background-image: url('images/img.jpg')"></a>
其次,使用 jQuery 使用 afterLoad: function() {}
在 fancybox 选项中查找文本并将其添加到变量中。变量可以用 .html
插入 fancybox 模板
内的 <div>...</div>
baseTpl :
'<div class="fancybox-container qv-container" role="dialog" tabindex="-1">' +
....
'<div class="fancybox-div"></div>'+
....
'</div>',
afterLoad: function() {
var content = $(this.opts.$orig[0]).data('content');
$(".fancybox-div").html(content);
}
我正在努力实现与上图类似的结果:
我使用 fancybox-3 插件创建了自定义模板:
$('[data-fancybox="gallery"]').fancybox({
fullScreen : false,
slideShow : false,
autoSize : false,
loop:true,
touch : {
vertical : false,
horizontal : false
},
thumbs : {
autoStart : true
},
onThumbsShow : function(instance, current) {
instance.Thumbs.$grid.appendTo( instance.$refs.inner );
},
clickOutside : 'close',
baseTpl :
'<div class="fancybox-container qv-container" role="dialog" tabindex="-1">' +
'<div class="fancybox-bg"></div>' +
'<div class="fancybox-inner">' +
'<button data-fancybox-prev title="{{PREV}}" class="fancybox-arrow fancybox-arrow--left" />' +
'<button data-fancybox-next title="{{NEXT}}" class="fancybox-arrow fancybox-arrow--right" />' +
'<button data-fancybox-close class="qv-close"></button>' +
'<div data-fancybox-close class="qv-close"></div>' +
'<div></div>' +
'</div>' +
'</div>',
});
部分我已经设法实现了类似于下图中的结果:
毕竟,我缺少图片下方带有文本的 div。我尝试使用 codepen example 作为参考,但没有任何不错的结果:/
有人知道我漏掉了什么吗?非常感谢所有可能的帮助。
期待,
您可以仅使用 CSS 存档大致相同的设计和布局,请参阅此演示 - https://codepen.io/anon/pen/qPaNwo
.fancybox-bg {
background: #fff;
}
.fancybox-stage {
top: 44px;
left: 200px;
right: 320px;
bottom: 100px;
}
.fancybox-inner {
right: 0 !important;
}
.fancybox-thumbs {
top: 44px;
right: 200px;
bottom: 44px;
width: 120px;
background: transparent;
}
.fancybox-thumbs>ul>li {
max-width: 100%;
}
.fancybox-caption-wrap {
padding: 0 200px;
background: transparent;
}
.fancybox-caption {
padding: 0;
border: 0;
color: #000;
}
似乎可以通过 data-attributes
;
首先,在html中用data-
属性包装内容:
<a href="images/img.jpg" class="gallery-img" data-content="lorem ipsum bla bla bla" data-fancybox="images" style="background-image: url('images/img.jpg')"></a>
其次,使用 jQuery 使用 afterLoad: function() {}
在 fancybox 选项中查找文本并将其添加到变量中。变量可以用 .html
插入 fancybox 模板
<div>...</div>
baseTpl :
'<div class="fancybox-container qv-container" role="dialog" tabindex="-1">' +
....
'<div class="fancybox-div"></div>'+
....
'</div>',
afterLoad: function() {
var content = $(this.opts.$orig[0]).data('content');
$(".fancybox-div").html(content);
}