简写输入
Emmet的简写的原理有点像CSS技术里面的Class选择器,区别是它使元素分层结构以及其标签的属性表达起来更轻便。
译者注:如果你不知道我说的是什么,这有个视频,应该更直观一些。
http://v.youku.com/v_show/id_XMTM4NDQwNzgw.html
输入标签
你可以用标签名如div、p直接生成完整的HTML标签。Emmet可没有定义什么标签合法,因此你可以随便写点什么都可以生成相应的标签,如div---><div></div>,foo---><foo></foo>。
译者注:eclipse里输入div单击tab键会自动生成<div></div>,亲,别说你的eclipse还没装Emmet扩展~什么,你没时间装?装吧你就,这有个地址你可以在线尝试一下,“ctrl+,”可以展开简写输入式,注意是英文状态下的“,”。
输入嵌套标签
这里的嵌套标签包括两种,标签并列和标签嵌套。
标签嵌套
你可以用“>”来描述标签之间的嵌套关系:
div>ul>li
展开中...
<div>
<ul>
<li></li>
</ul>
</div>
标签并列
用"+"可以来描述标签之间的并列关系:
div+p+bq
展开中...
<div></div>
<p></p>
<blockquote></blockquote>
向上一级
通过“^”你可以让之后的元素与和更高一层的元素并列,下面是使用前后的对比:
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>
正如你所料,多个“^”同时使用则之后的元素向上跳了N层
div+div>p>span+em^^^bq
展开中...
<div></div>
<div>
<p><span></span><em></em></p>
</div>
<blockquote></blockquote>
输入多个标签
“*”可以实现输入多个标签:
ul>li*5
展开中...
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
标签分组
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>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>
有了分组,甚至你可以把整个网页通过一行简写式生成,不过可别这么做,亲。
输入属性
是的,你没看错。Emmet允许你在输入标签的同时输入它的属性。比如,HTML和XML里面的class属性。
输入ID和CLASS属性
CSS里面#id和.class可以描述元素的id和class属性,在Emmet也一样:
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>
其他属性
你可以使用[attr]来设置元素的其他属性:
td[title="hello world" colspan=3]
展开中...
<td title="Hello world!" colspan="3"></td>
呵呵,想输如多少属性就输入多少属性,甚至你不用赋值,比如td[title colspan]---><td colspan="" title="">,在一些编辑器里用Tab键可以依次赋值( 译注:eclipse亲测)。单双引号都无所谓,要是属性值没有空格,你连引号也省了吧。
可以自增长的数字
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>
标签内的文字
a{click me}
展开中...
<a href="">Click me</a>
接下来的功能很有趣:
a{click}和a>{click}展开后是一样的,但a{click}+b{click}和a>{click}+b{click}是不一样的:
<!-- a{click}+b{here} -->
<a href="">click</a><b>here</b>
<!-- a>{click}+b{here} -->
<a href="">click<b>here</b></a>
这里还有一个更复杂的例子:
p>{Click}+a{here}+{to continue}
展开中...
<p>Click <a href="">here</a> to continue</p>
我想这正是你想要的,而不是下面这样:
p{Click}+a{here}+{to continue}
展开中...
<p>Click </p>
<a href="">here</a> to continue
留意你简写输入式的格式
也许你会加入一些格式来上你的简写输入式可读性更强,比如使用空格,但那只会让你的代码不能展开。有些人会人为只有在新的一行才能展开,别傻了,实际上在哪都行。
原文地址:http://docs.emmet.io/abbreviations/syntax/