×

【web前端工具Emmet教程】Emmet实战解析

作者:Terry2013.11.20来源:Web前端之家浏览:63721评论:0

ad22.jpg

上篇我们讲过“【web前端工具Emmet教程】介绍与基础语法”,接下来说下Emmet指令原理以及实战说明。

先前提到我们只要输入指令“!”就可以默认生成一个 HTML5 的标准文档初始结构,代码如下:

  1. <!doctype html>

  2. <html lang="en">

  3. <head>

  4.     <meta charset="UTF-8">

  5.     <title>Document</title>

  6. </head>

  7. <body>

  8. 下Emmet指令原理以及实战说明

  9. </body>

  10. </html>

如果你想生成 HTML4 的过渡型结构,那么输入指令 html:xt 即可,代码就不贴出来了。我总结了下目前常用的结构,如下:

html:5 或者 ! 生成 HTML5 结构
html:xt 生成 HTML4 过渡型
html:4s 生成 HTML4 严格型

有木有感觉很神奇呢,输入几个字母就可以生成一大片代码出来,大大的提高了我们的工作效率。好啦,不啰嗦了,进入下一个环节:

生成带有 id 、class 的HTML标签

Emmet 的语法有点类似 CSS 的语法,生成 id 为 aaa 的 div 标签,我们只需要编写下面指令:
#aaa

Emmet 默认的标签为div ,如果我们不给出标签名称的话,默认就生成 div 标签。如果编写一个 class 为 bbb 的 span 标签,我们需要编写下面指令:
span.bbb
然后就生成了对应的结构。同理,如果想要编写一个 id 为 ccc 的 class 为 ddd 的 ul 标签,我们可以这样写:
ul#ccc.ddd

很简单吧?比你用手写 id 、class 方便多了吧

生成后代:>

大于号表示后面要生成的内容是当前标签的后代。例如我要生成一个无序列表,而且被 class 为 aaa 的 div 包裹,那么可以使用下面指令:
div.aaa>ul>li

可以生成如下的结构:

  1. <div>

  2.     <ul>

  3.         <li></li>

  4.     </ul>

  5. </div>

生成兄弟:+

上面是生成下级元素,如果想要生成平级的元素,就需要使用 + 号。例如下面指令:
div+p+bq

就可以生成如下的 HTML 结构:

  1. <div></div>

  2. <p></p>

  3. <blockquote></blockquote>

生成上级元素:^

上  级 (Climb-up)元素是什么意思呢?前面咱们说过了生成下级元素的符号“>”,当使用 div>ul>li  的指令之后,再继续写下去,那么后续内容都是在 li 下级的。如果我想编写一个跟 ul 平级的 span 标签,那么我需要先用 “^” 提升一下层次。例如:
div>ul>li^span

就会生成如下结构:

  1. <div>

  2.     <ul>

  3.         <li></li>

  4.     </ul>

  5.     <span></span>

  6. </div>

如果我想相对与 div 生成一个平级元素,那么就再上升一个层次,多用一个“^”符号:
div>ul>li^^span

重复生成多份:*

特别是一个无序列表,ul 下面的 li 肯定不只是一份,通常要生成很多个 li 标签。那么我们可以直接在 li 后面 * 上一些数字:
ul>li*5

这样就直接生成五个项目的无序列表了。如果想要生成多份其他结构,方法类似。

生成分组:()

用括号进行分组,这样可以更加明确要生成的结构,特别是层次关系,例如:
div>(header>ul>li*2>a)+footer>p

这样很明显就可以看出层次关系和并列关系,生成如下结构:

  1. <div>

  2.     <header>

  3.         <ul>

  4.             <li><a href=""></a></li>

  5.             <li><a href=""></a></li>

  6.         </ul>

  7.     </header>

  8.     <footer>

  9.         <p></p>

  10.     </footer>

  11. </div>

此外,分组还可以很方便的结合上面说的 “*” 符号生成重复结构:
(div>dl>(dt+dd)*3)+footer>p

生成结构:

  1. <div>
        <dl>

  2.         <dt></dt>

  3.         <dd></dd>

  4.         <dt></dt>

  5.         <dd></dd>

  6.         <dt></dt>

  7.         <dd></dd>

  8.     </dl>

  9. </div>

  10. <footer>

  11.     <p></p>

  12. </footer>

生成自定义属性:[attr]

a 标签中往往需要附带 href 属性和 title 属性,如果我们想生成一个 href 为 “http://www.jiangweishan.com” ,title 为“WEB前端之家的 a 标签,可以这样写:
a[href="WEB前端之家" title="WEB前端之家"]

其他标签和属性都类似。

对生成内容编号:$

例如无序列表,我想为五个个 li 增加一个 class 属性值 item1 ,然后依次递增从 1-5,那么就需要使用 $ 符号:
ul>li.item$*5

这样就生成了如下结构:

  1. <ul>

  2.   <li class="item1"></li>

  3.   <li class="item2"></li>

  4.   <li class="item3"></li>

  5.   <li class="item4"></li>

  6.   <li class="item5"></li>

  7. </ul>

$ 就表示一位数字,只出现一个的话,就从1开始。如果出现多个,就从0开始。如果我想生成三位数的序号,那么要写三个 $:
ul>li.item$$$*5

输出:

  1. <ul>

  2.   <li class="item001"></li>

  3.   <li class="item002"></li>

  4.   <li class="item003"></li>

  5.   <li class="item004"></li>

  6.   <li class="item005"></li>

  7. </ul>

只能这样单调的生成序号?对于强大的 Emmet 来说,肯定不会会了,我们也可以在 $ 后面增加 @- 来实现倒序排列:
ul>li.item$@-*5

生成如下结构:

  1. <ul>

  2.  <li class="item5"></li>

  3.  <li class="item4"></li>

  4.  <li class="item3"></li>

  5.  <li class="item2"></li>

  6.  <li class="item1"></li>

  7. </ul>

同样,我们也可以使用 @N 指定开始的序号:
ul>li.item$@3*5
这样就会从 3 开始排序,生成如下代码:

  1. <ul>

  2.  <li class="item3"></li>

  3.  <li class="item4"></li>

  4.  <li class="item5"></li>

  5.  <li class="item6"></li>

  6.  <li class="item7"></li>

  7. </ul>

配合上面倒序输出,可以这样写:
ul>li.item$@-3*5
生成的就是以 3 为底倒序:

  1. <ul>

  2.  <li class="item7"></li>

  3.  <li class="item6"></li>

  4.  <li class="item5"></li>

  5.  <li class="item4"></li>

  6.  <li class="item3"></li>

  7. </ul>

生成文本内容:{}

上面讲解了如何生成 HTML 标签,那里面的内容呢?当然也可以生成了:
a[href="http://www.jiangweishan.com.com"]{点击这里到 WEB前端之家}

这样就生成了一个到我博客的超链接了。在生成内容的时候,特别要注意前后的符号关系,虽然 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

而去掉空格之后,就可以正常执行生成结构了。HTML 语法部分说完了,现在回头看看第先前一篇文章:【web前端工具Emmet教程】介绍与基础语法”,你是否已经看懂了那一串指令?

好啦,今天就写到这里了。下一篇将会讲解“【web前端工具Emmet教程】快速编写CSS实战”。

您的支持是我们创作的动力!
温馨提示:本文作者系Terry ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/Emmet2.html

网友评论文明上网理性发言已有0人参与

发表评论: