Emmet: Emmet 是什么:HTML/CSS 提速的终极简写引擎

Emmet 就像 HTML 和 CSS 的"输入法快捷短语"——敲几个字母,按下 Tab,瞬间展开成完整代码。

1. 你将学到


2. 一个前端开发者的真实故事

(1) 痛点:手写 HTML 太慢

Alice 是一名前端开发者,最近在改公司官网的首页。每次写一个导航条,她都要重复输入 30 多行 HTML:ul 里面套 5 个 li,每个 li 里再嵌一个 a。改完导航,轮播图又是 6 张 div,每张里面再放图片和文字。一天下来,敲键盘敲到手指发酸,120 行 HTML 页面她写了整整 40 分钟。改完页面,又得给 CSS 写 margin: 10px 20pxpadding: 5pxfont-size: 16px,每一行都要写完整的属性名和分号。Alice 心想:写代码的时间,一半都花在"打字"上了,能不能让编辑器自己补全?

(2) Emmet 的解法

Emmet 的解法很简单:把常用 HTML/CSS 写法压缩成简写,编辑器看到简写就自动展开成完整代码。Alice 学会 Emmet 之后,同样写那个 30 行的导航条,她只需要敲 16 个字符:

TEXT 📖 仅展示
ul.nav>li.item*5>a{链接 $}

按下 Tab 键,编辑器瞬间展开成 30 行完整 HTML。再写 6 张轮播图?一行 div.slider>div.slide*6>img 搞定。写 CSS?m10-20 自动变成 margin: 10px 20pxfz16 自动变成 font-size: 16px。原本 40 分钟的页面,Alice 12 分钟就写完了。

(3) 收益

Emmet 给前端开发者带来的收益是立竿见影的:HTML 编写速度提升 3-5 倍,CSS 编写速度提升 2-3 倍;手写时容易漏掉闭合标签、属性引号的情况,Emmet 自动生成则基本为零;更重要的是,开发者能把精力放在结构和样式设计上,而不是重复敲键盘。学习 Emmet 的成本也不高:本课 5 分钟建立第一印象,后续 17 课平均每课 5-10 分钟即可掌握一个核心知识点。Alice 学完全部 18 课之后,写一个完整的电商首页,从原来的 2 小时缩短到 30 分钟以内。


3. Emmet 的核心定义

Emmet(前身为 Zen Coding)是一款面向 HTML 和 CSS 的简写展开引擎,最早由 Sergey Chikuyonok 在 2009 年发布,2013 年正式更名为 Emmet。它通过解析类似 CSS 选择器的缩写字符串,实时展开为完整的 HTML 或 CSS 代码,并集成在 VSCode、WebStorm、Sublime Text 等主流编辑器中。

维度 手写 HTML Emmet 简写
时间 30 行导航约 8 分钟 30 行导航约 30 秒
错误率 漏闭合标签、引号错位 自动生成,零错误
学习曲线 直觉,但重复繁琐 需要记忆 8 个核心操作符
复用性 每次重写 一次记住,反复使用
编辑器依赖 任意编辑器 需要编辑器集成支持
💡 提示: Emmet 不是一种新的编程语言,也不是框架。它是一个编辑器插件,底层就是把"简写字符串"翻译成"完整代码"。


4. Emmet 能做什么

Emmet 的能力可以分为四类:HTML 简写、CSS 简写、编辑器操作、综合应用。下面我们分别看几个例子,建立直观印象。

(1) HTML 简写

HTML 简写是 Emmet 最常用的功能。开发者输入一段类似 CSS 选择器的缩写,编辑器按 Tab 键后立即展开为完整的 HTML 标签树。

▶ 示例:基础标签简写(难度⭐)

缩写:

HTML
ul.nav>li.item*5>a{链接 $}

展开:

HTML
<ul class="nav">
  <li class="item"><a href="">链接 1</a></li>
  <li class="item"><a href="">链接 2</a></li>
  <li class="item"><a href="">链接 3</a></li>
  <li class="item"><a href="">链接 4</a></li>
  <li class="item"><a href="">链接 5</a></li>
</ul>

输出:

TEXT 📖 仅展示
浏览器渲染一个无序列表,包含 5 个带链接的列表项,`$` 符号被自动替换为递增序号 1-5。

(2) CSS 简写

CSS 简写是 Emmet 的另一大核心能力。Emmet 借鉴了 CSS 属性名的首字母,把常用的属性和值压缩成短字符串。

▶ 示例:CSS 简写预览(难度⭐)

缩写:

CSS
m10-20

展开:

CSS
margin: 10px 20px;

缩写:

CSS
p10 fz16

展开:

CSS
padding: 10px;
font-size: 16px;

输出:

TEXT 📖 仅展示
`m` 是 `margin` 的首字母,`10-20` 表示上下 10px、左右 20px;`p` 是 `padding` 的简写,`fz` 是 `font-size` 的缩写。详细 CSS 简写规则将在第 11-13 课深入讲解。

(3) 编辑器操作

Emmet 不只是"输入简写 → 展开代码",它还提供一组编辑器操作(Actions),让光标跳转、代码包裹、平衡匹配变得一键可达。

