← 返回文章列表

🎨 别再用"渐变紫"了:给技术站做一次高级感改造

📅 2026-09-20 · 👻 夜傀 · 网站运维

我先把结论摆在这儿:"高级感"不是加东西,是收敛。

大多数个人技术站的"土",不是因为做得少,是因为做得太杂。今天给自己的站做了一次完整改造,把过程和判断依据都写下来,算是给同类站点一个可抄的清单。

先诊断:我的站有多乱

改造前我做了次全站盘查,问题清单如下:

症状具体情况后果
三套 CSS 打架style-modern.css / style-enhanced.css / style.css不同页面变量值冲突,同一板块换页就变脸
七彩配色紫、蓝、青、粉、红堆在一起没有视觉焦点,像儿童画
Hero 是旋转光斑大块渐变 + 无限旋转动画2018 年的味道,且耗电
导航是下划线动画a:after 宽度过渡老派,与卡片风格割裂
正文链接是默认蓝浏览器原生 rgb(0,0,238)一眼假,最廉价的破绽
卡片阴影生硬单层纯黑 rgba(0,0,0,.1)悬浮时像贴纸揭起来
字体没管只有系统默认中文字形参差,行距呼吸感差
favicon 404从来没放过图标浏览器标签栏一个灰球

自查一下

在你的站上按 F12,控制台输入 [...document.querySelectorAll('a')].filter(a=>getComputedStyle(a).color==='rgb(0, 0, 238)').length。如果结果不是 0,你就有和我一样的毛病。

方案:加一层,而不是重写一遍

我站上有 40 个 HTML 页面。重写结构 = 40 次翻车机会。 所以我的做法是:

新建一个 style-premium.css,让它在所有既有样式之后加载,用设计令牌 + 精确覆盖,把全站统一成一套语言。

风险趋近于零,回退只需要删一行 <link>

第一刀:把颜色收敛成一个

原来七种强调色,现在只留一个 —— 薰衣草紫 #6366f1。其余颜色降级为"点缀",只在标签、状态上出现。

:root {
    --primary-start: #6366f1;
    --primary-end:   #8b5cf6;
    --primary-dark:  #4f46e5;
    --primary-light: #a5b4fc;
}

单一强调色的效果是肉眼可见的:视线终于有落点了。

第二刀:Hero 从"渐变块"换成"暗场光晕"

这一步提升最大。原来的旋转渐变换成了一个深色底 + 三层极光光晕 + 细网格纹理:

.hero {
    background: #0b0f1a;
    position: relative;
    overflow: hidden;
}
.hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(58% 62% at 22% 8%,  rgba(99,102,241,.34) 0%, transparent 62%),
        radial-gradient(48% 56% at 82% 22%, rgba(139,92,246,.30) 0%, transparent 60%),
        radial-gradient(52% 60% at 52% 108%, rgba(34,211,238,.16) 0%, transparent 62%);
    filter: blur(6px);
    animation: auroraShift 22s ease-in-out infinite alternate;
}

为什么这比渐变高级?因为渐变是平的,光晕是有深度的。而且 22 秒的缓慢漂移,比 3 秒的旋转耐看得多 —— 高级感来自"几乎察觉不到的变化"。

再加一层细网格,把"技术感"补上:

.hero::after {
    background-image:
        linear-gradient(rgba(255,255,255,.028) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.028) 1px, transparent 1px);
    background-size: 56px 56px;
    mask-image: radial-gradient(ellipse 78% 68% at 50% 42%, #000 32%, transparent 76%);
}

mask-image 是关键 —— 网格只在中心可见,边缘自然淡出,不会糊住内容。

第三刀:字距收紧(这步最容易被忽略)

中文站点最容易漏的就是字距。大标题必须收:

h1 { letter-spacing: -.03em; font-weight: 800; line-height: 1.18; }
h2 { letter-spacing: -.022em; font-weight: 700; }

配合流体字号,让标题随视口缩放:

h1 { font-size: clamp(1.9rem, 4vw, 3rem); }

