又一款typecho主题book主题诞生了
一、主题功能特点介绍
「book」1.5.4:把博客重新装订成书
大多数主题都在争抢屏幕,book 只想在你桌上占一角。
它是一本合着的素纸精装书。点一下,它翻开;左页是目录,右页是正文。没有瀑布流,没有悬浮广告位,也没有一个追着你问「是否允许通知」的弹窗。
book 是一款为 Typecho 写的双页书卷主题,作者 randaxia,当前版本 1.5.4。它不试图把博客做成一个 App,而是试图让你重新听见翻页的声音。
01 封面:先让手指相信这是一本书
封面的第一要务不是好看,是可信。
book 的封面是一张象牙色纸面,叠了双向的细纸纤维、极轻的噪点和几处旧渍。近看有东西,远看仍然干净——像一本在书架上放了几年、但主人很爱惜的书。
书脊不是画一条深色竖线了事。它是一段 37px 宽的圆背(手机上收窄到 28px):外侧压暗,向封面一侧渐次提亮,中间有一道柔和的受光带,光像是绕着圆柱走了一圈。外侧留了 2px 的板边高光,下端转暗,做出封皮包边的厚度;书脊与封面交界处压了一道向封面渐淡的槽,让封面看起来比书脊低了一层;上下两端各有 8px 的收口细棱,是书头与书根。
书名是整列竖排的墨字,位置略偏左。字数多时字号会自动收小,长书名不会溢出封面,也不会被截断。书名下方压一枚朱印,取站点名称的第一个字,只留一圈细边,微微旋转 -2.5°,像随手盖下、又恰好端正。
书名右侧另有一列小字:BOOK、一道两端渐隐的 1px 发丝线、站点域名,自上而下排好,顶端与书名齐平。它不是装饰,是这本书的版权页,只是被折叠成了一列。
右侧书口是一叠象牙色的纸页,能看出纸的厚度。底部一行「轻触翻开」,前面有个朱红小点,慢慢地呼吸。后台还可以换封面图:图片会铺在纸面之上,再覆一层浅纱,墨字依旧读得清。
02 翻开:所有零件共用一条时间轴
翻书最怕各演各的:封面已经飞走,书脊还在原地;书合上了,右边那叠纸才姗姗来迟。
book 把开书与合书的所有图层绑在同一条时间轴上,时长由 --book-flip 统一给出,默认 960ms。封面、左右两页、书脊、投影、书口叠页,全都读同一个值、用同一条缓动曲线。你看到的是一个动作,不是五个动画碰巧同时播放。
翻开时,左页背景不会先露出一块突兀的阴影;翻到一半也不会因为图层重排而抖一下;合书时,右侧叠页与封面一起收拢,不会等书都合严了才从边上冒出来。这些细节修起来并不浪漫,但一本书像不像书,全靠它们。
如果系统开了「减少动态效果」,它会安静下来,直接把书递给你。
03 左页目录,右页正文
左页是目录:标题、引线、月.日,一行一篇。当前这一篇的标题会变成朱红,前面多一小段横线;从文章页进来时,目录会自动滚到当前篇,不用你自己找。
目录底部是分页,以及一句「← 回到书的开头」。再往下是页脚题记、站点版权、主题作者与备案号,排得像一本书的版权页。
右页是正文:作者、日期、分类、留言数,居中标题,下面一枚 ❖ 作分隔。右缘有一条极细的阅读进度,随滚动长高;右上角垂着一枚朱红书签,窄屏会自动收窄;读到一半想回头,右下角的「顶部」会浮出来。
404 页写的是「这一页被撕掉了」,空站提示是「这本书还没有开始写」。连出错都尽量不扫兴。
04 换一篇:洗牌,但不重复
「换一篇」最怕两件事:一是连着翻到同一篇,二是点了没反应。
book 在页面里预置全部文章 cid,前端打乱成一个队列,翻过的先不放回,所以不会紧接着重复。取文章有三层兜底:先走 AJAX 拿 JSON;失败则请求 ?book_frag=1 只取右页分片;再失败,就直接打开带 ?book_random=1 的真实链接,由服务端随机。无论站点的固定链接怎么设置,总有一条路能翻过去。
翻页本身是 150ms 的淡出,内容在同一帧里替换、回到顶部,再淡入。不白屏,不跳动,也不会把你刚读到的那一行甩到屏幕外。键盘上按 R 也行。
如果书里只有一篇文章,它会老实告诉你:「书里暂时只有这一篇。」
05 搜索:输入即检索整本书
点左上角的放大镜,检索框会从目录上方展开。输入即检索整本书,结果直接替换左页目录,点标题就在右页翻开——不用跳页,不用离开这本书。
AJAX 不通时,它会退化成在当前目录里筛选,仍然能用。按 Esc 收起检索框,也顺手把你带回目录。
空着直接回车,不会弹出浏览器那句生硬的「请填写此字段」。取而代之的是一枚朱印小签:一个 !、一圈朱红描边、输入框轻轻抖一下,下面写着「在框里写个字,就能翻遍整本书」。
06 留言:12 枚手绘头像
留言区没有去请求 Gravatar,而是自己画了 12 枚头像:书生、女史、狸奴、白鹤、修竹、朱印、远山、墨客、渔翁、花旦、山鹿、纸灯。全是内联 SVG,不拉外链,不会因为头像服务抽风而留下一排灰色小人。
读者选一次,选择会记进数据库,换一台设备再来,还是那张脸。留言按楼层排,支持回复,作者本人的留言会单独标出来;单篇最多展示最早的 300 条,剩下的留给数据库慢慢变老。
提交仍然走 Typecho 原生的 POST,审核、失败提示都由服务端接管。主题只把提示做得好看一点,不替站长做决定。
07 后台:九个选项,够用就好
主题设置只有九项:印章 LOGO、书本封面图、首页地址、全局背景图、背景遮罩、导航菜单、页脚题记、右页默认打开、备案号。
封面图可以填完整 URL、站内路径,也可以把 cover.jpg / cover.png / cover.webp / cover.jpeg 放进 assets/ 自动读取。导航每行一项,写成 名称|链接;页脚题记一行一句。右页默认可以「随机翻开一篇」,也可以「打开最新一篇」。
没有三十个开关,也没有一张需要对照说明书的设置表。一本书不需要说明书。
08 手机与一些不声张的细节
900px 是分界。桌面上是摊开的双页;手机上收成单页,点目录进正文,左上角留一个「目录」把你送回去。纸面接近满屏,书名随屏高收缩,侧栏小字贴着书名走。
没有 jQuery,没有远程字体,背景、遮罩、信笺、头像都在本地。封面支持 Enter / 空格翻开,R 换一篇,Esc 收起检索或返回目录;该有的 aria 标签都在,减少动态效果也会被尊重。
这些事读者不会注意到。但一本书之所以像书,靠的就是这些不被注意的地方。
09 安装与升级
- 把
book目录上传到usr/themes/; - 后台 → 控制台 → 外观 → 启用
book; - 需要的话,在主题设置里填 LOGO、封面图、背景图、导航与页脚题记。
从 1.5.3 升级到 1.5.4,解压覆盖 usr/themes/book/ 即可,后台不用改任何设置。这一版删掉了封面上的朱红飘带,把 BOOK 与站点域名收进书名右侧的同一列,中间加了一道发丝分隔线;翻书、目录、正文、搜索、留言、换一篇、合书回首页的逻辑都没有动。
博客写到后来,多少有点像一间堆满草稿的房间。book 做的事很简单:把这些纸收拢、对齐、装订,放在一束暖光下面。
剩下的,是你愿不愿意坐下来,翻开第一页。
book 1.5.4 · 主题作者 randaxia · https://daimarushi.cn
读者留言
还没有人落笔书页还很干净,来写下第一行字。