feat(5f): reader 模式+版式基底+首屏 tagline+图库质感(T4/T7/T8)

- T4 reader:html.reader 单 class(去装饰非去内容:隐辉光/图标
  钮/pv 行,ICP 合规底线永留;正文字号+1px 行宽 56ch;入场动效
  关);命令面板 reader 命令+r 键+localStorage;ThemeScript 预绘
  防闪
- T7 基底:--flow-* 五流距变量双轨应用;暗色 hairline 降档;
  页面标题 700→600(裁定 #6 减字重不减号);focus-visible ring
  统一;列表行距 +2px;--paper/--radius-img/--ease-out 入库
- T8:首页 IdCard slot 落 tagline「写作者 · 读者 · 快门按压者,
  拥抱开源。」;图库暗色 4% 轻衬底+圆角统一(裁定 #4 双模式分判)

验证: E2E 33/33;reader r 键触发+辉光 none+刷新保持实测;流距
      computed 0.6em 实算;tagline 渲染实测

Spec: 2026-10-26_blog-5f

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-11-01 09:09:27 +08:00
1 parent 22930cfffd
commit 8ec1712135
8 files changed
+80 -3

No files matched your search

+10
View File
@@ -39,6 +39,10 @@ const navItems = [
<div id="cmd-commands" class="cmd-commands">
<p class="cmd-group" role="presentation" id="cmd-h-actions">{t('cmd_group_actions', locale)}</p>
<ul class="cmd-ul" role="group" aria-labelledby="cmd-h-actions">
<li class="cmd-item" role="option" aria-selected="false" data-cmd="reader">
<span class="cmd-label">{t('cmd_reader', locale)}</span>
<span class="cmd-kbd" aria-hidden="true">r</span>
</li>
<li class="cmd-item" role="option" aria-selected="false" data-cmd="theme">
<span class="cmd-label">{t('cmd_toggle_theme', locale)}</span>
<span class="cmd-kbd" aria-hidden="true">t</span>
@@ -134,6 +138,12 @@ const navItems = [
}
switch (item.dataset.cmd) {
// 复用 Header 主题钮的现成切换(同一 localStorage key),不另起第二套实现
case 'reader': {
const root = document.documentElement;
root.classList.toggle('reader');
localStorage.setItem('reader', root.classList.contains('reader') ? '1' : '0');
break;
}
case 'theme': {
const btn = document.querySelector('[data-theme-toggle]') as HTMLElement | null;
if (btn) {
+3 -1
View File
@@ -13,5 +13,7 @@
? saved
: (matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
document.documentElement.dataset.theme = theme;
})();
})();
// reader 模式预绘(5f T4):与主题同点位读取,避免可交互前闪装饰
if (localStorage.getItem('reader') === '1') document.documentElement.classList.add('reader');
</script>
+7
View File
@@ -65,6 +65,13 @@ const routes: Record<string, string> = {
if (inField() || e.metaKey || e.ctrlKey || e.altKey) return;
if (e.key === 't') { toggleTheme(); return; }
if (e.key === 'r') {
// reader 纯文本模式(5f T4):与命令面板/持久化同源
const root = document.documentElement;
root.classList.toggle('reader');
localStorage.setItem('reader', root.classList.contains('reader') ? '1' : '0');
return;
}
if (e.key === '?') {
(document.getElementById('kbd-help') as HTMLDialogElement | null)?.showModal();
return;
+9
View File
@@ -429,3 +429,12 @@ const first = cards[0];
.lb-meta { order: 3; flex-basis: 100%; }
}
</style>
<style>
/* 5f T8(视觉裁定 §6-4):亮色直贴不动;暗色 4% 轻衬底救夜景融底;衬底圆角≤照片防框中框 */
:global([data-theme='dark']) .stage {
background: rgba(255, 255, 255, 0.04);
border-radius: 6px;
}
.shot img, .thumb img { border-radius: var(--radius-img); }
</style>