【免费下载链接】html-effectiveness
HTML effectiveness examples
html-effectiveness 是一个开源项目,汇集了 20 个单文件 HTML 示例——每个文件都不需要构建、不依赖任何框架,双击就能在浏览器里打开。本文带你拆解它的技术底座:如何用CSS 变量统一管理设计、用内联 SVG把图画进 HTML、用原生 JavaScript几十行代码做出交互,从而让"一个 .html 文件就是一整个产品"成为现实。
先看它长什么样:一个零依赖的单文件画廊
打开仓库里的 index.html,你会看到一个分类索引页:探索规划、代码评审、设计系统、原型、幻灯片、研究报告、自定义编辑器……20 张卡片对应 20 个独立页面。
它的使用方式简单到几乎没有成本:
git clone https://gitcode.com/gh_mirrors/htm/html-effectiveness # 然后直接用浏览器打开 index.html 或任意编号文件没有npm install,没有打包步骤,没有node_modules。这正是它想证明的事:HTML 本身就是一种足够强的交付格式。那么问题来了——一个没有外部资源的文件,凭什么既美观、又可交互、还能"画"图?答案就是下面三大件。
支柱一:CSS 变量,把设计决策收敛成一组"设计令牌"
🎨 每一个示例文件都以同一段:root声明开头,例如 05-design-system.html:
:root { --ivory: #FAF9F5; --slate: #141413; --clay: #D97757; --olive: #788C5D; --serif: ui-serif, Georgia, serif; --sans: system-ui, -apple-system, sans-serif; }这就是 **CSS 自定义属性(CSS variables)**的经典用法:颜色、字体、圆角、边框先定义成带名字的"令牌"(token),页面里所有地方只写var(--clay)这样的引用,而不是硬编码色值。
这套做法带来三个直接好处:
- 20 个文件共享同一套视觉语言。从 index.html 到 11-status-report.html,每个文件各自复制这份令牌表,页面之间天然风格统一,却互不依赖;
- 改一处,全站生效。想换主题色,只需改
:root里一行; - JS 也能参与设计。最典型的是动画沙盒 07-prototype-animation.html:页面声明了一个缓动令牌
--ease,点击不同缓动按钮时,JS 只调用一行root.style.setProperty('--ease', btn.dataset.ease)(见 L438-L453),所有引用该变量的过渡动画立刻同步变化——改一个变量,整页动起来。
技巧速记:把"会变化的设计决策"(颜色、间距、字体、缓动)抽成变量,把"不会变的结构"留在普通 CSS 里,单文件页面的可维护性会好得多。
支柱二:内联 SVG,把图片变成 HTML 的一部分
🖌️ 常规项目里插图要保存成.png/.jpg文件再引用,单文件页面没有这个条件。html-effectiveness 的解法是直接把<svg>标签写进 HTML。
统计整个仓库:有 10 个文件包含内联<svg>,其中 index.html 一口气嵌入了 20 张矢量缩略图——每张卡片的小图标其实都是可缩放的矢量画,hover 时还能通过 CSS 类切换颜色(L274-L289),这是位图图片做不到的。
内联 SVG 在这个项目里有三种玩法:
- 装饰与缩略图:index.html 的 20 张卡片缩略图,尺寸随网格自动伸缩,缩放不糊;
- 可下载的独立插图:10-svg-illustrations.html 为每幅插图都内嵌了独立的
<style>块,点"下载"时 JS 用XMLSerializer把 SVG 序列化、打包成 Blob 触发下载(L476-L490),导出的.svg文件自带样式、可单独使用; - JS 动态绘制的"活"图:15-research-concept-explainer.html 用 JS 算出一圈节点的角度,实时往 SVG 里画线和圆点,把"一致性哈希"变成可以拖动滑杆增删节点的交互环;13-flowchart-diagram.html 则把部署流程图画成可点击节点的真流程图。
对新手来说,内联 SVG 最大的好处是:它既是图,又是 DOM。能被 CSS 选中、能被 JS 改写、能被序列化导出,位图做不到这些。
支柱三:原生 JS,每页只写几十行
⚡ 14 个示例文件包含<script>,全部是不引任何库的原生 JavaScript,而且每页脚本通常不超过百行。挑三个最有代表性的:
- 幻灯片 = 滚动 + 观察器。09-slide-deck.html 的每页就是一段
<section>,CSS 用scroll-snap(L36-L52)让页面"吸附"对齐;JS 部分仅约 25 行(L563-L590):监听方向键触发scrollIntoView,再用IntersectionObserver判断当前页并更新页码——一套可翻页的 PPT 就此诞生; - 拖拽 = 平台自带 API。08-prototype-interaction.html 和工单分诊板 18-editor-triage-board.html 都基于 HTML5 原生 Drag and Drop 事件(
dragstart/dragover/drop)实现卡片拖放,配合"复制为 Markdown"的导出按钮,一个临时编辑器就做好了; - 剪贴板 = 三行代码。19-editor-feature-flags.html 用
navigator.clipboard.writeText()把改动过的配置项复制成 diff 文本,配合按钮反馈,实现"调完即带走"。
可以看到一个清晰模式:能用 CSS 解决的(布局、吸附、过渡)绝不用 JS;必须用 JS 的,只调用浏览器已经提供的 API。所以整站找不到一行import。
一张表看懂:每个示例用了哪些技术
| 分类 | 示例文件 | 主要技术 |
|---|---|---|
| 探索规划 | 01、02、16 | CSS 变量 + 内联 SVG |
| 代码评审 | 03、17、04 | CSS 变量、锚点跳转、SVG 模块图 |
| 设计 | 05、06 | CSS 变量令牌 + 色板 |
| 原型 | 07、08 | 变量驱动动画、原生拖拽 |
| 图表 | 10、13 | 内联 SVG、可点击节点 |
| 幻灯片 | 09 | scroll-snap + IntersectionObserver |
| 研究讲解 | 14、15 | 折叠区、JS 动态画 SVG |
| 报告 | 11、12 | 纯 CSS 时间线、SVG 小图表 |
| 自定义编辑器 | 18、19、20 | 拖拽、剪贴板 API、实时渲染 |
(更多细节可参考仓库的 README.md 与 CONTRIBUTING.md。)
新手能直接搬走的三个套路
- 先写令牌,再写页面:开工前把颜色/字体/圆角/间距定义进
:root,之后全部用var()引用。这是让一堆单文件页面保持统一视觉的最省力方式; - 图形尽量内联成 SVG:需要缩放、变色、被 JS 控制、可导出的图,都写成
<svg>而不是图片文件,单文件交付立刻成立; - 交互只碰平台 API:滚动吸附、
IntersectionObserver、原生拖拽、Clipboard API、XMLSerializer——这些浏览器白送的能力,覆盖了绝大多数"小工具级"需求,让 JS 保持在几十行内。
html-effectiveness 用 20 个文件证明了同一件事:不需要构建工具链,CSS 变量负责设计、内联 SVG 负责图形、原生 JS 负责交互,一个 .html 文件就能撑起完整体验。下次想做个一次性的小页面、演示稿或内部小工具时,不妨先翻翻这个仓库——很多答案就在单文件里。
【免费下载链接】html-effectiveness
HTML effectiveness examples
相关推荐
html-effectiveness实现原理深度剖析:零构建、零依赖,单HTML文件打造专业级工件的7大技巧
html effectiveness实现原理深度剖析:零构建、零依赖,单HTML文件打造专业级工件的7大技巧 html effectiveness 是一个由 A
WeasyPrint深入解析:从HTML/CSS到高质量PDF的生成原理
WeasyPrint深入解析:从HTML/CSS到高质量PDF的生成原理 为什么选择WeasyPrint? 在当今数字化时代,自动文档生成仍然是许多应用的核心需
后端文档Satori 完整技术指南:HTML/CSS 到 SVG 的高性能转换原理与实战
Satori 完整技术指南:HTML/CSS 到 SVG 的高性能转换原理与实战 本指南基于 README.md https://link.gitcode.co
前端图像处理
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考