HTML 文档的初始结构,就是包括 doctype、html、head、body 以及 meta 等内容。你只须要输入一个 “!” 就能够生成一个 HTML5 的标准文档初始结构,你没有看错,输入一个感叹号(固然是英文符号),而后摁下 ctrl+E 键,就会发现生成了下面的结构:html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> </body> </html>
这就是一个 HTML5 的标准结构,也是默认的 HTML 结构。若是你想生成 HTML4 的过渡型结构,那么输入指令 html:xt,而后ctrl+E, 便可生成以下结构:ui
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> </head> <body> </body> </html>
Emmet 会自动把 doctype 给你补全了,怎么样,这样的功能会不会让你动心?简单总结一下经常使用的 HTML 结构指令:spa
html:5 或者 ! 生成 HTML5 结构code
html:xt 生成 HTML4 过渡型xml
html:4s 生成 HTML4 严格型htm
Emmet 的语法有点相似 CSS 的语法,生成 id 为 aaa 的 div 标签,咱们只须要编写下面指令:排序
#aaa
Emmet 默认的标签为 div ,若是咱们不给出标签名称的话,默认就生成 div 标签。若是编写一个 class 为 bbb 的 span 标签,咱们须要编写下面指令:文档
span.bbb
而后就生成了对应的结构。同理,若是想要编写一个 id 为 ccc 的 class 为 ddd 的 ul 标签,咱们能够这样写:get
ul#ccc.ddd
很简单吧?比你用手写 id 、class 方便多了吧博客
大于号表示后面要生成的内容是当前标签的后代。例如我要生成一个无序列表,并且被 class 为 aaa 的 div 包裹,那么可使用下面指令:
div.aaa>ul>li
能够生成以下的结构:
<div> <ul> <li></li> </ul> </div>
上面是生成下级元素,若是想要生成平级的元素,就须要使用 + 号。例以下面指令:
div+p+bq
就能够生成以下的 HTML 结构:
<div></div> <p></p> <blockquote></blockquote>
上级 (Climb-up)元素是什么意思呢?前面我们说过了生成下级元素的符号“>”,当使用 div>ul>li 的指令以后,再继续写下去,那么后续内容都是在 li 下级的。若是我想编写一个跟 ul 平级的 span 标签,那么我须要先用 “^” 提高一下层次。例如:
div>ul>li^span
就会生成以下结构:
<div> <ul> <li></li> </ul> <span></span> </div>
若是我想相对与 div 生成一个平级元素,那么就再上升一个层次,多用一个“^”符号:
div>ul>li^^span
特别是一个无序列表,ul 下面的 li 确定不仅是一份,一般要生成不少个 li 标签。那么咱们能够直接在 li 后面 * 上一些数字:
ul>li*5
这样就直接生成五个项目的无序列表了。若是想要生成多份其余结构,方法相似。
用括号进行分组,这样能够更加明确要生成的结构,特别是层次关系,例如:
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>
a 标签中每每须要附带 href 属性和 title 属性,若是咱们想生成一个 href 为 “http://www.haorooms.com/ ,title 为“haorooms 博客”的 a 标签,能够这样写:
a[href="http://www.haorooms.com/" title="haorooms 博客"]
其余标签和属性都相似。
例如无序列表,我想为五个个 li 增长一个 class 属性值 item1 ,而后依次递增从 1-5,那么就须要使用 $ 符号:
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>
$ 就表示一位数字,只出现一个的话,就从1开始。若是出现多个,就从0开始。若是我想生成三位数的序号,那么要写三个 $:
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>
只能这样单调的生成序号?对于强大的 Emmet 来讲,确定不会会了,咱们也能够在 $ 后面增长 @- 来实现倒序排列:
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>
一样,咱们也可使用 @N 指定开始的序号:
ul>li.item$@3*5
这样就会从 3 开始排序,生成以下代码:
<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
生成的就是以 3 为底倒序:
<ul> <li class="item7"></li> <li class="item6"></li> <li class="item5"></li> <li class="item4"></li> <li class="item3"></li> </ul>
上面讲解了如何生成 HTML 标签,那里面的内容呢?固然也能够生成了:
a[href="http://www.haorooms.com/"]{点击这里到 haorooms 的博客}
这样就生成了一个到我博客的超连接了。在生成内容的时候,特别要注意先后的符号关系,虽然 a>{Click me} 和 a{Click me} 生成的结构是相同的,可是加上其余的内容就不必定了,例如:
<!-- a{click}+b{here} --> <a href="">click</a><b>here</b> <!-- a>{click}+b{here} --> <a href="">click<b>here</b></a>
这样就生成了彻底不一样的结构,注意这些小细节哦。
不要有空格
在写指令的时候,你可能为了代码的可读性,使用一些空格什么的排版一下。这就会致使代码没法使用。例以下面这句:
(header > ul.nav > li*5) + footer
而去掉空格以后,就能够正常执行生成结构了。