惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
A
About on SuperTechFans
WordPress大学
WordPress大学
B
Blog
Martin Fowler
Martin Fowler
Jina AI
Jina AI
I
InfoQ
P
Proofpoint News Feed
小众软件
小众软件
S
SegmentFault 最新的问题
V
V2EX
B
Blog RSS Feed
量子位
大猫的无限游戏
大猫的无限游戏
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
美团技术团队

Java不加糖的Blog

假设, AI 把我代替的那一刻真的到来 | szhshp 的第三边境研究所 小傻瓜都能懂的 AstrBot QQ 机器人集成 MCP 功能实战指南 | szhshp 的第三边境研究所 《智人之上: 从石器时代到 AI 时代的信息网络简史》阅读笔记 | szhshp 的第三边境研究所 iPadOS 26 无法设置空间场景图片壁纸的解决方法 | szhshp 的第三边境研究所 《一路云海》(终) | szhshp 的第三边境研究所 《一路云海》(四): 如何不按套路旅行 | szhshp 的第三边境研究所 《一路云海》(三): In Ya Mellow Tone | szhshp 的第三边境研究所 《一路云海》(二): 关西世博参观纪实 | szhshp 的第三边境研究所 《一路云海》(一): 新的征程 | szhshp 的第三边境研究所 2025 大阪世博会 [ 3 天前-先到先得 ] 阶段 场馆预约必中独家攻略 | szhshp 的第三边境研究所 Hackathon 随想 | szhshp 的第三边境研究所 一杯双皮奶 | szhshp 的第三边境研究所 Armbian + CasaOS + NAS 配置指南 | szhshp 的第三边境研究所 Docker 构建镜像报错: error getting credentials - err: exit status 1, out: `` | szhshp 的第三边境研究所 Disqus RIP! 论过高的维护成本如何治疗固执的坏习惯 | szhshp 的第三边境研究所 炸弹猫桌游变体规则 | szhshp 的第三边境研究所 《小岛经济学》阅读笔记 | szhshp 的第三边境研究所 《金钱心理学》阅读笔记 | szhshp 的第三边境研究所 为知笔记 RIP: 迁移剩余的笔记 | szhshp 的第三边境研究所 2025 博客第十年展望 - 再见我的过去 | szhshp 的第三边境研究所 我在独立游戏里面致敬的作品 | szhshp 的第三边境研究所 《How to make thing faster》阅读笔记 | szhshp 的第三边境研究所 《The Art of Clean Code》阅读笔记 | szhshp 的第三边境研究所 《Clean Architecture: A Craftsman Guide to Software Structure and Design》阅读笔记 | szhshp 的第三边境研究所 《How AI Works》阅读笔记 | szhshp 的第三边境研究所 游戏策划废案 - Project Uranus | szhshp 的第三边境研究所 游戏策划废案 - Project X | szhshp 的第三边境研究所 人生第一款独立游戏开发复盘 | szhshp 的第三边境研究所 Trap of Life | szhshp 的第三边境研究所 wireguard折腾记录
Jekyll x Markdown 图片美化 - Lightbox.js | szhshp 的第三...
2016-04-19 · via Java不加糖的Blog

Meta

目录

Requirements

  • Bootstrap
  • Lightbox for Bootstrap 3

Procedure

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

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

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

Usage

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

Via data attributes

<a href="someurl" data-toggle="lightbox">Launch modal</a>

Via Javascript

<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的!

修改img elem

我们不能改变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()
    });
})
  1. 首先选择正文div#subcontainer里面的img
  2. 设定一个onClickListener
  3. 点击的时候调用ekkoLightbox,并传递几个参数
    1. remote: 就是远程图片地址,实际上这里执行了两次call,不知官方有否直接运用客户端图片的办法,反正有的话我也懒得改了o( ̄ヘ ̄o#)
    2. title: 这里就直接获取图片后面的<em>里面的内容作为Title

使用示例

(点击下图片试试)↓

Enjoy It!

所对应的代码如下

![]( https://assets-pic.szhshp.org/site/portrait.jpg)
*Enjoy It!*

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

img + em {
    display: block;
    padding-left: 10px;
    color: grey;
 }

参考文献

  1. LightBox

  2. Using an image caption in Markdown Jekyll ↩ ↩2