98.css:用纯 CSS 复刻 Windows 98 界面

查看原文 HN 讨论

文章摘要

98.css 是 Jordan Scales(jordanscales)做的一套 CSS 设计系统,目标是在网页上高保真复刻 Windows 98 的用户界面。它的核心特点是:纯 CSS,不含任何 JavaScript,完全依赖语义化 HTML,因此与框架无关——React、原生 JS 或任何其他技术栈都能直接用。引入方式极其简单,一行 <link rel="stylesheet" href="https://unpkg.com/98.css"> 即可,也支持 npm install 98.css。整个库 gzip 后体积极小,MIT 协议开源。

它覆盖的组件相当完整:按钮(含按下态)、复选框、单选按钮、文本输入框、滑块(trackbar)、下拉框、分组框(group box)、带标题栏和状态栏的窗口、树视图(tree view)、选项卡、表格、进度条,以及各类 field border / status field border 边框样式。文档为每个组件都提供了可复制的代码示例,并且强调可访问性——要求使用语义化 HTML 和正确关联的 label。所有样式都可以被覆盖,同时保持整体的 Win98 观感。有一个细节值得注意:官方主页上的选项卡示例点击是无效的,因为切换 tab 需要 JavaScript(作者的建议是自行添加代码,把 [aria-selected=true] 属性加到激活的 tab 上)。

技术实现上最受称赞的是那套通过 borderbox-shadow 层叠出来的斜面(beveled)立体效果——Win95/98 的按钮、窗口边框、选项卡、输入框那种微妙的 3D 凹凸暗示,全部靠纯 CSS 边框技巧还原,包括标题栏上的蓝色渐变。

这个项目已经是 HN 的「常客」:2020 年(838 分)、2022 年(606 分)、2024 年(471 分)、2026 年(541 分)各上过一次首页,评论里有人开玩笑说「2028 年再见」。作者本人在这次讨论中现身,说明了它的来历:这是他的倦怠恢复项目(burnout recovery project),在他心里占有特殊位置。他还坦言自己早就不再开发 98.css 了,唯一的贡献是盯着仓库看有没有高质量 PR——如果有,他会快速扫一眼作者的主页确认对方不会在用户机器上挖矿,然后直接给对方完整的提交权限:「看着不错,你自己合了吧。」

HN 评论精华