相册页面
创建图片展示页面
相册页面
PrimeEdge 提供瀑布流相册页面,支持灯箱浏览和键盘导航。
创建相册页面
创建 content/photos.md:
---
title: "相册"
description: "记录生活中的美好瞬间"
layout: "photos"
---
相册模板结构
相册页面使用 layouts/page/photos.html 模板,包含:
- 瀑布流图片网格
- 灯箱浏览功能
- 键盘导航支持
添加照片
方式一:直接修改模板
编辑 layouts/page/photos.html,添加图片:
<div class="photo-item" data-src="/images/photos/photo1.jpg">
<img src="/images/photos/photo1.jpg" alt="照片描述" loading="lazy">
<div class="photo-overlay">
<span class="photo-title">照片标题</span>
</div>
</div>
方式二:使用数据文件
创建 data/photos.yml:
photos:
- src: "/images/photos/photo1.jpg"
title: "风景摄影"
- src: "/images/photos/photo2.jpg"
title: "城市夜景"
- src: "/images/photos/photo3.jpg"
title: "自然风光"
然后在模板中遍历:
{{ range .Site.Data.photos.photos }}
<div class="photo-item" data-src="{{ .src }}">
<img src="{{ .src }}" alt="{{ .title }}" loading="lazy">
<div class="photo-overlay">
<span class="photo-title">{{ .title }}</span>
</div>
</div>
{{ end }}
图片存放
将图片放入 static/images/photos/ 目录:
static/
└── images/
└── photos/
├── photo1.jpg
├── photo2.jpg
└── photo3.jpg
图片建议
- 格式: JPG 或 WebP
- 尺寸: 建议宽度 1200px 以上
- 大小: 单张控制在 500KB 以内
- 命名: 使用有意义的文件名
灯箱功能
点击任意图片打开灯箱浏览:
- 关闭: 点击关闭按钮或按
Esc - 上一张: 点击左箭头或按
← - 下一张: 点击右箭头或按
→
响应式布局
相册页面自动适配不同屏幕:
- 桌面端:4 列瀑布流
- 平板端:3 列瀑布流
- 手机端:2 列瀑布流
懒加载
图片使用 loading="lazy" 属性,进入视口时才加载,提升页面性能。
自定义样式
如需自定义相册样式,创建 static/css/custom.css:
/* 调整图片间距 */
.photos-grid {
gap: 20px;
}
/* 自定义悬停效果 */
.photo-item:hover .photo-overlay {
background: rgba(0, 0, 0, 0.7);
}
多相册支持
如需多个相册,可以创建多个页面:
content/
├── photos-travel.md # 旅行相册
├── photos-food.md # 美食相册
└── photos-life.md # 生活相册
每个页面使用相同的 layout: photos,但指向不同的图片目录。
与图床集成
如果使用外部图床(如又拍云、七牛云),直接使用外链:
<div class="photo-item" data-src="https://your-cdn.com/photo1.jpg">
<img src="https://your-cdn.com/photo1.jpg" alt="照片" loading="lazy">
</div>
完整示例
页面配置
---
title: "旅行相册"
description: "记录走过的路和看过的风景"
layout: "photos"
---
模板代码
<div class="photos-grid">
<div class="photo-item" data-src="/images/photos/tokyo.jpg">
<img src="/images/photos/tokyo.jpg" alt="东京" loading="lazy">
<div class="photo-overlay">
<span class="photo-title">东京塔夜景</span>
</div>
</div>
<div class="photo-item" data-src="/images/photos/kyoto.jpg">
<img src="/images/photos/kyoto.jpg" alt="京都" loading="lazy">
<div class="photo-overlay">
<span class="photo-title">京都神社</span>
</div>
</div>
</div>
Comments