Emmet 是一款强大的前端开发工具集,其核心在于通过简洁的缩写语法快速生成复杂的 HTML 和 CSS 代码。本手册系统梳理了其核心语法与常用缩写:HTML 部分涵盖文档结构、语义化标签、表单控件等元素的快速生成;CSS 部分则汇总了布局、盒模型、文本样式及 Flexbox 等属性的快捷写法。掌握 Emmet 能极大提升编码效率,开发者只需记住类似 ul>li.item$*5 这样的简短字符串,即可展开为完整的代码片段,是现代化工作流中不可或缺的利器。

博主博客

📖 语法

子元素(Child)

语法: >
示例:

nav>ul>li

展开为:

<nav>
    <ul>
        <li></li>
    </ul>
</nav>

兄弟元素(Sibling)

语法: +
示例:

div+p+bq

展开为:

<div></div>
<p></p>
<blockquote></blockquote>

向上跳转(Climb-up)

语法: ^
示例1:

div+div>p>span+em^bq

展开为:

<div></div>
<div>
    <p><span></span><em></em></p>
    <blockquote></blockquote>
</div>

示例2:

div+div>p>span+em^^bq

展开为:

<div></div>
<div>
    <p><span></span><em></em></p>
</div>
<blockquote></blockquote>

分组(Grouping)

语法: ()
示例1:

div>(header>ul>li*2>a)+footer>p

展开为:

<div>
    <header>
        <ul>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
        </ul>
    </header>
    <footer>
        <p></p>
    </footer>
</div>

示例2:

(div>dl>(dt+dd)*3)+footer>p

展开为:

<div>
    <dl>
        <dt></dt>
        <dd></dd>
        <dt></dt>
        <dd></dd>
        <dt></dt>
        <dd></dd>
    </dl>
</div>
<footer>
    <p></p>
</footer>

乘法(Multiplication)

语法: *
示例:

ul>li*5

展开为:

<ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

项目编号(Item Numbering)

语法: $
示例1:

ul>li.item$*5

展开为:

<ul>
    <li class="item1"></li>
    <li class="item2"></li>
    <li class="item3"></li>
    <li class="item4"></li>
    <li class="item5"></li>
</ul>

示例2:

h$[title=item$]{Header $}*3

展开为:

<h1 title="item1">Header 1</h1>
<h2 title="item2">Header 2</h2>
<h3 title="item3">Header 3</h3>

示例3:

ul>li.item$$$*5

展开为:

<ul>
    <li class="item001"></li>
    <li class="item002"></li>
    <li class="item003"></li>
    <li class="item004"></li>
    <li class="item005"></li>
</ul>

示例4: 逆序

ul>li.item$@-*5

展开为:

<ul>
    <li class="item5"></li>
    <li class="item4"></li>
    <li class="item3"></li>
    <li class="item2"></li>
    <li class="item1"></li>
</ul>

示例5: 指定起始编号

ul>li.item$@3*5

展开为:

<ul>
    <li class="item3"></li>
    <li class="item4"></li>
    <li class="item5"></li>
    <li class="item6"></li>
    <li class="item7"></li>
</ul>

ID 和 CLASS 属性

语法:

  • #id
  • .class

示例:

#header

展开为:

<div id="header"></div>
.title

展开为:

<div class="title"></div>
form#search.wide

展开为:

<form id="search" class="wide"></form>
p.class1.class2.class3

展开为:

<p class="class1 class2 class3"></p>

自定义属性

语法: [attr=value]
示例1:

p[title="Hello world"]

展开为:

<p title="Hello world"></p>

示例2:

td[rowspan=2 colspan=3 title]

展开为:

<td rowspan="2" colspan="3" title=""></td>

示例3:

[a='value1' b="value2"]

展开为:

<div a="value1" b="value2"></div>

文本内容

语法: {}
示例1:

a{Click me}

展开为:

<a href="">Click me</a>

示例2:

