Emmet Documentation
官方文档地址
Elements
Emmet自身并没有预先定义合法标签的集合,只会根据你写的标签名来生成标签对,需要在语句的最后加上Tab键来生成,例如:
div+Tab -> <div></div>
study+Tab -> <study></study>
Nesting operators
一个html文件中的所有元素满足一颗生成树结构,根结点为html,根结点的子节点有head和body,而head结点的子结点又有title、meta等等;Emmet使用嵌套的符号来定位这些元素在树中的位置;
Child: >
使用符号’>‘表示其后跟着的是前一个结点的直接子结点,例如:
div>ul>li
生成
<div>
<ul>
<li></li>
</ul>
</div>
Sibling: +
使用符号’+‘表示其后跟着的是前一个结点的兄弟结点,即有相同父结点,例如:
div+p+bq
生成
<div></div>
<p></p>
<blockquote></blockquote>
Climb-up: ^
使用符号‘^’表示其后跟着的是前一个结点的父节点的兄弟结点,例如:
div+div>p>span+em
生成
<div></div>
<div>
<p><span></span><em></em></p>
</div>
div+div>p>span+em^bq
生成
<div></div>
<div>
<p><span></span><em></em></p>
<blockquote></blockquote>
</div>
当然,你也可以使用多个^符号,来表示前一个结点的父结点的父结点的父结点的……兄弟结点,例如:
div+div>p>span+em^^^bq
生成
<div></div>
<div>
<p><span></span><em></em></p>
</div>
<blockquote></blockquote>
Multiplication: *
使用符号’*‘表示其后跟的元素会重复出现多少次,例如:
ul>li*5
生成
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
Grouping: ()
使用符号‘()’相当于将其后的所有元素当作一个结点,其实是一颗子树,例如:
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>
这个时候结点div的子结点为(header>ul>li*2>a)和footer;
(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>
(dt+dd)*3表示将会输出三次,这个时候(div>dl>(dt+dd)*3)结点和footer是兄弟结点;
Attribute operators
属性符号用于输出元素的属性,例如属性title、class、id等等;
ID and CLASS
使用符号’#‘后跟单词,表示的是结点的id属性,使用符号‘.’后跟单f词,表示的是结点的class属性;例如:
div#header+div.page+div#footer.class1.class2.class3
生成
<div id="header"></div>
<div class="page"></div>
<div id="footer" class="class1 class2 class3"></div>
Custom attributes
使用’[attr]‘来表示结点的属性,例如:
td[title="Hello world!" colspan=3]
生成
<td title="Hello world!" colspan="3"></td>
需要注意的是,如果属性值包含空格,需要使用引号包含进来;如果仅仅写了属性名而没有包含值,默认值为空,例如:
td[colspan title]
生成
<td colspan="" title="">
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>
可以使用多个‘$’符号来产生前导零,例如:
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>
Changing numbering base and direction
使用符号’@-‘可以改变值变化的方向(递增或者递减),其实就是将正序后的值颠倒一下,例如:
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>
使用符号‘@number’可以改变’$’值的默认起始值,例如:
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>
我们也可以将这几个符号组合起来用,例如:
ul>li.item$@-3*5
生成
<ul>
<li class="item7"></li>
<li class="item6"></li>
<li class="item5"></li>
<li class="item4"></li>
<li class="item3"></li>
</ul>
Text:{}
使用符号‘{}’可以表示标签包含的文本内容,例如:
a{click me}
生成
<a href="">Click me</a>