HTML/CSS速写神器--Emmet

前端开发过程中总避免不了要写一些HTML和CSS,于是Emmet应运而生,它可以极大的简化我们写代码的流程,提高书写的效率。


Emmet(以前名为Zen Coding)是一套面向文本编辑器的插件,它允许通过内容辅助高速度的编写和编辑HTML、XML、XSL和其他结构化的代码格式。Emmet目前支持多种编辑器,包括一些主流编辑器和IDE,在线编辑器以及第三章插件的的支持。

我用vim来安装和使用Emmet,安装方法见emmet-vim的github文档。

HTML基础语法

安装好后,用 vim index.html 新建文件,键入

html:5

按一下<C-y> ,(先按Ctrl+y,松开后再按,),或者一些编辑器只需要按下Tab就可以了,然后就会惊奇发现,生成了下面的代码。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  
</body>
</html>

原本需要三四分钟的头部被我们几秒搞定了。

再来试一试这个命令

div.hander+div#main$0.column*3^div.footer

发现很轻松就生成了一个圣杯布局的html结构。

  <div class="hander"></div>
  <div id="main1" class="column"></div>
  <div id="main2" class="column"></div>
  <div id="main3" class="column"></div>
  <div class="footer"></div>

现在我们来总结一下刚刚的流程。

打开HTML文件=>键入语法命令=>按下<C-y> ,=>生成代码

需要注意的一点是Emmet的语法中不允许有空格,比如前面的命令为了好看写成
div.hander + div#main$0.column*3 ^ div.footer**

以上全部就是Emmet的工作方式,超简洁的工作流完成重复的工作。

下面列出了HTML简写规则。

  1. E 代表HTML标签。
  2. E#id 代表id属性。
  3. E.class 代表class属性。
  4. E[attr=foo] 代表某一个特定属性。
  5. E{foo} 代表标签包含的内容是foo。
  6. E>N 代表N是E的子元素
  7. E+N 代表N是E的同级元素
  8. E^N 代表N是E的上级元素

我们来逐步体验Emmet的优雅和强大。

生成HTML文档的初始结构

  • html:5! 生成HTML5的初始结构
  • html:xt 生成HTML4过渡型
  • html:4s 生成HTML4严格型

html:xt

<!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></title>
</head>
<body>
  
</body>
</html>

html:4s

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  <title></title>
</head>
<body>

</body>

生成带有id,class的HTML标签

div#name.user

<div id="name" class="user"></div>

div#name.user.user-adim

<div id="name" class="user user-admin"></div>

兄弟 +

div+p+a

<div></div>
<p></p>
<a href=""></a>

后代 >

div>ul>li

<div>
  <ul>
    <li></li>
  </ul>
</div>

上级元素 ^

div>ul>li^p 一个^表示向上一层

<div>
  <ul>
    <li></li>
  </ul>
  <p></p>
</div>

div>ul>li^^p 两个^表示向上两层

<div>
  <ul>
    <li></li>
  </ul>
</div>
<p></p>

重复多份 *

ul>li*5

<ul>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>

分组 ()

div+div>ul>li+div 未分组,最后的div将和li平级

<div></div>
<div>
  <ul>
    <li></li>
    <div></div>
  </ul>
</div>

div+(div>ul>li)+div 分组以后最后一个div将和第一个div平级

<div></div>
<div>
  <ul>
    <li></li>
  </ul>
</div>
<div></div>

属性 [attr]

a[href="http://bubkoo.com" title="bubkoo's blog"] 属性可以写在[ ]内部

<a href="http://www.google.com" title="google"></a>

编号 $

ul>li.list-item$ 一个$可以生成递增的一位数字

<ul>
  <li class="list-item1"></li>
  <li class="list-item2"></li>
  <li class="list-item3"></li>
  <li class="list-item4"></li>
  <li class="list-item5"></li>
</ul>

ul>li.list-item$$ 一个$可以生成递增的两位位数字

<ul>
  <li class="list-item01"></li>
  <li class="list-item02"></li>
  <li class="list-item03"></li>
  <li class="list-item04"></li>
  <li class="list-item05"></li>
</ul>

ul>li.list-item$@3*5 后面加@N可以从数字N计起

<ul>
  <li class="list-item3"></li>
  <li class="list-item4"></li>
  <li class="list-item5"></li>
  <li class="list-item6"></li>
  <li class="list-item7"></li>
</ul>

ul>li.list-item$@-3*5 后面加@-N可以从数字N反向计起

<ul>
  <li class="list-item7"></li>
  <li class="list-item6"></li>
  <li class="list-item5"></li>
  <li class="list-item4"></li>
  <li class="list-item3"></li>
</ul>

文本内容 {}

div>a[href="http://www.google.com"]{google} 文本内容可以用{ }包含起来

<div><a href="http://www.google.com">google</a></div>

经常用到的几个HTML缩写

link:favicon

<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">

link:css

  <link rel="stylesheet" href="style.css" media="all">

a:link

<a href="http://"></a>

form:get

<form action="" method="get"></form>

form:post

<form action="" method="post"></form>

input:text

<input id="" type="text" name="">

input:password

<input id="" type="password" name="">

script:src

<script src=""></script>

CSS简写

简写属性和属性值

w100 属性名加属性值,单位默认为px

width: 100px;

w100p 表示width: 100%;
w100e 表示width: 100em;
w100x 表示width: 100ex;

m10-10--20 中间加-连接多个属性,--中第二个-表示负数

margin: 10px 10px -20px;

h10e+w100p +可连接两个属性

 height: 10em;
 width: 100%;

!

  !important

附加属性

@f 生成字体代码结构

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

@f+ 生成加强版

 @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;
  }
}

浏览器前缀

-foo 属性前面加-,即可添加浏览器前缀

  -webkit-font-smooth: ;
  -moz-font-smooth: ;
  -o-font-smooth: ;
  -ms-font-smooth: ;
  font-smooth: ;

另外,如果输入的缩写不在Emmet中,它将会匹配最接近的那个。

曾经沧海难为水,除却巫山不是云。用过高效编辑工具以后,对各类低效工具都感觉不足以顾了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335