文章摘要
98.css是一个CSS设计系统,用于构建类似Windows 98界面的复古UI。它依赖语义化HTML,不包含JavaScript,兼容各种前端框架,可通过unpkg或npm安装使用。
文章总结
好的,这是根据您提供的英文内容,用中文重新陈述的文章主要内容,保留了关键细节,并删减了与主题无关的部分。
98.css 设计系统:用 CSS 复刻 Windows 98 界面
98.css 是一个 CSS 库,旨在帮助开发者构建外观与 Windows 98 系统一致的网页界面。该库的核心设计理念是使用语义化的 HTML 标签,例如使用 <button> 来创建按钮,并为输入元素提供对应的 <label> 标签,以确保良好的可访问性。
核心特性:
- 纯 CSS 方案:98.css 不包含任何 JavaScript,仅通过 CSS 样式化 HTML 元素,因此可以兼容任何前端框架。
- 高度可定制:开发者可以在保持 98.css 外观风格的前提下,自由覆盖元素的样式,例如调整按钮的内边距或为输入标签添加颜色。
- 快速上手:可以通过 CDN 链接(如 unpkg)或 npm 包管理器(
npm install 98.css)快速引入。
组件详解:
按钮 (Button):标准按钮尺寸为 75px 宽、23px 高,具有凸起的外边框和内边框。通过添加
default类可以应用额外样式,用于指示窗口的默认操作。按钮被点击时,边框会变为凹陷状态。禁用按钮的标签会呈现“褪色”效果。按钮获得焦点时,其内容区域内 4px 处会显示一个虚线边框。复选框 (Checkbox):复选框由一个凹陷的面板和一个选中时出现的“勾选”图标组成。使用时,必须将
<input>的id与<label>的for属性关联。当需要分组排列多个复选框时,应将每个输入项包裹在带有field-row类的容器中,以保证间距一致。选项按钮 (OptionButton / 单选按钮):通过
<input type="radio">实现。通过为同一组内的单选按钮设置相同的name属性来分组。同样,分组时建议使用field-row类容器。分组框 (GroupBox):使用
<fieldset>标签实现,用于将一组控件组织在一起。它拥有凹陷的外边框和凸起的内边框。可以通过在<fieldset>内放置<legend>元素来添加标签。文本框 (TextBox):通过
<input type="text">实现。同样需要配合<label>标签使用。使用field-row-stacked类可以将标签置于输入框上方。多行文本输入则使用<textarea>元素。滑块 (Slider):通过
<input type="range">实现。可以使用has-box-indicator类将默认的滑块指示器替换为方块指示器。将滑块包裹在带有is-vertical类的<div>中,可以使其垂直显示。下拉框 (Dropdown):使用
<select>和<option>元素实现。默认选中第一个选项,可以通过为某个<option>添加selected属性来更改默认值。窗口 (Window):
- 标题栏 (Title Bar):由
title-bar、title-bar-text和title-bar-controls三个类构建。关闭按钮使用aria-label属性来标识其功能,并对应有相应的样式类。通过添加inactive类可以使标题栏呈现“非活动”状态。 - 窗口内容:使用
window类为标题栏提供容器,并赋予凸起的外边框和内边框。窗口内容区域使用window-body类。 - 状态栏 (Status Bar):使用
status-bar类,其内部的文本子元素使用status-bar-field类。
- 标题栏 (Title Bar):由
树状视图 (TreeView):使用
<ul>元素并添加tree-view类。通过嵌套<ul>元素(无需额外类)来创建树形结构,并显示虚线边框和缩进。可折叠的节点通过将子列表包裹在<details>元素内实现。标签页 (Tabs):使用
<menu>元素并设置role="tablist"属性,其子项<li>设置role="tab"属性。通过 JavaScript 管理标签页的切换,为当前激活的标签添加aria-selected="true"属性。添加multirows类可以创建多行标签。表格视图 (TableView):使用
<table>元素,并将其包裹在带有sunken-panel类的<div>中,以提供正确的边框和溢出容器。为<table>添加interactive类可在鼠标悬停时显示指针光标。为表格行添加highlighted类可表示选中状态。进度指示器 (Progress Indicator):有两种类型:实心(默认)和分段式(需添加
segmented类)。字段边框 (Field borders):提供了
field-border、field-border-disabled和status-field-border三个通用类,用于为工作区或动态内容等区域应用相应的边框和背景色样式。
许可与贡献:
98.css 采用 MIT 许可证。欢迎在 GitHub 上提交问题或拉取请求(Pull Request),项目维护者乐于提供代码审查,并希望将该项目打造成一个有趣的开源贡献起点。
评论总结
根据评论内容,总结如下:
主要观点与论据:
高度认可与怀旧情感(评分高,如2024年471分、2022年606分、2020年838分):
- 评论者普遍对纯CSS复刻Win98界面表示喜爱,认为其“非常真实,几乎精确到像素”(bhouston: "Very authentic almost down to the pixel. I love it!")。
- 怀旧情绪强烈:“看到这个让我莫名开心,怀旧真是有趣”(cush: "Seeing this makes me unreasonably happy. Funny how nostalgia is")。
技术赞赏:
- 纯CSS实现无JavaScript的界面效果令人印象深刻:“纯CSS无JS,边框和阴影技巧完美再现Win98斜面效果”(sshworld: "Impressie that this is pure CSS with no JavaScript. The border and box-shadow tricks... are really well done!")。
- 作者自述该项目是“倦怠恢复项目”(jordanscales: "This was my burnout recovery project and holds a place near and dear to my heart")。
UI设计反思:
- 对比现代UI,评论者认为Win98/XP的灰色按钮设计更清晰:“现代UI把灰色按钮直接隐藏,反而更令人困惑”(zemo: "the fact that we removed grayed out buttons... is one of the more confusing UI trends")。
- 认为键盘鼠标UI自XP以来改进不大:“现代键盘鼠标UI并未真正改进,创新主要在触屏设备”(lambdaone: "modern keyboard-and-mouse UIs have not really improved that much... All the real innovation has been on touchscreen devices")。
改进建议与细节批评:
- 缺少分组框、单选按钮、复选框和下拉菜单(bhouston: "windows UIs loved group boxes and radio buttons and checkboxes... the dropdown is missing")。
- 标签页示例中点击后位置未随机变化(pxtail: "tabs in the multirow tabs example do not change position randomly as they should")。
平衡性说明: - 正面评价占主导,强调怀旧价值和技术实现。 - 负面反馈集中于功能缺失和细节不完美,但语气温和,多为建设性建议。 - 评论者ranger_danger提供了大量相关复古CSS框架链接,显示社区对此类项目的广泛兴趣。