Emmet 语法速查手册
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"?> |
💡 使用技巧
-
组合使用:可以将多个缩写组合使用,例如:
.container>ul.list>li.item$*3>a{Link $} -
快速生成结构:使用
!或html:5快速生成 HTML5 文档结构 -
响应式图片:使用
picture相关缩写生成响应式图片代码 -
CSS 前缀:在 CSS 属性前加
-可以生成带供应商前缀的属性 -
隐式标签:根据上下文自动推断标签类型,提高编写效率
注意:此手册基于 Emmet 官方文档整理,不同编辑器中的 Emmet 插件可能会有细微差异,请以实际编辑器支持为准。
评论