准备工作
- 本节内容是基于实现本地保存图片功能前提记录的笔记,如果是用图床外链,可以跳过所有涉及到
img
文件夹以及 img/s
文件夹的步骤。
- 本相册的所有功能均仅测试了在
hexo-theme-next
下实现的效果,使用其它主题时部分布局尺寸数据可能会出现偏差,需要自行根据主题设置修改。
创建目录
- 在博客根目录输入命令
hexo new page gallery
;
- 在
hexo/source/gallery
目录下建立你需要的分类相册文件夹;
- 进入
hexo/source/gallery
目录,新建 img
文件夹用来存放相册封面;
- 在每个相册文件夹中创建
img
文件夹用来存放大图,以及 img/s
文件夹用来存放缩略图。
整个 gallery 目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12
| ./gallery/ ├── index.md ├── img │ ├── s │ │ └── sample.jpg │ └── sample.jpg └── sample ├── img │ ├── s │ │ └── sample.jpg │ └── sample.jpg └── index.md
|
相册主界面
- 打开
gallery/index.md
,将 title 设置成你需要的相册页面名称;
- (可选)在日期下方加上
comments: false
关闭评论;
- 复制以下代码粘贴至正文,并按需求修改相册描述、相册名、相册文件夹名以及封面图文件名:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <center>!相册描述【此行可删除】</center> <center>自定义分隔符【此行可删除】</center> <div class="gallery-page"> <div class="gallery-list"> <div class="gallery-column"> <div class="gallery-item"> <a href="【!相册文件夹名】"><img src="img/【!封面图文件名】.jpg"> </a> <p>- !相册1 -</p> </div> <div class="gallery-item"> <a href="【!相册文件夹名】"><img src="img/【!封面图文件名】.jpg"> </a> <p>- !相册2 -</p> </div> </div> <div class="gallery-column"> <div class="gallery-item"> <a href="sample"><img src="img/sample.jpg"> </a> <p>- 相册名 -</p> </div> </div> <div class="gallery-column"> <div class="gallery-item"> <a href="sample"><img src="img/sample.jpg"> </a> <p>- 相册名 -</p> </div> </div> </div> </div> </div> <center>自定义分割线【此行可删除】</center>
|
- 需要使用外链的场合,将
<img src="img/【封面图文件名】.jpg">
中的内容替换为图床外链地址即可;
- 代码中
<div class="gallery-column">
元素为分列显示相册的列数,可按需要增减;
- 新增相册时请确认代码添加在
<div class="gallery-column">
元素内部,否则会造成显示错误。
分类相册界面
- 打开
gallery/相册名/index.md
,将 title 设置成你需要的相册页面名称;
- (可选)在日期下方加上
comments: false
关闭评论;
- 复制以下代码粘贴至正文,并按需求修改相册描述、图片名以及缩略图文件名:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <center>!相册描述【此行可删除】</center> <center>自定义分隔符【此行可删除】</center> <div class="gallery-page"> <div class="img-list"> <div class="img-column"> <a href="img/【!图片名1】.jpg" target="_Blank"><img src="img/s/【!缩略图文件名1】.jpg"></a> <a href="img/【!图片名2】.jpg" target="_Blank"><img src="img/s/【!缩略图文件名2】.jpg"></a> </div> <div class="img-column"> <a href="img/sample.jpg" target="_Blank"><img src="img/s/sample.jpg"></a> </div> <div class="img-column"> <a href="img/sample.jpg" target="_Blank"><img src="img/s/sample.jpg"></a> </div> </div> <center>自定义分割线【此行可删除】</center>
|
- 需要使用外链的场合,将
<img src="img/【图片名】.jpg">
中的内容替换为图床外链地址即可,如果图床加载速度够快可以用同一个链接填充缩略图部分;
- 代码中
<div class="img-column">
元素为分列显示图片的列数,可按需要增减;
- 添加图片时请确认代码添加在
<div class="img-column">
元素内部,否则会造成显示错误。
CSS 样式
修改style
文件,vim source/_data/styles.styl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
.gallery-page { margin-top: -50px; } .img-list, .gallery-list { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-start; } .img-column { display: flex; flex-direction: column-reverse; } .img-column a, .gallery-column a { border-bottom: 0px; } .gallery-item { margin-bottom: -50px } .gallery-item p { margin: -25px auto -10px; max-width: 50%; text-align: center; font-size: 15px; color: $black-deep; background: rgba(255,255,255,.3); border-radius: 7px; border: 1px solid $black-deep; box-shadow: 0 8px 20px -8px rgba(0,0,0,.3); } .posts-expand .post-body .gallery-column a img { height: 250px; width: 300px; object-fit: cover; } @media (max-width: 767px){ .gallery-item p { min-width: 75px; font-size: 13px; } }
|
@media
标签内的样式是防止移动端浏览时相册名被强制换行的,建议保留;
- 其余样式除了 flex 相关行与 object-fit 样式以外,均可根据需要自行更改,在此不作赘述。
一些好看的Blog相册
- 画廊 - | †少女癌† (co5.me)
Galleries – ✏Victor’s Blog (jiahongw.com)
Gallery | Blog of Tony Yuan (yuan901202.github.io)
光影集 | 频率 (pinlyu.com)
Gallery | 鱼鱼书 ❤ 菜子 (yuyushu.online)
我的相册 - 银河小徐 (hasaik.com)
辣椒の酱 (removeif.github.io)
画廊 | 小丁的个人博客 (tding.top)
参考文献
[1] css+markdown 实现 hexo 相册【进阶篇】
[2] 30 分钟学会 Flex 布局 - 知乎 (zhihu.com)