HTML代码写起来很费事,因为它的标签多。

一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容。还有一种就是我今天想要介绍的方法—-简写法。

常用的简写法,目前主要是EmmetHaml两种,本文都将加以介绍。

这两种简写法,功能相近,各有特点。考虑到Haml基于Ruby语言,我建议Ruby/Rails项目使用Haml,其他项目使用Emmet。

一、Emmet的用法

Emmet是一个编辑器插件,官方网站提供多编辑器支持。我一般使用vim,下面就以vim插件举例。

首先,按照vim插件文档进行安装。然后,新建一个文本文件,键入

  1.   html:5

按一下”<Ctr+y>,”(先按ctrl键+y键,然后再按逗号键,不同的编辑器有不同的转化键),这一行就立刻变成下面的样子。

  1.   <!DOCTYPE html>
  2.   <html lang="en">
  3.   <head>
  4.     <meta charset="UTF-8">
  5.     <title></title>
  6.   </head>
  7.   <body>
  8.   </body>
  9.   </html>

这就是Emmet的基本用法:先写简写形式,然后用”<Ctrl+y>,”将其转成HTML代码。

Emmet支持的简写规则,类似于CSS选择器(大写的E代表一个HTML标签):

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

请看下面的例子。

  1.   p
  2.   p#main.item
  3.   a[href=http://wikipedia.org]{维基百科}
  4.   div>p
  5.   div+p
  6.   p>span^div

对应的HTML代码为:

  1.   <p></p>
  2.   <p id="main" class="item"></p>
  3.   <a href="http://wikipedia.org">维基百科</a>
  4.   <div>
  5.     <p></p>
  6.   </div>
  7.   <div></div>
  8.   <p></p>
  9.   <p><span></span></p>
  10.   <div></div>

Emmet还提供了连写(E*N)和自动编号(E$*N)功能。

  1.   li*3>a
  2.   div#item$.class$$*3

对应的HTML代码为

  1.   <li><a href=""></a></li>
  2.   <li><a href=""></a></li>
  3.   <li><a href=""></a></li>
  4.   <div id="item1" class="class01"></div>
  5.   <div id="item2" class="class02"></div>
  6.   <div id="item3" class="class03"></div>

下面是另外一些简写的例子,读者可以自行测试,看看它们转化成怎样的HTML代码。

  1.   header+main+footer
  2.   table>(thead>tr>th*5)(tbody>tr>td*5)
  3.   nav>ul>(li>a[href=#]{Link})*5

Emmet使用按键”<Ctrl+y>/”,让一个代码块变成HTML注释。更多功能请参考以下链接:

  * Zeno Rocha, Goodbye, Zen Coding. Hello, Emmet!

* Sergey Chikuyonok, Zen Coding: A Speedy Way To Write HTML/CSS Code

* Joshua Johnson, 7 Awesome Emmet HTML Time-Saving Tips

* Zen-coding vim tutorial

二、Haml的用法

Haml不同于emmet,它是一个命令行工具。需要先安装Ruby语言,再安装Haml。

  1.   gem install haml

使用时,用命令行将haml文件一次性转为html文件。

  1.   haml input.haml output.html

haml的简化规则如下:

  1.   1. !!! 5 代表 <!DOCTYPE html>
  2.   2. %E 代表HTML标签。
  3.   3. %E#id 代表id属性。
  4.   4. %E.class 代表class属性。
  5.   5. %E(attr="xxx") 代表某一个特定属性。
  6.   6. %E XXX 代表插入标签的内容。
  7.   7. %E %N 代表N是E的子元素。N如果写在第二行,需要缩进。

下面是Haml的代码示例,代码块的层级关系用缩进表示。

  1.   !!! 5
  2.   %html{lang: 'en'}
  3.     %head
  4.       %title Haml Demo
  5.     %body
  6.       %h1 Hello World
  7.       %a(href="http://wikipedia.org" title="Wikipedia") 维基百科

对应的HTML代码为:

  1.   <!DOCTYPE html>
  2.   <html lang='en'>
  3.     <head>
  4.       <title>Haml Demo</title>
  5.     </head>
  6.     <body>
  7.       <h1>Hello World</h1>
  8.       <a href='http://wikipedia.org' title='Wikipedia'>维基百科</a>
  9.     </body>
  10.   </html>

在Haml中,”/ “起首的行表示HTML注释,”-# “起首的行表示Haml注释。

HTML的快速写法:Emmet和Haml的更多相关文章

  1. HTML代码简写法:Emmet和Haml

    http://www.ruanyifeng.com/blog/2013/06/emmet_and_haml.html?bsh_bid=657901854 HTML代码简写法:Emmet和Haml   ...

  2. HTML代码简写法:Emmet和Haml(转)

    HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法----简写法. 常用的简写法,目前主要是Emmet和Haml ...

  3. emmet,jade,haml, slim,less,sass,coffeescript等的实战优缺点

    摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 随着前端技术的蓬勃发展, 各种新技术随着生产力的需要不断的涌入我们的视野, 那今天探讨的话题是这些新时代的前端兵器谱: 一. ...

  4. ios 几种快速写法

    //NSString .... NSString *str1 = @"str1"; NSLog(@"str %@",str1); //NSArray NSArr ...

  5. 今天发现新大陆:haml和Emmet

    其实一开始小渣渣我只是想接触一下(css预处理器)sass,可是突然冒出一个haml. 原文是酱紫的. Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言,它诞生于2007年,是最大的成熟 ...

  6. 使用Emmet 快速生成HTML代码

    在前端开发的过程中,一个最繁琐的工作就是写 HTML.CSS 代码.数量繁多的标签.属性.尖括号.标签闭合等,让前端们甚是苦恼.于是,我向大家推荐 Emmet,它提供了一套非常简单的语法规则,书写起来 ...

  7. 工欲善其事必先利其器,用Emmet提高HTML编写速度

    HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板,在别人写好的骨架内,填入自己的内容.还有一种很炫的方法----简写法. 常用的简写法,目前主要是Emmet和Haml两种.这两种简写 ...

  8. 前端学习笔记之HTML/CSS 速写神器 Emmet

    HTML/CSS 速写神器:Emmet 在前端开发的过程中,一个最繁琐的工作就是写 HTML.CSS 代码.数量繁多的标签.属性.尖括号.标签闭合等,让前端们甚是苦恼.于是,我向大家推荐 Emmet, ...

  9. 转载:HTML/CSS 速写神器:Emmet

    转载在http://bubkoo.com/2014/01/04/emmet-a-toolkit-for-improving-html-css-workflow/ 在前端开发的过程中,一个最繁琐的工作就 ...

随机推荐

  1. ios开发者到真机测试

    ios就是矫情, 没事搞那么多步奏, 搞得我都不会弄了, 不懈努力后还是弄好了, 总结一下, 避免新人走弯路. 苹果的脾气就是这样, 只能慢慢学了 1.  生成CSR (开发者证书认证请求) 打开钥匙 ...

  2. change column to bigint

    今天存储数据的时候报错,发现是3435065640超出了常规int的存储长度, RangeError (3435065640 is out of range for ActiveRecord::Typ ...

  3. 最近win7更新后出现第二次打开IDE(delphi2007)的时候提示无法打开"EditorLineEnds.ttr"这个文件

    kb2982791 - 2014年8月12日更新 - http://support.microsoft.com/kb/2982791kb2970228 - 2014年8月12日更新 - http:// ...

  4. (转)搞ACM的你伤不起

    劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! 谁再跟 ...

  5. Linux rpm安装问题解决

    1.安装时提示:warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105b9de: NOKEY 解决的方法就是在rpm 语句后面加上 ...

  6. encode和decode

    Python字符串的encode与decode研究心得乱码问题解决方法 为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters ...

  7. 在64位的linux上运行32位的程序

    1.症状 (1)执行bin文件时提示:No such file or directory (2)ldd bin文件  的输出为: not a dynamic executable (3)file bi ...

  8. scrapy爬虫成长日记之将抓取内容写入mysql数据库

    前面小试了一下scrapy抓取博客园的博客(您可在此查看scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据),但是前面抓取的数据时保存为json格式的文本文件中的.这很显然不满足我 ...

  9. MinGW/MSYS 交叉编译环境搭建

    因为包的依赖关系不清楚,搭建时出错也不知道是什么原因,下面链接老外写的搭建步骤,写的非常详细还有脚本 已经编译的下载地址 http://ingar.satgnu.net/devenv/mingw32/ ...

  10. codeforces A. Cinema Line 解题报告

    题目链接:http://codeforces.com/problemset/problem/349/A 题目意思:题目不难理解,从一开始什么钱都没有的情况下,要向每一个人售票,每张票价格是25卢布,这 ...