hexojs / hexo

A fast, simple & powerful blog framework, powered by Node.js.
https://hexo.io
MIT License
39.54k stars 4.86k forks source link

怎么在某些图片上禁用 fancybox? #605

Closed twiceyuan closed 10 years ago

twiceyuan commented 10 years ago

一些图片本身链接了一个地址,在启用 fancybox 后点击图片原来的地址就失效了

wzpan commented 10 years ago

这个严格意义上和 Hexo 无关,而是和你的主题加载 fancybox 的脚本的实现有关。我的方法是添加一个 nofancybox 逃逸样式。在相关 js 脚本(通常位于 gallery.js 中)中将 fancybox 的加载修改为:

// Caption
  $('.content').each(function(i) {
    $(this).find('img').each(function() {
      if (!$(this).hasClass('nofancybox')) {
        var alt = this.alt;
        if (alt) {
          $(this).wrap('<a href="' + this.src + '" title="' + alt + '" class="fancybox" rel="gallery' + i + '" />');
        } else {
          $(this).wrap('<a href="' + this.src + '" class="fancybox" rel="gallery' + i + '" />');
        }
      }
    });
  });

然后,对于需要禁用 fancybox 的图片,只需要指定它的 class 为 nofancybox 即可。

例如,hexo-theme-freemind 的首页的 feature image 就禁用了 fancybox 。点击图片可以进入该文章的页面。

tommy351 commented 10 years ago

@wzpan 樓上正解,這部份由 theme 實作,與 Hexo 主程式無關

twiceyuan commented 10 years ago

多谢指教,可以了

ixiusama commented 8 years ago

您好,我想知道如何才能指定一个文件的 classnofancybox ?我想使用 hexo-tag-emojis 来进行添加 Emoji 表情,但是 nofancybox 总是不工作。

wzpan commented 8 years ago

Image 的 Tag Plugin 应该支持指定样式呀。