📢 新文章推送 · 每周更新优质内容 · 订阅更新 →
向下滚动
智能家居

图书/娱乐独立页面上线

AI 智能总结

前言

继音乐、相册、电影之后,博客新增了「图书」独立展示页面,归入「娱乐」板块。这个页面以卡片网格形式展示个人书单,支持按状态筛选、hover 详情预览、评分展示和豆瓣跳转,是记录阅读历程的理想工具。

页面概览

图书页面位于 /books/,在导航栏「娱乐」菜单下可访问。

特性说明
📚 卡片网格响应式 2→3→4→5 列自适应布局,卡片展示封面、书名、作者等关键信息
📊 状态筛选全部/在读/已读/想读/搁置,一键过滤
🖱️ Hover 预览鼠标悬停显示完整详情:作者、译者、出版社、ISBN、页数、装帧、定价、简介
⭐ 评分展示右上角角标显示评分
🔗 豆瓣链接每本书支持豆瓣主页跳转,一键直达
🎨 暗色模式完整适配深色主题,卡片、筛选按钮、渐变背景全部覆盖
💬 评论支持页面底部集成评论系统
📡 数据驱动基于 data/books.toml 数据文件,Hugo 原生渲染

技术实现

页面结构

图书页面通过 Hugo 的 type: books 自定义页面类型实现,使用专用模板 layouts/books/list.html 渲染。

 1{{ define "main" }}
 2{{ $books := hugo.Data.books.books | default slice }}
 3{{ $total := len $books }}
 4<!-- 状态筛选按钮 -->
 5<div class="book-filter-container">
 6  <button data-status="all">全部 ({{ $total }})</button>
 7  <button data-status="watching">在读</button>
 8  <button data-status="completed">已读</button>
 9  <button data-status="planned">想读</button>
10  <button data-status="onhold">搁置</button>
11</div>
12<!-- 书籍卡片网格 -->
13<div class="book-grid">
14  {{ range $books }}
15  <div class="bc" data-status="{{ .status }}">
16    <!-- 封面 / 状态角标 / 评分 / hover 详情面板 -->
17  </div>
18  {{ end }}
19</div>
20{{ end }}

数据文件

图书数据存储在 data/books.toml,每条记录包含完整元数据:

 1[[books]]
 2  title = "一句顶一万句"
 3  status = "watching"
 4  author = "刘震云"
 5  publisher = "人民文学出版社"
 6  publishYear = 2025
 7  isbn = "9787020197620"
 8  pages = 475
 9  binding = "精装"
10  rating = 9.1
11  desc = "刘震云代表作,一部关于说话与孤独的史诗。"
12  type = ["小说", "文学", "中国当代文学"]
13  doubanUrl = "https://book.douban.com/subject/37316563/"

响应式网格

卡片网格采用 CSS Grid 响应式布局,在不同屏幕宽度下自动调整列数:

屏幕宽度列数
< 600px2 列
600-900px3 列
900-1200px4 列
> 1200px5 列

Hover 交互

鼠标悬停时卡片向上浮起,封面变暗,底部滑入详情面板,展示完整图书信息。详情面板包含带滚动条的最大高度限制,确保长内容不会溢出。

 1.bc:hover {
 2  transform: translateY(-8px);
 3  box-shadow: 0 20px 50px rgba(0,0,0,.12);
 4}
 5.bpw-info {
 6  transform: translateY(100%);
 7  transition: transform .4s cubic-bezier(.4,0,.2,1);
 8}
 9.bc:hover .bpw-info {
10  transform: translateY(0);
11}

状态角标

四种阅读状态各有独立配色:

状态标识配色
在读📖绿色渐变
已读蓝色渐变
想读橙色渐变
搁置紫色渐变

暗色模式

完整适配深色主题,包括卡片背景、文字颜色、筛选按钮、渐变背景、豆瓣链接等所有 UI 元素。

导航菜单

图书页面作为「娱乐」板块的子菜单项,与音乐、相册、电影并列:

1娱乐
2├── 音乐  (/music/)
3├── 相册  (/gallery/)
4├── 电影  (/movies/)
5└── 图书  (/books/)

数据管理

书籍数据通过 data/books.toml 文件管理,支持以下字段:

字段类型必填说明
title字符串书名
status枚举watching / completed / planned / onhold
author字符串作者
translator字符串译者
publisher字符串出版社
imprint字符串出品方
publishYear数字出版年份
isbn字符串ISBN 编号
pages数字页数
binding字符串装帧类型
price数字定价
poster字符串封面图片 URL
rating数字评分(1-10)
desc字符串简介
type数组分类标签
doubanUrl字符串豆瓣链接
links数组自定义链接列表

总结

图书页面将博客的「娱乐」板块从音乐、相册、电影扩展到了读书领域,通过卡片网格 + 状态筛选 + hover 交互的设计,既美观又实用。配合 data/books.toml 数据文件管理,添加新书只需编辑 TOML 配置,无需手动编写页面。

版权声明

本文作者 Lumin

本文链接 https://www.zhengquan.xyz/smart/books-page/

许可协议 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

请作者喝杯咖啡 ☕

  • 微信打赏
    微信支付
  • 支付宝打赏
    支付宝
点击按钮查看打赏二维码
🎁 推荐工具
试试这些实用在线工具,提升工作效率
前往工具集 →

留言评论

期待你的想法

评论加载中