为BlueLake主题增长图片放大效果

fancyBox 是一个流行的媒体展现加强组件,能够方便为网站添加图片放大、相册浏览、视频弹出层播放等效果。优势有使用简单,支持高度自定义,兼顾触屏、响应式移动端特性,总之使用体验至关好。

如今,咱们就将 fancyBox 集成到 hexo BlueLake 中。javascript

1、下载 fancybox

git clone https://github.com/fancyapps/fancybox.git

文件下载下来以后,以下图所示:css

  • 将 dist 目录下的两个 js 文件拷贝到 BlueLake 主题的 source/js 目录下。
  • 将 dist 目录下的两个 css 文件拷贝到 BlueLake 主题的 source/css 目录下,并将后缀名修改成 .styl 。

fancybox 插件依赖 jquery ,因此也须要准备 jquery 相关 js 文件。将 jquery.js 也下载到 BlueLake 主题的 source/js 目录下。java

2、增长图片放大功能

一、设置 fancybox 使用开关

在 BlueLake 主题的 _config.yml 文件中,添加:jquery

# 图片放大功能
fancybox:
  enabled: true

二、引入 js 文件

基于 fancybox 插件,咱们还须要写一些自定义 js 代码,给文章中的图片加点样式:git

$(document).ready(function() {
    wrapImageWithFancyBox();
});
/**
 * Wrap images with fancybox support.
 */
function wrapImageWithFancyBox() {
    $('img').not('.sidebar-image img').not('#author-avatar img').not(".mdl-menuimg").not(".something-else-logo img").not('.avatar').not('.share-body img').each(function() {
        var $image = $(this);
        var alt = $image.attr('alt');
        var src = $image.attr('src');
        $imageWrapLink = $image.wrap('<a data-fancybox=images data-caption="'+ alt +'" href="' + src + '"></a>');
    });

    // fix微信分享二维码须要开新页面查看问题
    $('.qrcode').attr('data-fancybox', 'images');

    $().fancybox({
        selector: '[data-fancybox="images"]',
        thumbs: false,
        hash: true,
        loop: false,
        fullScreen: false,
        slideShow: false,
        protect: true,
    });
}

新建 wrapImage.js 文件,将上述 js 代码添加到 wrapImage.js 中,也放到 BlueLake 主题的 source/js 目录下。github

在 BlueLake 主题下的 layout/post.jade 文件中,添加引入 js 文件的代码:shell

if theme.fancybox.enabled
      script(type='text/javascript', src=url_for(theme.js) + '/jquery.js' + '?v=' + theme.version, async)
      script(type='text/javascript', src=url_for(theme.js) + '/jquery.fancybox.js' + '?v=' + theme.version, async)
      script(type='text/javascript', src=url_for(theme.js) + '/wrapImage.js' + '?v=' + theme.version, async)

以下图所示:segmentfault

三、引入 css 文件

在引入 css 文件以前,须要将部分代码注释掉,不然在执行 hexo -g 时失败:浏览器

/* 将第483行片断进行注释 */
@supports (padding: max(0px)) {
    .fancybox-caption {
        padding: 75px max(44px, env(safe-area-inset-right)) max(25px, env(safe-area-inset-bottom)) max(44px, env(safe-area-inset-left));
    }
}

微信

/* 将第670行片断进行注释 */
@supports (padding: max(0px)) {
    .fancybox-caption {
        padding-left: max(12px, env(safe-area-inset-left));
        padding-right: max(12px, env(safe-area-inset-right));
    }
}

而后在 BlueLake 主题下的 layout/base.jade 文件中,添加引入 styl 文件的代码:

if theme.fancybox.enabled
      link(rel='stylesheet', type='text/css', href=url_for(theme.css) + '/jquery.fancybox.css')

以下图所示:

3、hexo 部署

切换到博客根目录下,执行如下命令来预览主题效果:

hexo clean
hexo s

这时会在博客根目录下生成 public 目录,新建立的 js 和 css 文件会被添加到这里。浏览器访问 localhost:4000 查看图片放大效果。

若是图片放大效果没有问题的话,执行 hexo -d 命令将主题更新到 github 上。


点关注,不迷路

好了各位,以上就是这篇文章的所有内容了,能看到这里的人呀,都是人才

白嫖很差,创做不易。 各位的支持和承认,就是我创做的最大动力,咱们下篇文章见!

若是本篇博客有任何错误,请批评指教,不胜感激 !

点关注,不迷路

好了各位,以上就是这篇文章的所有内容了,能看到这里的人呀,都是 人才

白嫖很差,创做不易。 各位的支持和承认,就是我创做的最大动力,咱们下篇文章见!

若是本篇博客有任何错误,请批评指教,不胜感激 !

相关文章
相关标签/搜索