如何为精美的盒子图像插入alt标签[fancyBox3]?

时间:2017-11-26 07:11:30

标签: javascript jquery html jquery-plugins fancybox

我们正在使用http://fancyapps.com/fancybox/3/。而且这个fancybox工作正常,除了默认情况下没有显示img alt标签。即使在文档中也没有正确描述http://fancyapps.com/fancybox/3/docs/

这是我们的html结构,在这里我们提到了a和img中的alt标签。但似乎没有任何效果。

<a data-fancybox="gallery" class="img-1" data-caption="First img" href="img.jpg" data-alt="first img"  data-options='{"alt" : "First img"}'><img src="img.jpg"  alt="First img" class="gallery-fac"></a>

<a data-fancybox="gallery" class="img-2" data-caption="second img" href="img-2.jpg" data-alt="second img"  data-options='{"alt" : "Second img"}'><img src="img-2.jpg"  alt="second img" class="gallery-fac"></a>

$("[data-fancybox]").fancybox({
            thumbs : {
                autoStart : true
            },

 });

我们找到了一个解决方案

 beforeShow : function() {
        var alt = this.element.find('img').attr('alt');

        this.inner.find('img').attr('alt', alt);

       }

但是这个解决方案不起作用,所以我们正在寻找解决方案并获得了一些但是已经过时了。

因此,如果有人知道该怎么做,请帮助解决。

3 个答案:

答案 0 :(得分:2)

只需使用afterLoad回调来获取点击元素(current.opts.$orig)。然后获取alt属性的值(在此示例中,我从缩略图获取)并为图像设置:

$('[data-fancybox="images"]').fancybox({ 
  afterLoad : function(instance, current) {
    current.$image.attr('alt', current.opts.$orig.find('img').attr('alt') );
  }
});

演示 - https://codepen.io/anon/pen/QOBgqz?editors=1010

顺便说一句,这对你来说真的很重要吗?如果图像未加载,则会显示错误消息,并且用户无论如何都不会看到此备用文本。

答案 1 :(得分:0)

期待着做同样的事情。适用于单个图像,但不适用于多个图像的库。有关应该如何处理的任何想法?

答案 2 :(得分:0)

添加 afterLoad 事件对我有用,但仅此而已:

ax.text(xmin, 1.15, nameid, rotation=45, ha='left', fontsize=tinyfont,
        color='k', va='center', transform=ax.get_xaxis_transform())