diff --git a/content/album/index.md b/content/album/index.md new file mode 100644 index 00000000..5701e470 --- /dev/null +++ b/content/album/index.md @@ -0,0 +1,8 @@ +--- +title: "光影" +date: 2024-01-29 +layout: "album" +menu: "main" +slug: "album" +draft: false +--- diff --git a/content/post/2026-01-30-hugo-album-waterfall/index.md b/content/post/2026-01-30-hugo-album-waterfall/index.md new file mode 100644 index 00000000..b7b9ff92 --- /dev/null +++ b/content/post/2026-01-30-hugo-album-waterfall/index.md @@ -0,0 +1,119 @@ +--- +title: 给Hugo博客添加瀑布流相册功能 +date: 2026-01-30T13:00:00+08:00 +draft: false +author: 小赵同学 +categories: + - 折腾 + - 建站 +tags: + - Hugo + - CSS + - 瀑布流 + - 相册 +top_img: https://picsum.photos/800/400 +--- + +前两天逛博客,偶然看到了 [immmmm](https://immmmm.com/album/) 大佬的相册页面,觉得那种瀑布流的布局方式展示照片很有感觉,错落有致。 + +正好最近也想整理一下自己的照片,于是想着能不能也在自己的 Hugo 博客上实现类似的效果。 + +自己也是在摸索中前进,参考了不少前辈的教程,这里简单记录一下实现的思路,希望能给同样有需求的朋友一点参考。 + +## 实现思路 + +我的想法比较简单,主要是想利用 Hugo 的 `Data Templates` 功能,把照片的数据和页面的展示分离开来,这样管理起来比较方便。 + +1. **数据层**:用 YAML 文件存储照片的链接、描述等信息。 +2. **展示层**:编写一个专门的 Layout 模板来读取并渲染这些数据。 +3. **样式层**:尝试使用 CSS 的 `column-count` 属性来实现瀑布流布局。 + +## 第一步:准备数据 + +首先在 `data` 目录下新建了一个 `album.yml` 文件。 + +格式如下,每张照片作为一个 item: + +```yaml +- title: "随手拍的风景" + image: "https://picsum.photos/300/400" + date: "2024-01-29" + description: "记录生活中的一角" + +- title: "本地图片测试" + image: "/album/my-photo.jpg" # 图片放在 static/album/ 目录下 + date: "2026-01-30" +``` + +这样以后添加照片,只需要在这个文件里追加内容就可以了。 + +## 第二步:编写模板 + +接着在 `layouts/_default/` 下新建了 `album.html` 模板文件。 + +主要逻辑是遍历 `site.Data.album` 中的数据: + +```html +{{ define "main" }} +