jquery - 如何将 Color box jQuery 插件用于直接 <img> 元素?

标签 jquery colorbox image-gallery

我创建了一个媒体库,我想在其中显示带有 colorbox 的图像。
我尝试在其上使用 colorbox 的 HTML 结构如下所示:

<div class="image-gallary">
  <img src="/patch_to_image/image_1.png">
  <img src="/patch_to_image/image_2.png">
  <img src="/patch_to_image/image_3.png">
  <img src="/patch_to_image/image_4.png">
</div>

jQuery 初始化是:

  $('div.image-gallary>img').colorbox({
    rel:'images',
    transition:"fade",
    opacity:0.5 ,
    rel:'group1'
  });

当我单击图像时,Clorbox 会加载并显示弹出窗口,但图像不会加载(不显示,仍在加载图像)。

screenshot

最佳答案

这是因为 Colorbox 依赖于 href anchor 元素上的属性,以便正确加载页面。简单的解决方案是简单地包装每个 <img src="/path/to/image">具有相应 <a href="/path/to/image"> 的元素,就可以开始了。

这背后的原因很简单:从用户界面的角度来看,图像是为了被点击,所以直观上它们应该被包装在一个可交互的元素中( <a> 将是你的目标 -去元素)。想象一下,如果 JS 在页面上不起作用:这将意味着图像仍然可点击;)这是很好的 UI!

$(function() {
  $('div.image-gallary>a').colorbox({
    rel: 'images',
    transition: "fade",
    opacity: 0.5,
    rel: 'group1'
  });
});
img {
  width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.colorbox/1.6.4/jquery.colorbox-min.js"></script>

<div class="image-gallary">
  <a href="http://i.imgur.com/YzuqChn.gif"><img src="http://i.imgur.com/YzuqChn.gif"></a>
  <a href="http://i.imgur.com/Am3foce.gif"><img src="http://i.imgur.com/Am3foce.gif"></a>
</div>

如果您不想修改标记,还有一个替代解决方案:您可以简单地使用 href插件的选项来指定 URL。请注意,在这种情况下,您将需要迭代所有图像(而不是将集合传递给 .colorbox() 方法,因为您将需要分别指向每个图像 src 属性的指针:

$(function() {
  $('div.image-gallary>img').each(function() {
    // Iterate through individual images...
    // because we need access to their 'src' attribute
    $(this).colorbox({
      rel: 'images',
      transition: "fade",
      opacity: 0.5,
      rel: 'group1',
      href: $(this).attr('src')
    });
  });
});
img {
  width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.colorbox/1.6.4/jquery.colorbox-min.js"></script>

<div class="image-gallary">
  <img src="http://i.imgur.com/YzuqChn.gif" />
  <img src="http://i.imgur.com/Am3foce.gif" />
</div>

关于jquery - 如何将 Color box jQuery 插件用于直接 <img> 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45613433/

相关文章:

jquery - 提交后关闭 ColorBox iFrame

javascript - JavaScript 图片库中的下一个和上一个链接不起作用

javascript - 灯箱将图像移动到右下角

javascript - 按字母数字顺序对一组 li 标签进行排序

javascript - 为什么通过 $.ajax() 方法调用时 jQuery 颜色框弹出窗口没有显示?

javascript - 带 iframe 的 colorbox 关闭按钮

html - 渲染图像时,Chrome 中的 CSS 过渡停止或不稳定

javascript - :after selector not working if jquery inserts . 在链接中处于事件状态

javascript - 加载事件 jQuery,我可以附加它吗

javascript - 每次迭代创建唯一的 id,然后指定单击时的行为