我们正在使用jQuery 1.7.1和Fancybox 1.3.4。我是Fancybox的新手。我从来没有在昨天之前使用它,但它在我正在使用的网站上被广泛使用。设立Fancybox的人被终止,因为他......无关紧要。 :)
我正在创建一个产品比较页面。一页最多可显示四种产品。每个产品最多可包含五个特定于该产品的图像。
目前,当我点击任何图像时,Fancybox会弹出并在页面上创建一个包含所有图像的图库。因此,如果我有一个包含五个图像的产品,则有一个五个图像库。如果我有四个产品有五个图像,那么有一个图库有二十个图像。这对我来说效果不好。
我想要的是每个产品都有自己的画廊。如果他们点击产品A,他们将只看到与产品A相关联的图像。如果他们点击产品B ...就可以得到它。
如何让Fancybox在一个页面上创建单独的画廊?
修改
目前,我的rel属性设置为'autoGallery'。下面的答案之一表明我将其更改为类似的东西,这将产生我正在寻找的东西:
<img rel='Gallery1'>
<img rel='Gallery1'>
<img rel='Gallery2'>
<img rel='Gallery2'>
<img rel='Gallery3'>
<img rel='Gallery3'>
如果我将rel属性更改为除“autoGallery”之外的任何内容,单击图像只会将图像打开到一个新窗口。
答案 0 :(得分:30)
只需为每个图库分配不同的rel
属性
<a class="fancybox" rel="gallery01" href="product01/image01.jpg">one</a>
<a class="fancybox" rel="gallery01" href="product01/image02.jpg">one</a>
<a class="fancybox" rel="gallery01" href="product01/image03.jpg">one</a>
<a class="fancybox" rel="gallery01" href="product01/image04.jpg">one</a>
<a class="fancybox" rel="gallery02" href="product02/image01.jpg">two</a>
<a class="fancybox" rel="gallery02" href="product02/image02.jpg">two</a>
<a class="fancybox" rel="gallery02" href="product02/image03.jpg">two</a>
<a class="fancybox" rel="gallery03" href="product03/image01.jpg">three</a>
<a class="fancybox" rel="gallery03" href="product03/image02.jpg">three</a>
<a class="fancybox" rel="gallery03" href="product03/image03.jpg">three</a>
......他们都可以使用相同的脚本:
$(".fancybox").fancybox();
答案 1 :(得分:3)
这里是另一个示例(基于fancyBox3)。为data-fancybox
属性添加相同的值。 (例如,data-fancybox="group"
)
@import url('https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css');
body {
margin: 0;
padding: 10vh 10vw;
color: #444;
}
h1 {
font-weight: 700px;
}
h2 {
font-weight: 600;
}
a,
a:hover {
color: #ff5268;
}
.imglist {
font-size: 0;
}
.imglist a {
display: inline-block;
margin: 10px 10px 0 0;
}
.imglist a:last-of-type {
margin-right: 0;
}
.imglist a img {
vertical-align: top;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.2/jquery.fancybox.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.2/jquery.fancybox.min.js"></script>
<h2>fancybox v3.5.2 - Grouping galleries</h2>
<p>
Groups are created by adding the same <code>data-fancybox</code> attribute value
</p>
<hr class="my-5" />
<h4>Group 1 Gallery</h4>
<p class="imglist" style="max-width: 1000px;">
<a href="https://source.unsplash.com/juHayWuaaoQ/1500x1000" data-fancybox="group1" data-caption="Backpackers following a dirt trail">
<img src="https://source.unsplash.com/juHayWuaaoQ/240x160" />
</a>
<a href="https://source.unsplash.com/eWFdaPRFjwE/1500x1000" data-fancybox="group1" data-caption="Mallorca, Llubí, Spain">
<img src="https://source.unsplash.com/eWFdaPRFjwE/240x160" />
</a>
<a href="https://source.unsplash.com/c1JxO-uAZd0/1500x1000" data-fancybox="group1" data-caption="Danish summer">
<img src="https://source.unsplash.com/c1JxO-uAZd0/240x160" />
</a>
<a href="https://source.unsplash.com/eXHeq48Z-Q4/1500x1000" data-fancybox="group1" data-caption="Sunrise above a sandy beach">
<img src="https://source.unsplash.com/eXHeq48Z-Q4/240x160" />
</a>
</p>
<h4>Group 2 Gallery</h4>
<p class="imglist" style="max-width: 1000px;">
<a href="https://source.unsplash.com/RFgO9B_OR4g/1500x1000" data-fancybox="group2" data-caption="Woman on a slope by the shore">
<img src="https://source.unsplash.com/RFgO9B_OR4g/240x160" />
</a>
<a href="https://source.unsplash.com/7bwQXzbF6KE/1500x1000" data-fancybox="group2" data-caption="Mountain hiking sunset">
<img src="https://source.unsplash.com/7bwQXzbF6KE/240x160" />
</a>
<a href="https://source.unsplash.com/NhU0nUR7920/1500x1000" data-fancybox="group2" data-caption="Sunset Picnic">
<img src="https://source.unsplash.com/NhU0nUR7920/240x160" />
</a>
<a href="https://source.unsplash.com/B2LYYV9-y0s/1500x1000" data-fancybox="group2" data-caption="On them Indiana Nights">
<img src="https://source.unsplash.com/B2LYYV9-y0s/240x160" />
</a>
</p>
答案 2 :(得分:1)
我遇到与Fancybox 3相同的问题 - 使用rel="gallery"
和data-fancybox-group="gallery"
无法正常工作。
通过添加.attr('data-fancybox', 'gallery');
答案 3 :(得分:0)
Fancybox 3使用data-fancybox
属性对画廊进行分组。显然rel
不再被识别。因此,只需对要归入图库的所有元素使用相同的标识符。
答案 4 :(得分:0)
我尝试使用rel,但它对我不起作用
但是我获得了变量的rel值,并在启用滑块时对其进行了检查。
<a href="" rel="gallery01" data-fancybox="slide"></a>
$('[data-fancybox="slide"]').each(function(){
var relValue = $(this).attr('rel');
$('[data-fancybox="slide"][rel="'+relValue+'"]').fancybox({
//options
});
});