介绍
Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具。
基本上,大多数的文本编辑器都会允许你存储和重用一些代码块,我们称之为“片段”。虽然片段能很好地推动你得生产力,但大多数的实现都有这样一个缺点:你必须先定义你得代码片段,并且不能再运行时进行拓展。
Emmet把片段这个概念提高到了一个新的层次:你可以设置CSS形式的能够动态被解析的表达式,然后根据你所输入的缩写来得到相应的内容。Emmet是很成熟的并且非常适用于编写HTML/XML 和 CSS 代码的前端开发人员,但也可以用于编程语言。
示例
在编辑器中输入缩写代码ul>li*5
,然后按下拓展键(默认为tab
),即可得到代码片段:
1 | <ul> |
下载和安装
编辑器插件
以下都是Emmet为编辑器提供的安装插件。
在线编辑器的支持:
第三方插件的支持
下面这些编辑器的插件都是由第三方开发者所提供的,所以可能并不支持所有Emmet的功能和特性。
语法
后代:>
nav>ul>li
1 | <nav> |
兄弟:+
div+p+bq
1 | <div></div> |
上级:^
div+div>p>span+em^bq
1 | <div></div> |
div+div>p>span+em^^bq
1 | <div></div> |
分组:()
div>(header>ul>li*2>a)+footer>p
1 | <div> |
(div>dl>(dt+dd)*3)+footer>p
1 | <div> |
乘法:*
ul>li*5
1 | <ul> |
##自增符号:$
ul>li.item$*5
1 | <ul> |
h$[title=item$]{Header $}*3
1 | <h1 title="item1">Header 1</h1> |
ul>li.item$$$*5
1 | <ul> |
ul>li.item$@-*5
1 | <ul> |
ul>li.item$@3*5
1 | <ul> |
ID和类属性
#header
1 | <div id="header"></div> |
.title
1 | <div class="title"></div> |
form#search.wide
1 | <form id="search" class="wide"></form> |
p.class1.class2.class3
1 | <p class="class1 class2 class3"></p> |
自定义属性
p[title="Hello world"]
1 | <p title="Hello world"></p> |
td[rowspan=2 colspan=3 title]
1 | <td rowspan="2" colspan="3" title=""></td> |
[a='value1' b="value2"]
1 | <div a="value1" b="value2"></div> |
文本:{}
a{Click me}
1 | <a href="">Click me</a> |
p>{Click }+a{here}+{ to continue}
1 | <p>Click <a href="">here</a> to continue</p> |
隐式标签
.class
1 | <div class="class"></div> |
em>.class
1 | <em><span class="class"></span></em> |
ul>.class
1 | <ul> |
table>.row>.col
1 | <table> |
HTML
所有未知的缩写都会转换成标签,例如,foo → <foo></foo>
!
1 |
|
a
1 | <a href=""></a> |
a:link
1 | <a href="http://"></a> |
a:mail
1 | <a href="mailto:"></a> |
abbr
1 | <abbr title=""></abbr> |
acronym
1 | <acronym title=""></acronym> |
base
1 | <base href="" /> |
basefont
1 | <basefont /> |
br
1 | <br /> |
frame
1 | <frame /> |
hr
1 | <hr /> |
bdo
1 | <bdo dir=""></bdo> |
bdo:r
1 | <bdo dir="rtl"></bdo> |
bdo:l
1 | <bdo dir="ltr"></bdo> |
col
1 | <col /> |
link
1 | <link rel="stylesheet" href="" /> |
link:css
1 | <link rel="stylesheet" href="style.css" /> |
link:print
1 | <link rel="stylesheet" href="print.css" media="print" /> |
link:favicon
1 | <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> |
link:touch
1 | <link rel="apple-touch-icon" href="favicon.png" /> |
link:rss
1 | <link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml" /> |
link:atom
1 | <link rel="alternate" type="application/atom+xml" title="Atom" href="atom.xml" /> |
meta
1 | <meta /> |
meta:utf
1 | <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> |
meta:win
1 | <meta http-equiv="Content-Type" content="text/html;charset=windows-1251" /> |
meta:vp
1 | <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> |
meta:compat
1 | <meta http-equiv="X-UA-Compatible" content="IE=7" /> |
style
1 | <style></style> |
script
1 | <script></script> |
script:src
1 | <script src=""></script> |
img
1 | <img src="" alt="" /> |
iframe
1 | <iframe src="" frameborder="0"></iframe> |
embed
1 | <embed src="" type="" /> |
object
1 | <object data="" type=""></object> |
param
1 | <param name="" value="" /> |
map
1 | <map name=""></map> |
area
1 | <area shape="" coords="" href="" alt="" /> |
area:d
1 | <area shape="default" href="" alt="" /> |
area:c
1 | <area shape="circle" coords="" href="" alt="" /> |
area:r
1 | <area shape="rect" coords="" href="" alt="" /> |
area:p
1 | <area shape="poly" coords="" href="" alt="" /> |
form
1 | <form action=""></form> |
form:get
1 | <form action="" method="get"></form> |
form:post
1 | <form action="" method="post"></form> |
label
1 | <label for=""></label> |
input
1 | <input type="text" /> |
input:text
input:t
inp
1 | <input type="text" name="" id="" /> |
input:hidden
input:h
input[type=hidden name]
1 | <input type="hidden" name="" /> |
input:search
inp[type=search]
1 | <input type="search" name="" id="" /> |
input:email
inp[type=email]
1 | <input type="email" name="" id="" /> |
input:url
inp[type=url]
1 | <input type="url" name="" id="" /> |
input:password
input:p
inp[type=password]
1 | <input type="password" name="" id="" /> |
input:datetime
inp[type=datetime]
1 | <input type="datetime" name="" id="" /> |
input:date
inp[type=date]
1 | <input type="date" name="" id="" /> |
input:datetime-local
inp[type=datetime-local]
1 | <input type="datetime-local" name="" id="" /> |
input:month
inp[type=month]
1 | <input type="month" name="" id="" /> |
input:week
inp[type=week]
1 | <input type="week" name="" id="" /> |
input:time
inp[type=time]
1 | <input type="time" name="" id="" /> |
input:number
inp[type=number]
1 | <input type="number" name="" id="" /> |
input:color
inp[type=color]
1 | <input type="color" name="" id="" /> |
input:checkbox
input:c
inp[type=checkbox]
1 | <input type="checkbox" name="" id="" /> |
input:radio
input:r
inp[type=radio]
1 | <input type="radio" name="" id="" /> |
input:range
inp[type=range]
1 | <input type="range" name="" id="" /> |
input:file
input:f
inp[type=file]
1 | <input type="file" name="" id="" /> |
input:submit
input:s
1 | <input type="submit" value="" /> |
input:image
input:i
1 | <input type="image" src="" alt="" /> |
input:button
input:b
1 | <input type="button" value="" /> |
input:reset
input:button[type=reset]
1 | <input type="reset" value="" /> |
select
1 | <select name="" id=""></select> |
option
1 | <option value=""></option> |
textarea
1 | <textarea name="" id="" cols="30" rows="10"></textarea> |
menu:context
menu:c
menu[type=context]
1 | <menu type="context"></menu> |
menu:toolbar
menu:t
menu[type=toolbar]
1 | <menu type="toolbar"></menu> |
video
1 | <video src=""></video> |
audio
1 | <audio src=""></audio> |
html:xml
1 | <html xmlns="http://www.w3.org/1999/xhtml"></html> |
keygen
1 | <keygen /> |
command
1 | <command /> |
bq
blockquote
1 | <blockquote></blockquote> |
acr
acronym
1 | <acronym title=""></acronym> |
fig
figure
1 | <figure></figure> |
figc
figcaption
1 | <figcaption></figcaption> |
ifr
iframe
1 | <iframe src="" frameborder="0"></iframe> |
emb
embed
1 | <embed src="" type="" /> |
obj
object
1 | <object data="" type=""></object> |
src
source
1 | <source></source> |
cap
caption
1 | <caption></caption> |
colg
colgroup
1 | <colgroup></colgroup> |
fst
fset
fieldset
1 | <fieldset></fieldset> |
btn
button
1 | <button></button> |
btn:b
button[type=button]
1 | <button type="button"></button> |
btn:r
button[type=reset]
1 | <button type="reset"></button> |
btn:s
button[type=submit]
1 | <button type="submit"></button> |
最后
关于更多的HTML以及CSS的缩写请查看:官网文档