▶ 示例:展开缩写动作(难度⭐)

在 VSCode 中打开任意 .html 文件,输入 div.container>ul>li*3 后:

BASH
# Step 1: Type the abbreviation
div.container>ul>li*3

# Step 2: Press Tab (default keybinding)
# Triggers the "Expand Abbreviation" action

# Step 3: The editor expands it to:
# <div class="container">
#   <ul>
#     <li></li>
#     <li></li>
#     <li></li>
#   </ul>
# </div>

# Step 4: The cursor jumps to the first <li></li>
# You can start typing immediately

输出:

TEXT 📖 仅展示
一行简写瞬间变成 6 行完整 HTML,光标定位到第一个可编辑位置,无需手动点击。详细 Actions 用法将在第 14-16 课展开。

(4) 综合演示

把 HTML 简写 + CSS 简写 + 编辑器操作组合起来,可以一行写完一个完整的登录表单。下面展示一个简化的综合案例:

▶ 示例:一个完整登录表单(难度⭐⭐)

HTML 缩写:

HTML
form#login>(input[type=text name=user placeholder="用户名"])+(input[type=password name=pwd placeholder="密码"])+(button.btn{登录})

展开:

HTML
<form id="login">
  <input type="text" name="user" placeholder="用户名">
  <input type="password" name="pwd" placeholder="密码">
  <button class="btn">登录</button>
</form>

配套 CSS 缩写:

CSS
#login{w400 bg:#f5f5f5 p20}
.btn{bg:#3b82f6 c:#fff bd:none p10-20 cur:pointer}

展开:

CSS
#login {
  width: 400px;
  background: #f5f5f5;
  padding: 20px;
}
.btn {
  background: #3b82f6;
  color: #fff;
  border: none;
  padding: 10px 20px;
  cursor: pointer;
}

输出:

TEXT 📖 仅展示
浏览器渲染一个 400px 宽的登录卡片,包含两个输入框和一个蓝色登录按钮。从缩写输入到完整可用的表单,仅需 2 步(HTML 一行 + CSS 一行),约 5 秒。

5. 学习路径预览

本教程共 18 课,分为 6 个阶段:

阶段 课数 核心内容 难度
Phase 1 入门 3 课 Emmet 概念、编辑器集成、基础标签简写(本阶段)
Phase 2 HTML 简写 5 课 嵌套 >、爬升 ^、乘法 *、分组 ()、ID/Class、属性与编号 ⭐-⭐⭐
Phase 3 文本与高级 2 课 文本填充、Lorem Ipsum 占位、隐式标签细节 ⭐-⭐⭐
Phase 4 CSS 简写 3 课 单位推导、供应商前缀、渐变与模糊匹配 ⭐⭐
Phase 5 Actions 3 课 Expand、Wrap、Balance、Next Edit Point ⭐-⭐⭐
Phase 6 综合实战 2 课 登录页 + 响应式落地页 ⭐⭐-⭐⭐⭐

学完 18 课之后,你将能用一行缩写快速搭建复杂 HTML 结构,一行写完常用 CSS 简写,用 5 个核心 Actions 让编辑速度提升 3-5 倍。


❓ 常见问题

Q Emmet 是编程语言吗?需要安装吗?
A Emmet 不是编程语言,而是一个编辑器插件。VSCode、WebStorm 等主流编辑器默认已集成,无需额外安装;Sublime Text、Atom 等需要安装插件(详见第 02 课)。
Q Emmet 和代码片段(Snippets)有什么区别?
A 代码片段是预设的固定模板(如 html:5 展开为 HTML5 骨架),无法参数化;Emmet 简写是动态生成的,可以根据缩写字符串实时构造任意结构。Emmet 实际上是代码片段的超集。
Q 学 Emmet 之前需要先学完 HTML 和 CSS 吗?
A 强烈建议先掌握 HTML 标签和 CSS 属性的基本概念。Emmet 不会教你 HTML/CSS 是什么,它只是加速你写 HTML/CSS 的速度。本教程默认你已经学过 HTML 基础。
Q Emmet 缩写有没有"标准"?不同编辑器一致吗?
A Emmet 语法是统一的,由官方文档定义。所有兼容 Emmet 的编辑器(VSCode、WebStorm、Sublime 等)展开结果一致;唯一可能不同的是默认触发键(Tab 或 Ctrl+E)和 CSS 简写覆盖率。

📖 小节


📝 作业

  1. 基础题(难度⭐):打开你常用的编辑器,新建一个 .html 文件,输入 div 按 Tab 键,记录展开结果。然后改成 div.box 再按 Tab,对比两次展开的差异。
  2. 进阶题(难度⭐⭐):在编辑器中输入 ul>li*3>a{项目 $} 简写,按 Tab 后观察展开结果,然后修改 $ 前的数字(如 *3 改成 *6),重新展开,记录变化。
  3. 挑战题(难度⭐⭐⭐):尝试用一行 Emmet 缩写写出一个包含导航条、轮播图、3 张卡片、页脚 4 个区域的完整首页 HTML 结构(不要求写 CSS),并用 4 个截图记录展开前后的对比。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