Emmet入门教程(原zen coding),编写HTML提速神器

简写输入

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+,”可以展开简写输入式,注意是英文状态下的“,”。

http://zen-coding.ru/demo/

输入嵌套标签

这里的嵌套标签包括两种,标签并列和标签嵌套。

标签嵌套

你可以用“>”来描述标签之间的嵌套关系:

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/



你可能感兴趣的:(emmet)