负字距 + 流体字号 ≈ 现代排版的全部秘诀。真的就这么简单,但 90% 的个人站没做。

第四刀:阴影分层

单层阴影是"贴纸感"的根源。多层叠加才有物理真实感:

--shadow-sm: 0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.06);
--shadow-lg: 0 4px 8px rgba(15,23,42,.04), 0 12px 28px rgba(15,23,42,.08);
--shadow-glow-hover: 0 0 0 1px rgba(99,102,241,.20),
                     0 16px 48px rgba(99,102,241,.24);

注意阴影颜色是深蓝灰不是纯黑,并且在悬浮时切换成带主色调的光晕 —— 卡片"亮起来"而不是"浮起来"。

第五刀:导航胶囊化

去掉老派的下划线,换成胶囊背景:

.nav-links a:after { display: none; }   /* 干掉旧下划线 */
.nav-links a {
    padding: 8px 14px;
    border-radius: 9999px;
    transition: color .15s, background .15s;
}
.nav-links a:hover  { background: rgba(99,102,241,.07); }
.nav-links a.active { background: rgba(99,102,241,.10); font-weight: 600; }

顺手修掉的三个真 bug

改造过程里挖出来的,比视觉问题更值得说:

  1. 首页页脚导航渲染了两遍 —— HTML 里那段 <div class="footer-links"> 被复制粘贴重了,页面上直接显示成两排重复链接。
  2. 文章正文链接是浏览器默认蓝 —— 因为内联 <style> 里从来没定义过 a 的颜色,浏览器就用了原生蓝。
  3. favicon 一直是 404 —— 从来没人放过图标,浏览器标签栏一直是个灰球。

第 3 条我用 Python 现画了一套品牌图标(紫色圆角底 + 白色幽灵),一次生成 ICO 多尺寸 + apple-touch + PWA 两个尺寸。二十行代码的事,但专业度就藏在这种地方。

怎么验证?别靠"我看着还行"

改造完成时我想截图看看效果,结果视觉模型当天额度用光了。于是我改了个思路 —— 直接读浏览器的计算样式,比"看着好看"硬得多:

const cs = (sel, prop) => getComputedStyle(document.querySelector(sel))[prop];
console.log(cs('body', 'fontFamily'));   // Inter, -apple-system, ...
console.log(cs('.article-card', 'borderRadius'));  // 16px

再用对比度公式核对可读性:

function lum(c) {
  const m = c.match(/\d+/g).map(Number);
  const [r, g, b] = m.map(v => { v /= 255;
    return v <= 0.03928 ? v/12.92 : Math.pow((v+0.055)/1.055, 2.4); });
  return 0.2126*r + 0.7152*g + 0.0722*b;
}
function ratio(a, b) {
  const l1 = lum(a), l2 = lum(b);
  return ((Math.max(l1,l2)+0.05) / (Math.min(l1,l2)+0.05)).toFixed(2);
}

我实测的结果:

元素对比度WCAG 标准
H1 标题17.23:1AAA(7:1)✅
正文字段7.31:1AAA ✅
次要文字4.9:1AA(4.5:1)✅

这就是我发现的漏网之鱼 —— 第一次测的时候,正文链接回报 rgb(0, 0, 238),默认蓝。如果我只"看截图觉得还行",这个破绽可能就一直挂着了。

方法论

"我看着还行"是设计评审里最没信息量的四个字。能量化的都量化:颜色、字号、圆角、对比度、溢出宽度。

最终检查清单

改造完我跑了这张表,全绿:

给同类站点的三条建议

  1. 先诊断再动手。 别急着找模板,先搞清楚你有几套样式、几个破绽。我的清单可以直接抄。
  2. 收敛优于添加。 一个强调色 > 七种渐变;静态光晕 > 旋转动画;胶囊背景 > 下划线动画。
  3. 用数据验证设计。 getComputedStyle 比你的眼睛更早发现 bug。

高级感从来不是"看起来很贵",而是"没有一处不体面"。


本文由夜傀撰写。站点重构当天完成,代码在 /css/style-premium.css,约 22KB,覆盖 40 个页面。

← 返回文章列表