模板样式令牌化:字号落到 5 档阶梯、圆角改走 --tb-radius

11 个模板里的硬编码字号/圆角换成令牌,为之后的深色与主题一致性打底。

字号(base.css 的 --tb-fs-xs/md/lg/xl/hero = 12/14/16/24/28):
- 0.70~0.88rem、0.72rem 等五六档零碎值 → --tb-fs-xs(标签/meta) / --tb-fs-md(正文、列表、按钮)
- 0.95~1rem → --tb-fs-lg;1.5rem 大数字 → --tb-fs-xl;1.75rem 首页主标题 → --tb-fs-hero
- 以下几处**故意改变了观感**(不是等价替换,先记下来免得以后当 regression 查):
  explore 的 .explore-name 1.2rem → 1rem;.hot-vote-title 0.98 → 0.875;
  首页 .tb-stat-num 手机端 1.25 → 1rem;.hot-vote-action 0.82 → 0.875(变大)。

圆角:
- 8/9/10px → --tb-radius-sm(8) / --tb-radius(12,对话框与气泡);3/4/5/6px → --tb-radius-xs(6)
- 头像 50%、胶囊 999px 保留原样(语义值,不是视觉随意值)

其它:header 验证码输入框边框 #ccc → var(--tb-border);chat 气泡与图片的圆角走内联 var()。

