Jekyll x Markdown 图片美化 - Lightbox.js
2016-04-19
- Bootstrap
- Lightbox for Bootstrap 3
本来一个很普通的 Jekyll 主题被我改得完全没了原来的样子
昨天写了一篇游记,Karmdown 里面的图片不会自适应,导致有些图片大有些图片小,当然我才懒得给每个图片加 width 和 height!
所以随手搜了一下 Modal Window 来显示图片,于是就找到了 Lightbox 这个 Plugin
官方1给的 API 比较简单,可以有几个用法
<a href="someurl" data-toggle="lightbox">Launch modal</a>
<a href="someurl" id="mylink">Open lightbox</a> $('#mylink').ekkoLightbox(options);
官方的推荐是在 image 外层放一个<a>
并通过<a>
的点击调用 Modal Window,而 Markdown 引用图片时会生成如下的格式2:
<p> <img src="path_to_image" alt=""> <em>image_caption</em> </p>
上面 HTML 对应的 Markdown 代码是:
![](path_to_image) *image_caption*
Markdown 可以加 caption 的!
我们不能改变 Markdown 解析的细节,但是可以使用 JS 的办法来处理,写一段 JS 将所有 img 用一个 a 包围:
$('#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*/ });
<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()
就行。
$('#subcontainer img').on("click",function(){ event.preventDefault(); $(this).ekkoLightbox({ remote: $(this).attr('src'), title: $(this).next().html() }); })
- 首先选择正文 div#subcontainer 里面的 img
- 设定一个 onClickListener
- 点击的时候调用
ekkoLightbox
,并传递几个参数- remote: 就是远程图片地址,实际上这里执行了两次 call,不知官方有否直接运用客户端图片的办法,反正有的话我也懒得改了 o( ̄ヘ ̄o#)
- title: 这里就直接获取图片后面的
<em>
里面的内容作为 Title
(点击下图片试试)↓
所对应的代码如下
![]( https://assets-pic.szhshp.org/site/portrait.jpg) *Enjoy It!*
给 Img+em 添加 CSS 进行美化2:
img + em { display: block; padding-left: 10px; color: grey; }
关于本文
文章标题 | Jekyll x Markdown 图片美化 - Lightbox.js |
发布日期 | 2016-04-19 |
文章分类 | Tech |
相关标签 | #JS |
留言板
PLACE_HOLDER
PLACE_HOLDER
PLACE_HOLDER
PLACE_HOLDER