Emmet 语法

Emmet 是高效、快速编写 HTML 和 CSS 代码的一种插件,如果还不了解,请戳[Emmet — the essential toolkit for web-developers](http://docs.emmet.io/),再根据你使用的编辑器(sublime 或 vim 等)下载对应的 Emmet 插件,让你的代码快步如飞吧。下面我记录下常用的 Emmet 语法和快捷键。代码区里的均指在编辑器里输入的字符,然后按 “Tab” 键便会生成代码。

例如 输入`!` 然后按 “tab” 会得到如下所示的HTML文档初始机构,再也不用一个字母一个字母敲了,是不是很简单呢?

## HTML 编写

1. 生成HTML文档初始机构

- `html:5` 或者 `!` 生成 HTML5 结构


1

2

3

4

5

6

7

8

9


    <!DOCTYPE html>

    <html>

    <head>

        <meta charset="UTF-8">

        <title>Document</title>

    </head>

    <body>

    </body>

    </html>

- `html:xt` 生成 HTML4 过渡型


1

2

3

4

5

6

7

8

9


    <!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="zh-cmn-Hans">

    <head>

        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

        <title>Document</title>

    </head>

    <body>

    </body>

    </html>

- `html:4s` 生成 HTML4 严格型


1

2

3

4

5

6

7

8

9


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

    <html>

    <head>

        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

        <title>Document</title>

    </head>

    <body>

    </body>

    </html>

2. 任意一个 html 标签输入都会生成完整的闭合标签。

例如输入 `p` 按 `tab` 则 生成:`<p></p>`

3. 生成带有 id 、class 的 HTML 标签: `#`为 id,`.` 为 class。

例如输入 `div#header.section` 则生成 `<div id="header"></div>`

4. 生成后代:`>`

例如输入`p>span` 则生成 `<p><span></span></p>`

5. 生成兄弟标签:`+`

例如输入`p+div` 则生成 `<p></p><div></div>`

6. 生成上级标签: `^`

例如输入`ul>li>a^div` 则生成


1

2

3

4


  <ul>

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

    <div></div>

  </ul>

也可以使用多个 `^`,

例如输入`ul>li>a^^div` 则生成


1

2

3

4


  <ul>

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

  </ul>

  <div></div>

7. 重复生成多个标签 `*`

例如输入`ul>li*5` 则生成


1

2

3

4

5

6

7


    <ul>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

    </ul>

8. 生成分组的标签: `()`

例如输入`ul>(li>a)*5` 则生成


1

2

3

4

5

6

7


    <ul>

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

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

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

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

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

    </ul>

注意和`ul>li>a*5` 生成是不一样的


1

2

3

4

5

6

7

8

9


    <ul>

        <li>

            <a href=""></a>

            <a href=""></a>

            <a href=""></a>

            <a href=""></a>

            <a href=""></a>

        </li>

    </ul>

9. 生成自定义属性:`[]`

例如输入`img[https://octodex.github.com/images/codercat.jpg][alt=octcat]` 则生成


1

    <img src="https://octodex.github.com/images/codercat.jpg" alt="octcat" />

10. 生成递增的属性标签等: `$`

例如输入`ul>li.item$*5` 则生成


1

2

3

4

5

6

7


    <ul>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

    </ul>

11. 生成多位递增的呢:`$$$`

例如输入`ul>li.item$$$*5` 则生成


1

2

3

4

5

6

7


    <ul>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

    </ul>

想生成几位输入几个`$`

11. 要生成递减的呢:`@-`

例如输入`ul>[email protected]*5` 则生成


1

2

3

4

5

6

7


    <ul>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

    </ul>

12. 想要从某个特定的顺序开始呢:`@N`

例如输入`ul>[email protected]*5` 则生成


1

2

3

4

5

6

7


   <ul>

       <li></li>

       <li></li>

       <li></li>

       <li></li>

       <li></li>

   </ul>

13. 逆序生成到某个数:`@-`

例如输入`ul>[email protected]*5` 则生成


1

2

3

4

5

6

7


    <ul>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

    </ul>

14. 生成文本内容:`{}`

例如输入`p{我是paddingme}` 则生成


1

    <p>我是paddingme</p>

15. 缺省元素:

- 声明一个带class的div 可以不用输入div;

`.header+.footer` 则生成:


1

2


   <div></div>

   <div></div>

- Emmet 还会根据父标签进行判定

例如输入`ul>.item*3` 则生成:


1

2

3

4

5


   <ul>

       <li></li>

       <li></li>

       <li></li>

   </ul>

下面是所有的隐式标签名称:

- li:用于 ul 和 ol 中

- tr:用于 table、tbody、thead 和 tfoot 中

- td:用于 tr 中

- option:用于 select 和 optgroup 中

首先,Sublime Text3 已经提供了比较强大的 CSS 样式所写方法来提高 CSS 编写效率。例如编写 `position: absolute`; 这一个属性,我们只需要输入 posa 这四个字母即可。可以在平时书写过程中,留意一下 ST3 提供了哪些属性的缩写方法,这样就可以提高一定的效率了。但是 Emmet 提供了更多的功能,请往下看。

1. 简写属性和属性值

比如要定义元素的宽度,只需输入w100,即可生成:

```

width: 100px;

```

Emmet 的默认设置 w 是 width 的缩写,后面紧跟的数字就是属性值。默认的属性值单位是 px ,你可以在值的后面紧跟字符生成单位,可以是任意字符。例如,`w100foo` 会生成:

```

width:100foo;

```

同样也可以简写属性单位,如果你紧跟属性值后面的字符是`p`,那么将会生成:

```

width:100%;

```

下面是单位别名列表:

- p 表示%

- e 表示 em

- x 表示 ex

像 margin 这样的属性,可能并不是一个属性值,生成多个属性值需要用横杠(-)连接两个属性值,因为 Emmet 的指令中是不允许空格的。例如使用 `m10-20` 可以生成:

```

margin: 10px 20px;

```

如果你想生成负值,多加一条横杠即可。例如:`m10--20` 可以生成:

```

margin: 10px -20px;

```

需要注意的是,如果你对每个属性都指定了单位,那么不需要使用横杠分割。例如使用  m10e20e 可以生成:

```

margin: 10em 20em;

```

如果使用了横杠分割,那么属性值就变成负值了。例如使用 `m10e-20e` 就生成:

```

margin: 10em -20em;

```

如果你想一次生成多条语句,可以使用 “+” 连接两条语句,例如使用 h10p+m5e  可以生成:

```

height: 10%;
 margin: 5em;

```

颜色值也是可以快速生成的,例如 `c#3` 生成`color: #333`;,更复杂一点的,使用  `bd5#0s` 可以生成 `border: 5px #000 solid`;。

下面是颜色值生成规则:

- ‘#1’ → #111111

- ‘#e0’ → #e0e0e0

- ‘#fc0’ → #ffcc00

生成 `!important` 这条语句也当然很简单,只需要一个 “!” 就可以了。

2. 附加属性

使用 `@f` 即可生成 CSS3 中的 font-face 的代码结构:

```

@font-face {
     font-family:;
     src:url();
 }

```

但是这个结构太简单,不包含一些其他的 font-face 的属性,诸如 background-image、border-radius、font、@font-face、 text-outline、 text-shadow 等属性,我们可以在生成的时候输入 “+” 生成增强的结构,例如我们可以输入 `@f+`  命令,即可输出选项增强版的 font-face 结构:

```

@font-face {
     font-family: ‘FontName‘;
     src: url(‘FileName.eot‘);
     src: url(‘FileName.eot?#iefix‘) format(‘embedded-opentype‘),
          url(‘FileName.woff‘) format(‘woff‘),
          url(‘FileName.ttf‘) format(‘truetype‘),
          url(‘FileName.svg#FontName‘) format(‘svg‘);
     font-style: normal;
     font-weight: normal;
 }

```

3. 模糊匹配

如果有些缩写你拿不准,Emmet 会根据你的输入内容匹配最接近的语法,比如输入 `ov:h`、`ov-h`、`ovh` 和 `oh`,生成的代码是相同的:

```
  overflow: hidden;

```

4. 供应商前缀

CSS3 等现在还没有出正式的 W3C 规范,但是很多浏览器已经实现了对应的功能,仅作为测试只用,所以在属性前面加上自己独特的供应商前缀,不同的浏览器只会识别带有自己规定前缀的样式。然而为了实现兼容性,我们不得不编写大量的冗余代码,而且要加上对应的前缀。使用 Emmet 可以快速生成带有前缀的 CSS3 属性。

在任意字符前面加上一条横杠(-),即可生成该属性的带前缀代码,例如输入 `-foo-`css,会生成:

```

-webkit-foo-css: ;
 -moz-foo-css: ;
 -ms-foo-css: ;
 -o-foo-css: ;
 foo-css: ;

```

虽然 foo-css 并不是什么属性,但是照样可以生成。此外,你还可以详细的控制具体生成哪几个浏览器前缀或者先后顺序,使用 `-wm-trf` 即可生成:

```

-webkit-transform: ;
 -moz-transform: ;
 transform: ;

```

可想而知,w 就是 webkit 前缀的缩写,m 是 moz 前缀缩写,s 是 ms 前缀缩写,o  就是 opera 浏览器前缀的缩写。如果使用 `-osmw-abc` 即可生成:

```

-o-abc: ;
 -ms-abc: ;
 -moz-abc: ;
 -webkit-abc: ;
 abc: ;

```

5. 渐变背景

CSS3 中新增加了一条属性 `linear-gradient` 使用这个属性可以直接制作出渐变的效果。但是这个属性的参数比较复杂,而且需要添加实验性前缀,无疑需要生成大量代码。而 在 Emmet 中使用 `lg()`指令即可快速生成,例如:使用 `lg(left,#fff,50%,#000)`可以直接生成:

```

background-image: -webkit-gradient(linear, 0 0, 100% 0, color-stop(0.5, #fff),  to(#000));
 background-image: -webkit-linear-gradient(left, #fff 50%, #000);
 background-image: -moz-linear-gradient(left, #fff 50%, #000);
 background-image: -o-linear-gradient(left, #fff 50%, #000);
 background-image: linear-gradient(left, #fff 50%, #000);

```

6. 附加功能

生成Lorem ipsum文本

Lorem ipsum 指一篇常用于排版设计领域的拉丁文文章,主要目的是测试文章或文字在不同字型、版型下看起来的效果。通过 Emmet,你只需输入 lorem 或 lipsum 即可生成这些文字。还可以指定文字的个数,比如 `lorem10`,将生成:

```

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Explicabo, esse,  provident, nihil laudantium vitae quam natus a earum assumenda ex vel  consectetur fugiat eveniet minima veritatis blanditiis molestiae harum est!

```

## 定制

你还可以定制Emmet插件:

- 添加新缩写或更新现有缩写,可修改 snippets.json 文件

- 更改Emmet过滤器和操作的行为,可修改 preferences.json 文件

- 定义如何生成HTML或XML代码,可修改 syntaxProfiles.json 文件

如何自定义 Emmet 语法可参考:<http://qianduanblog.com/post/sublime-text-3-custom-emmet-output-bootstrap-widget.html>;github 上 一丝的 [Emment-plus](https://github.com/yisibl/emmet-plus) 也推荐

## 快捷键

- Ctrl+,: 展开缩写

- Ctrl+M: 匹配对

- Ctrl+H: 使用缩写包括

- Shift+Ctrl+M: 合并行

- Ctrl+Shift+?: 上一个编辑点

- Ctrl+Shift+?: 下一个编辑点

- Ctrl+Shift+?: 定位匹配对

Emmet 的官方 API 列表在[这里](http://docs.emmet.io/cheat-sheet/),有一个图片版本可以[点此下载](http://bubkoo.qiniudn.com/emmet-api.jpg)

CSS 部分转自[HTML/CSS 速写神器:Emmet](http://bubkoo.com/2014/01/04/emmet-a-toolkit-for-improving-html-css-workflow/),因为写着写着发现 bubkoo 差不多给我要写的写完了。所以就摘抄下(不要打我),

其余参考:[Emmet官方文档](http://docs.emmet.io/cheat-sheet/)。

时间: 2024-10-06 16:54:53

Emmet 语法的相关文章

emmet语法列表

emmet语法 Child: > nav>ul>li <nav> <ul> <li></li> </ul> </nav> Sibling: + div+p+bq <div></div> <p></p> <blockquote></blockquote> Climb-up: ^ div+div>p>span+em^bq <div&

Emmet语法规则

Emmet插件仿照CSS语法来生成代码,使用emmet语法可以大大提高HTML/CSS代码书写的速度. 下面就来介绍一下Emmet语法到底应该如何书写; 当熟悉了Emmet的缩写语法之后,可能会想一些格式来生成更清晰可读的缩写,例如,在元素和运算符之间使用空格隔开 (header > ul.nav > li*5) + footer 注意:这种写法是错误的,空格是Emmet停止缩写解析的标志符.很多人会误认为每个缩写都应该写在新的一行上,实际上,可以在文本的任意位置输入和扩展缩写. 还有光标定在

Emmet 语法介绍

一.生成 HTML 文档初始结构 HTML 文档的初始结构,就是包括 doctype.html.head.body 以及 meta 等内容.你只需要输入一个 “!” 就可以生成一个 HTML5 的标准文档初始结构,你没有看错,输入一个感叹号(当然是英文符号),然后摁下 ctrl+E 键,就会发现生成了下面的结构: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&

Emmet 语法大全(缩写语法/sublime 插件)

Emmet 使用类似于 CSS 选择器的语法描述元素在生成的文档树中的位置及其属性. 元素 可以使用元素名(如 div 或者 p)来生成 HTML 标签.Emmet 没有预定义的有效元素名的集合,可以把任何单词当作标签来生成和使用:div → <div></div>, foo → <foo></foo> 等. 嵌套运算符 嵌套运算符用于以缩写的方式安排元素在生成文档树中的位置:将其放在内部或成为相邻的元素. 子: > 可以使用 > 运算符指定嵌套

emmet语法

使用方法 emmet的使用方法也非常简单,以sublime text为例,直接在编辑器中输入HTML或CSS的代码的缩写,然后按tab键就可以拓展为完整的代码片段.(如果与已有的快捷键有冲突的话,可以自行在编辑器中将拓展键设为其他快捷键) 语法: 后代:> 缩写:nav>ul>li <nav> <ul> <li></li> </ul> </nav> 兄弟:+ 缩写:div+p+bq <div></d

Emmet语法实例(帮助快速开发)

写完命令后按键 tab 就可以生成了. 应用于大多数已经内置或可以安装emmet的编辑器下级元素命令 > <!--div>p--> <div> <p></p> </div> 同级元素命 + <!--div+p--> <div></div> <p></p> 上级元素命令 ^ <!--div>p>span^a--> <div> <p>

使用VsCode自带的Emmet语法

新建html文件,保存之后,输入"!",按Tap(或Enter)键,自动生成HTML结构 标签只要直接输入标签名(不要输入<>),按Tap(或Enter)键自动生成完整的标签 输入标签和id:标签名#id名 输入"span#sp",Tap(或Enter)键, => <span id="sp"></span> 输入标签和class值:标签名.class 名 输入"span.Sp",Tap

0012 sublime快捷操作emmet语法

Emmet的前身是Zen coding,它使用缩写,来提高html/css的编写速度. 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键, 就可以生成 如果想要生成多个相同标签 加上 * 就可以了 比如 div*3 就可以快速生成3个div 如果有父子级关系的标签,可以用 > 比如 ul > li就可以了 如果有兄弟关系的标签,用 + 就可以了 比如 div+p 如果生成带有类名或者id名字的, 直接写 .demo 或者 #two tab 键就可以了.demo:p.hah

VScode中进行django开发,解决按tab实现emmet语法。

环境: vscode 1.43.1 Ubuntu 18.04.1 LTS x86_64 Python 3.6.8 pip3: Package          Version------------------- -------astroid 2.3.3 autopep8 1.5 Django 2.0 isort 4.3.21 lazy-object-proxy 1.4.3 mccabe 0.6.1 pip 20.0.2 pycodestyle 2.5.0 pylint 2.4.4 pylint