仍未令牌化(留给下一轮):templates/user/profile.html 还有 16 处 font-size、base.css 自身 11 处
(0.78/0.82/0.88/0.95/1.1),邮件模板 mail/* 保持 px 不动(邮件客户端不保证 var())。
This commit is contained in:
tamakyi
2026-10-21 18:28:26 +08:00
parent dc90d96bde
commit 001306d940
11 changed files with 67 additions and 67 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
background-color: #ffe0e0;
color: #c0392b;
padding: 0 4px;
border-radius: 4px;
border-radius: var(--tb-radius-xs);
font-weight: 600;
}
html[data-theme="dark"] .tb-domain-sep {
+3 -3
View File
@@ -45,7 +45,7 @@
align-items: center;
background: #f0f2f5;
border: 1px solid #dcdcdc;
border-radius: 8px;
border-radius: var(--tb-radius-sm);
padding: 8px 8px 8px 16px;
gap: 6px;
transition: border-color 0.2s;
@@ -69,8 +69,8 @@
font-size: 1.2rem;
font-family: "Courier New", monospace;
font-weight: 600;
border: 1px solid #ccc;
border-radius: 5px;
border: 1px solid var(--tb-border);
border-radius: var(--tb-radius-sm);
outline: none;
transition: border-color 0.15s, box-shadow 0.15s;
background: #fff;
+3 -3
View File
@@ -20,7 +20,7 @@
.custom-lightbox img {
max-width: 90%;
max-height: 80%;
border-radius: 8px;
border-radius: var(--tb-radius-sm);
box-shadow: 0 0 30px rgba(0,0,0,0.5);
}
.custom-lightbox .close-btn {
@@ -59,7 +59,7 @@
<li class="uk-margin-small-bottom" data-page-node-id="LSFm4EINd1XxnwZSFbAlji">
<div class="uk-flex {{ if $isMyMessage }}uk-flex-right{{ else }}uk-flex-left{{ end }}" data-page-node-id="afhl9aZDsknmAlut7imPnp">
<div class="uk-card uk-card-hover uk-card-body uk-padding-small uk-margin-small-left uk-margin-small-right"
style="max-width: 75%; border-radius: 12px; background-color: {{ if $isMyMessage }}#e6ffe6{{ else }}#f0f8ff{{ end }};" data-page-node-id="zPuwctcKF6xPKnwQKaYADD">
style="max-width: 75%; border-radius: var(--tb-radius); background-color: {{ if $isMyMessage }}#e6ffe6{{ else }}#f0f8ff{{ end }};" data-page-node-id="zPuwctcKF6xPKnwQKaYADD">
<div class="uk-flex uk-flex-middle uk-margin-small-bottom" data-page-node-id="NuHyY57VYOUYQWdpRPqeS6">
<span class="uk-icon" uk-icon="user" data-page-node-id="ctN3HeenrU4wiv39zSfOgY"></span>
<strong class="uk-margin-small-left" data-page-node-id="V7t5pBo43sNBv1a6rvp0jv">
@@ -78,7 +78,7 @@
{{ range (index $.MessageImages .ID) }}
<div class="uk-margin-small-top" data-page-node-id="sB1P5iHpDXEjFBdUymfkxz">
<img src="{{ .URL }}" alt="{{ .FileName }}"
style="max-width: 200px; max-height: 200px; border-radius: 8px; cursor: pointer;"
style="max-width: 200px; max-height: 200px; border-radius: var(--tb-radius-sm); cursor: pointer;"
onclick="openLightbox('{{ .URL }}', '{{ .FileName }}')" data-page-node-id="siJUfJdLhG2zPrXzGC1KZ3" />
</div>
{{ end }}
+13 -13
View File
@@ -9,7 +9,7 @@
}
.tb-hero-title {
margin: 0;
font-size: 1.75rem;
font-size: var(--tb-fs-hero);
line-height: 1.35;
font-weight: 600;
color: var(--tb-text);
@@ -17,7 +17,7 @@
.tb-hero-lead {
margin: 12px auto 0;
max-width: 30rem;
font-size: 0.95rem;
font-size: var(--tb-fs-lg);
line-height: 1.8;
color: var(--tb-text-muted);
}
@@ -43,13 +43,13 @@
}
.tb-card-title {
margin: 0 0 6px;
font-size: 0.98rem;
font-size: var(--tb-fs-lg);
font-weight: 600;
color: var(--tb-text);
}
.tb-card-text {
margin: 0;
font-size: 0.86rem;
font-size: var(--tb-fs-md);
line-height: 1.7;
color: var(--tb-text-muted);
}
@@ -64,7 +64,7 @@
}
.tb-section-title {
margin: 0 0 10px;
font-size: 0.95rem;
font-size: var(--tb-fs-lg);
font-weight: 600;
color: var(--tb-text);
}
@@ -75,18 +75,18 @@
border-radius: var(--tb-radius-xs);
background: var(--tb-primary-weak);
color: var(--tb-primary);
font-size: 0.75rem;
font-size: var(--tb-fs-xs);
}
.tb-list {
margin: 0;
padding-left: 1.15em;
font-size: 0.9rem;
font-size: var(--tb-fs-md);
line-height: 1.9;
color: var(--tb-text);
}
.tb-changelog summary {
cursor: pointer;
font-size: 0.9rem;
font-size: var(--tb-fs-md);
font-weight: 600;
color: var(--tb-text);
list-style: none;
@@ -108,7 +108,7 @@
}
.tb-stat-num {
display: block;
font-size: 1.5rem;
font-size: var(--tb-fs-xl);
font-weight: 600;
line-height: 1.3;
color: var(--tb-text);
@@ -116,20 +116,20 @@
.tb-stat-label {
display: block;
margin-top: 2px;
font-size: 0.78rem;
font-size: var(--tb-fs-xs);
color: var(--tb-text-muted);
}
.tb-stats-meta {
margin: 14px 0 0;
font-size: 0.78rem;
font-size: var(--tb-fs-xs);
line-height: 1.8;
color: var(--tb-text-muted);
text-align: center;
}
@media (max-width: 480px) {
.tb-hero { padding: 28px 16px 24px; }
.tb-hero-title { font-size: 1.4rem; }
.tb-stat-num { font-size: 1.25rem; }
.tb-hero-title { font-size: var(--tb-fs-xl); }
.tb-stat-num { font-size: var(--tb-fs-lg); }
}
</style>
+1 -1
View File
@@ -17,7 +17,7 @@
.tb-followup-card {
border: 1px solid #e7e9ec;
border-left: 3px solid #b0b6bd;
border-radius: 8px;
border-radius: var(--tb-radius-sm);
padding: 12px 14px;
background: #fbfbfc;
}
+6 -6
View File
@@ -26,7 +26,7 @@
display: block;
overflow: hidden;
color: var(--tb-text);
font-size: 0.98rem;
font-size: var(--tb-fs-md);
font-weight: 600;
line-height: 1.45;
text-overflow: ellipsis;
@@ -39,11 +39,11 @@
gap: 7px;
margin-top: 8px;
}
.profile-vote-meta .uk-label { font-size: 0.72rem; line-height: 1.6; }
.profile-vote-meta .uk-label { font-size: var(--tb-fs-xs); line-height: 1.6; }
.profile-vote-action {
flex: 0 0 auto;
color: var(--tb-primary);
font-size: 0.82rem;
font-size: var(--tb-fs-md);
white-space: nowrap;
}
html[data-theme="dark"] .profile-vote-item { border-color: var(--tb-border); }
@@ -58,18 +58,18 @@
margin-top: 20px;
margin-bottom: 18px;
border: 1px solid var(--tb-border);
border-radius: 9px;
border-radius: var(--tb-radius-sm);
background: var(--tb-surface-2);
}
.profile-tab {
flex: 1;
border: 0;
border-radius: 6px;
border-radius: var(--tb-radius-xs);
padding: 9px 15px;
background: transparent;
color: var(--tb-text-muted);
cursor: pointer;
font-size: 0.9rem;
font-size: var(--tb-fs-md);
transition: background 0.2s ease, color 0.2s ease;
}
.profile-tab:hover { color: var(--tb-primary); }
+1 -1
View File
@@ -9,7 +9,7 @@
background: #eee;
color: #fff;
box-shadow: 0 0 5px 0 #ccc;
border-radius: 5px;
border-radius: var(--tb-radius-sm);
line-height: 0;
}
+17 -17
View File
@@ -24,7 +24,7 @@
min-width: 0;
}
.explore-name {
font-size: 1.2rem;
font-size: var(--tb-fs-lg);
font-weight: bold;
margin-bottom: 5px;
}
@@ -38,7 +38,7 @@
.explore-intro {
color: var(--tb-text-secondary);
margin-bottom: 10px;
font-size: 0.9rem;
font-size: var(--tb-fs-md);
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
@@ -61,7 +61,7 @@
align-items: center;
padding: 10px;
background: var(--tb-surface-2);
border-radius: 8px;
border-radius: var(--tb-radius-sm);
transition: background 0.2s;
}
.recommend-card:hover {
@@ -79,7 +79,7 @@
}
.recommend-name {
font-weight: bold;
font-size: 1rem;
font-size: var(--tb-fs-lg);
}
.recommend-name a {
text-decoration: none;
@@ -92,7 +92,7 @@
margin-top: 3px;
}
.recommend-tags .uk-label {
font-size: 0.7rem;
font-size: var(--tb-fs-xs);
padding: 0 5px;
}
.hot-votes-list {
@@ -109,7 +109,7 @@
min-width: 0;
padding: 16px 18px;
border: 1px solid var(--tb-border);
border-radius: 8px;
border-radius: var(--tb-radius-sm);
background: var(--tb-surface-2);
text-decoration: none;
transition: border-color 0.2s ease, background 0.2s ease, transform 0.2s ease;
@@ -127,7 +127,7 @@
display: block;
overflow: hidden;
color: var(--tb-text);
font-size: 0.98rem;
font-size: var(--tb-fs-md);
font-weight: 600;
line-height: 1.45;
text-overflow: ellipsis;
@@ -141,13 +141,13 @@
margin-top: 8px;
}
.hot-vote-meta .uk-label {
font-size: 0.72rem;
font-size: var(--tb-fs-xs);
line-height: 1.6;
}
.hot-vote-action {
flex: 0 0 auto;
color: var(--tb-primary);
font-size: 0.82rem;
font-size: var(--tb-fs-md);
white-space: nowrap;
}
html[data-theme="dark"] .hot-vote-item {
@@ -177,17 +177,17 @@
margin: 2px auto 20px;
max-width: 320px;
border: 1px solid var(--tb-border);
border-radius: 9px;
border-radius: var(--tb-radius-sm);
background: var(--tb-surface-2);
}
.explore-tab {
border: 0;
border-radius: 6px;
border-radius: var(--tb-radius-xs);
padding: 8px 15px;
background: transparent;
color: var(--tb-text-secondary);
cursor: pointer;
font-size: 0.9rem;
font-size: var(--tb-fs-md);
transition: background 0.2s ease, color 0.2s ease;
}
.explore-tab:hover { color: var(--tb-primary); }
@@ -209,12 +209,12 @@
.vote-random-btn {
flex: 0 0 auto;
border: 1px solid #dce9ff;
border-radius: 7px;
border-radius: var(--tb-radius-sm);
padding: 7px 11px;
color: var(--tb-primary);
background: #f5faff;
cursor: pointer;
font-size: 0.84rem;
font-size: var(--tb-fs-xs);
}
.vote-random-btn:hover { border-color: var(--tb-primary); background: #edf6ff; }
.all-votes-list { display: grid; gap: 10px; }
@@ -244,9 +244,9 @@
border-left: 4px solid var(--tb-primary);
padding: 15px 20px;
margin-bottom: 20px;
border-radius: 4px;
border-radius: var(--tb-radius-xs);
color: var(--tb-text);
font-size: 0.9rem;
font-size: var(--tb-fs-md);
line-height: 1.6;
}
.explore-notice strong {
@@ -258,7 +258,7 @@
align-items: center;
gap: 6px;
padding: 5px 14px;
font-size: 0.85rem;
font-size: var(--tb-fs-md);
line-height: 1.4;
color: var(--tb-primary);
background: transparent;
+10 -10
View File
@@ -36,7 +36,7 @@
background: #fff;
padding: 20px;
border: 1px solid var(--tb-border);
border-radius: 8px;
border-radius: var(--tb-radius-sm);
text-align: center;
}
.preview-card .qrcode-wrapper {
@@ -77,13 +77,13 @@
padding: 4px;
margin-bottom: 18px;
border: 1px solid var(--tb-border);
border-radius: 9px;
border-radius: var(--tb-radius-sm);
background: var(--tb-surface-2);
}
.profile-tab {
flex: 1;
border: 0;
border-radius: 6px;
border-radius: var(--tb-radius-xs);
padding: 9px 8px;
background: transparent;
color: var(--tb-text-muted);
@@ -114,7 +114,7 @@
gap: 12px;
padding: 16px;
border: 1px solid var(--tb-border);
border-radius: 8px;
border-radius: var(--tb-radius-sm);
background: #fff;
}
.feat-card-head {
@@ -129,7 +129,7 @@
font-size: 0.72rem;
line-height: 1.6;
padding: 0 8px;
border-radius: 2px;
border-radius: var(--tb-radius-xs);
}
.feat-status.is-open { background: #32d296; color: #fff; }
.feat-status.is-closed { background: #f0506e; color: #fff; }
@@ -201,7 +201,7 @@
width: 130px;
padding: 4px 8px;
border: 1px solid var(--tb-border);
border-radius: 4px;
border-radius: var(--tb-radius-xs);
}
html[data-theme="dark"] .feat-day {
border-color: var(--tb-border);
@@ -260,7 +260,7 @@
gap: 6px;
padding: 6px 8px;
border: 1px solid var(--tb-border);
border-radius: 4px;
border-radius: var(--tb-radius-xs);
background: #fff;
cursor: text;
}
@@ -270,7 +270,7 @@
align-items: center;
gap: 6px;
padding: 2px 8px;
border-radius: 3px;
border-radius: var(--tb-radius-xs);
background: var(--tb-primary);
color: #fff;
font-size: 0.875rem;
@@ -317,7 +317,7 @@
.tb-pcard {
background: var(--tb-surface);
border: 1px solid var(--tb-border);
border-radius: 10px;
border-radius: var(--tb-radius-sm);
padding: 13px 14px 8px;
margin-bottom: 12px;
}
@@ -369,7 +369,7 @@
width: 267px;
max-width: 100%;
aspect-ratio: 16 / 9;
border-radius: 8px;
border-radius: var(--tb-radius-sm);
}
.tb-media-frame img {
width: 100%;
+11 -11
View File
@@ -9,18 +9,18 @@
margin: 6px auto 20px;
max-width: 320px;
border: 1px solid var(--tb-border);
border-radius: 9px;
border-radius: var(--tb-radius-sm);
background: var(--tb-surface-2);
}
.qlist-tab {
flex: 1 1 0;
border: 0;
border-radius: 6px;
border-radius: var(--tb-radius-xs);
padding: 8px 15px;
background: transparent;
color: var(--tb-text-secondary);
cursor: pointer;
font-size: 0.9rem;
font-size: var(--tb-fs-md);
transition: background 0.2s ease, color 0.2s ease;
}
.qlist-tab:hover { color: var(--tb-primary); }
@@ -48,7 +48,7 @@
display: block;
overflow: hidden;
color: var(--tb-text);
font-size: 0.98rem;
font-size: var(--tb-fs-md);
font-weight: 600;
line-height: 1.45;
text-overflow: ellipsis;
@@ -62,8 +62,8 @@
gap: 7px;
margin-top: 8px;
}
.hot-vote-meta .uk-label { font-size: 0.72rem; line-height: 1.6; }
.hot-vote-action { flex: 0 0 auto; color: var(--tb-primary); font-size: 0.82rem; white-space: nowrap; }
.hot-vote-meta .uk-label { font-size: var(--tb-fs-xs); line-height: 1.6; }
.hot-vote-action { flex: 0 0 auto; color: var(--tb-primary); font-size: var(--tb-fs-md); white-space: nowrap; }
/* 提问列表右上角:状态标签与操作按钮统一尺寸(等宽等高、垂直居中、完全对齐)。
每个元素显式带 .qlist-pill 类,选择器挂在 .qlist-pills 容器下提升优先级,
避免浏览器对 <button> 的默认样式或 UIkit .uk-label 造成差异。
@@ -77,10 +77,10 @@
min-width: 40px;
padding: 0 8px;
box-sizing: border-box;
font-size: 0.72rem;
font-size: var(--tb-fs-xs);
line-height: 1;
white-space: nowrap;
border-radius: 2px;
border-radius: var(--tb-radius-xs);
border: 0;
vertical-align: middle;
}
@@ -133,13 +133,13 @@
.qlist-stat {
background: #fff;
border: 1px solid var(--tb-border);
border-radius: 9px;
border-radius: var(--tb-radius-sm);
padding: 8px 6px;
text-align: center;
}
.qlist-stat .qlist-stat-num {
display: block;
font-size: 1.15rem;
font-size: var(--tb-fs-lg);
font-weight: 700;
line-height: 1.15;
color: #222;
@@ -147,7 +147,7 @@
.qlist-stat .qlist-stat-lbl {
display: block;
margin-top: 2px;
font-size: 0.7rem;
font-size: var(--tb-fs-xs);
color: #888;
line-height: 1.15;
}
+1 -1
View File
@@ -24,7 +24,7 @@
padding: 12px 14px;
margin-bottom: 8px;
border: 1px solid var(--tb-border);
border-radius: 8px;
border-radius: var(--tb-radius-sm);
background: var(--tb-surface);
cursor: pointer;
transition: border-color 0.2s ease, background 0.2s ease;