p>{Click }+a{here}+{ to continue}

展开为:

<p>Click <a href="">here</a> to continue</p>

隐式标签名

示例1:

.class

展开为:

<div class="class"></div>

示例2:

em>.class

展开为:

<em><span class="class"></span></em>

示例3:

ul>.class

展开为:

<ul>
    <li class="class"></li>
</ul>

示例4:

table>.row>.col

展开为:

<table>
    <tr class="row">
        <td class="col"></td>
    </tr>
</table>

🌐 HTML 缩写

所有未知的缩写都会被转换为标签,例如 foo<foo></foo>

文档结构

缩写 展开结果
!!!! <!DOCTYPE html>
html:5 完整 HTML5 文档结构
html:4t HTML 4.01 Transitional 文档
html:4s HTML 4.01 Strict 文档
html:xt XHTML 1.0 Transitional 文档
html:xs XHTML 1.0 Strict 文档
html:xxs XHTML 1.1 文档
doc 简化的 HTML5 文档
doc4 简化的 HTML4 文档

常用元素

缩写 展开结果
a <a href=""></a>
a:link <a href="http://"></a>
a:mail <a href="mailto:"></a>
abbr <abbr title=""></abbr>
br <br />
hr <hr />
img <img src="" alt="" />
link:css <link rel="stylesheet" href="style.css" />
meta:utf <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
meta:vp <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
script:src <script src=""></script>

表单元素

缩写 展开结果
form <form action=""></form>
form:get <form action="" method="get"></form>
form:post <form action="" method="post"></form>
input <input type="text" />
input:hidden <input type="hidden" name="" />
input:text <input type="text" name="" id="" />
input:password <input type="password" name="" id="" />
input:email <input type="email" name="" id="" />
input:checkbox <input type="checkbox" name="" id="" />
input:radio <input type="radio" name="" id="" />
input:submit <input type="submit" value="" />
input:button <input type="button" value="" />
select <select name="" id=""></select>
textarea <textarea name="" id="" cols="30" rows="10"></textarea>
button <button></button>
button:submit <button type="submit"></button>

媒体元素

缩写 展开结果
video <video src=""></video>
audio <audio src=""></audio>
picture <picture></picture>
source <source />
iframe <iframe src="" frameborder="0"></iframe>

语义化元素

缩写 展开结果
header <header></header>
footer <footer></footer>
section <section></section>
article <article></article>
nav <nav></nav>
aside <aside></aside>
main <main></main>

列表元素

缩写 展开结果
ul+ <ul><li></li></ul>
ol+ <ol><li></li></ol>
dl+ <dl><dt></dt><dd></dd></dl>

表格元素

缩写 展开结果
table+ <table><tr><td></td></tr></table>
tr+ <tr><td></td></tr>

注释

缩写 展开结果
c <!-- -->
cc:ie IE条件注释

🎨 CSS 缩写

CSS 模块使用模糊搜索来查找未知缩写,例如 ov:h == ov-h == ovh == oh

视觉格式化

缩写 展开结果
pos position:relative;
pos:a position:absolute;
pos:r position:relative;
pos:f position:fixed;
d display:block;
d:n display:none;
d:b display:block;
d:ib display:inline-block;
d:f display:flex;
fl float:left;
fl:l float:left;
fl:r float:right;
cl clear:both;
ov overflow:hidden;
ov:h overflow:hidden;
ov:a overflow:auto;

边距和填充

缩写 展开结果
m margin:;
m:a margin:auto;
mt margin-top:;
mr margin-right:;
mb margin-bottom:;
ml margin-left:;
p padding:;
pt padding-top:;
pr padding-right:;
pb padding-bottom:;
pl padding-left:;

尺寸

缩写 展开结果
w width:;
w:a width:auto;
h height:;
h:a height:auto;
maw max-width:;
mah max-height:;
miw min-width:;
mih min-height:;

字体

