前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jekyll x Markdown 图片美化 - Lightbox.js

Jekyll x Markdown 图片美化 - Lightbox.js

作者头像
szhshp
发布2022-08-21 16:11:25
2.1K0
发布2022-08-21 16:11:25
举报

Requirements

  • Bootstrap
  • Lightbox for Bootstrap 3

Procedure

本来一个很普通的 Jekyll 主题被我改得完全没了原来的样子

昨天写了一篇游记,Karmdown 里面的图片不会自适应,导致有些图片大有些图片小,当然我才懒得给每个图片加 width 和 height!

所以随手搜了一下 Modal Window 来显示图片,于是就找到了 Lightbox 这个 Plugin

Usage

官方1给的 API 比较简单,可以有几个用法

Via data attributes
代码语言:javascript
复制
<a href="someurl" data-toggle="lightbox">Launch modal</a>
Via Javascript
代码语言:javascript
复制
<a href="someurl" id="mylink">Open lightbox</a>
$('#mylink').ekkoLightbox(options);

实际使用

官方的推荐是在 image 外层放一个<a>并通过<a>的点击调用 Modal Window,而 Markdown 引用图片时会生成如下的格式2

代码语言:javascript
复制
<p>
    <img src="path_to_image" alt="">
    <em>image_caption</em>
</p>

上面 HTML 对应的 Markdown 代码是:

代码语言:javascript
复制
![](path_to_image)
*image_caption*

Markdown 可以加 caption 的!

修改 img elem

我们不能改变 Markdown 解析的细节,但是可以使用 JS 的办法来处理,写一段 JS 将所有 img 用一个 a 包围:

代码语言:javascript
复制
$('#post-content img').each(function(index, val) {
    var link = $('<a></a>').attr({
        'rel': 'lightbox',
        'href': $(val).attr('src'),
        'data-lightbox':"roadtrip"
    });
    if ($(val).next('em')!=null) {
        link.attr('title', $(val).next('em').html());
    }
    $(val).parent().prepend(link);
    link.append($(val));
    $(val).addClass('img-fluid'); /*add BS4 image fluid class*/
});
代码语言:javascript
复制
<p>
    <a rel="lightbox" href="path" data-lightbox="roadtrip" title="Enjoy It!">
        <img src="path" alt="" class="img-fluid">
    </a>
    <em>Enjoy It!</em>
</p>
绑定事件

对着Selector运行ekkoLightbox()就行。

代码语言:javascript
复制
$('#subcontainer img').on("click",function(){
    event.preventDefault();
    $(this).ekkoLightbox({
        remote: $(this).attr('src'),
        title: $(this).next().html()
    });
})
  1. 首先选择正文 div#subcontainer 里面的 img
  2. 设定一个 onClickListener
  3. 点击的时候调用ekkoLightbox,并传递几个参数
    1. remote: 就是远程图片地址,实际上这里执行了两次 call,不知官方有否直接运用客户端图片的办法,反正有的话我也懒得改了 o( ̄ヘ ̄o#)
    2. title: 这里就直接获取图片后面的<em>里面的内容作为 Title
使用示例

(点击下图片试试)↓

Enjoy It!

所对应的代码如下

代码语言:javascript
复制
![]( https://assets.pic.szhshp.org/site/portrait.jpg)
*Enjoy It!*

Extra

给 Img+em 添加 CSS 进行美化2:

代码语言:javascript
复制
img + em {
    display: block;
    padding-left: 10px;
    color: grey;
 }

参考文献

  1. LightBox
  2. Using an image caption in Markdown Jekyll
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Requirements
  • Procedure
    • Usage
      • Via data attributes
      • Via Javascript
    • 实际使用
      • 修改 img elem
      • 绑定事件
      • 使用示例
    • Extra
    • 参考文献
    相关产品与服务
    网站建设
    网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档