缩写 展开结果
f font:;
f+ font:1em Arial,sans-serif;
fw font-weight:;
fw:n font-weight:normal;
fw:b font-weight:bold;
fs font-style:italic;
fs:n font-style:normal;
fz font-size:;
ff font-family:;
ff:a font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;

文本

缩写 展开结果
c color:#000;
ta text-align:left;
ta:c text-align:center;
ta:r text-align:right;
td text-decoration:none;
td:u text-decoration:underline;
tt text-transform:uppercase;
tt:n text-transform:none;
tt:u text-transform:uppercase;
tt:l text-transform:lowercase;
lh line-height:;
tsh text-shadow:hoff voff blur #000;
tsh:n text-shadow:none;

背景

缩写 展开结果
bg background:#000;
bg+ background:#fff url() 0 0 no-repeat;
bg:n background:none;
bgc background-color:#fff;
bgc:t background-color:transparent;
bgi background-image:url();
bgr background-repeat:;
bgr:n background-repeat:no-repeat;
bgp background-position:0 0;
bgsz background-size:;
bgsz:cv background-size:cover;

边框

缩写 展开结果
bd border:;
bd+ border:1px solid #000;
bd:n border:none;
bdt border-top:;
bdr border-right:;
bdb border-bottom:;
bdl border-left:;
bdrs border-radius:;

定位

缩写 展开结果
t top:;
r right:;
b bottom:;
l left:;
z z-index:;

Flexbox

缩写 展开结果
fx flex:;
fxd flex-direction:;
fxd:r flex-direction:row;
fxd:c flex-direction:column;
fxw flex-wrap:;
jc justify-content:;
jc:c justify-content:center;
jc:sb justify-content:space-between;
ai align-items:;
ai:c align-items:center;

动画和过渡

缩写 展开结果
anim animation:;
trs transition:prop time;
trf transform:;
trf:r transform: rotate(angle);
trf:sc transform: scale(x, y);
trf:t transform: translate(x, y);

其他

缩写 展开结果
! !important
op opacity:;
cur cursor:pointer;
bxz box-sizing:border-box;
bxsh box-shadow:inset hoff voff blur color;
bxsh:n box-shadow:none;
wow word-wrap:;
wow:b word-wrap:break-word;

📊 XSL 缩写

模板

缩写 展开结果
tmatch <xsl:template match="" mode=""></xsl:template>
tname <xsl:template name=""></xsl:template>
call <xsl:call-template name="" />
ap <xsl:apply-templates select="" mode="" />

流程控制

缩写 展开结果
if <xsl:if test=""></xsl:if>
choose+ <xsl:choose><xsl:when test=""></xsl:when><xsl:otherwise></xsl:otherwise></xsl:choose>
each <xsl:for-each select=""></xsl:for-each>

变量和参数

缩写 展开结果
var <xsl:variable name=""></xsl:variable>
par <xsl:param name=""></xsl:param>

输出

缩写 展开结果
val <xsl:value-of select="" />
elem <xsl:element name=""></xsl:element>
attr <xsl:attribute name=""></xsl:attribute>
tex <xsl:text></xsl:text>
com <xsl:comment></xsl:comment>

文档结构

缩写 展开结果
xsl 完整 XSL 文档结构
!!! <?xml version="1.0" encoding="UTF-8"?>

💡 使用技巧

  1. 组合使用:可以将多个缩写组合使用,例如:

    .container>ul.list>li.item$*3>a{Link $}
    
  2. 快速生成结构:使用 !html:5 快速生成 HTML5 文档结构

  3. 响应式图片:使用 picture 相关缩写生成响应式图片代码

  4. CSS 前缀:在 CSS 属性前加 - 可以生成带供应商前缀的属性

  5. 隐式标签:根据上下文自动推断标签类型,提高编写效率


注意:此手册基于 Emmet 官方文档整理,不同编辑器中的 Emmet 插件可能会有细微差异,请以实际编辑器支持为准。

参考文献