日前写了一篇关于VS神级插件Web Essentials的系列博客,其中在HTML&CSS操作技巧一节简单提到了ZenCoding,今天来详细说一下这个东西。

摘要

Zen Coding是一种使用CSS样式选择器语法更快速地编写HTML的方式。如果你使用的是VS,那么你可以安装了VS的插件Web Essentials之后,就可以使用Zen Coding编码方式了,关于Web Essentials的下载,请转到这里。如果你是用的其他编辑器,请到这里下载安装(需要FanQiang)。Zen Coding是2009年提出来的,已经更新了多次,正在变成更加有效地编写无聊的HTML受人欢迎的方式。

快速指南

下面是一些常用的Zen Coding功能,目前VS2013的Web Essentials插件已经支持。

  • '#' 创建一个id特性
  • '.' 创建一个类特性
  • '[]' 创建一个自定义特性
  • '>' 创建一个子元素
  • '+' 创建一个兄弟元素
  • '^' 提升元素层次
  • '*' 相当于乘号,会创建n次相同的东西。
  • '$' 代替一个自增的数字。
  • '$$' 用于有填充位的数字,比如00,01。
  • '{}' 创建元素的文本。

可以做些啥呢?看下面这个复杂的例子:

div#olDiv>ol>li.item*6>span{ZenCoding$$}.red

按下Tab键后,它会生成下面的代码:

<div id="olDiv">
<ol>
<li class="item">
<span class="red">ZenCoding01</span>
</li>
<li class="item">
<span class="red">ZenCoding02</span>
</li>
<li class="item">
<span class="red">ZenCoding03</span>
</li>
<li class="item">
<span class="red">ZenCoding04</span>
</li>
<li class="item">
<span class="red">ZenCoding05</span>
</li>
<li class="item">
<span class="red">ZenCoding06</span>
</li>
</ol>
</div>

ID和Class特性:#和.

使用CSS样式语法可以创建一个元素,并给它赋予id或class特性。

div#container.layout会生成下面的代码:

<div id="container" class="layout"></div>

自定义特性:[]

可以使用中括号[]创建任何特性。

div[title]会生成下面的代码:

<div title=""></div>

也可以创建多个特性并给特性赋值:

input[placeholder="请输入姓名" type="text"]会生成下面的代码:

<input type="text" value="" placeholder="请输入姓名" />

子元素:>

先要创建一个元素,然后才能创建它的子元素。

比如,form#loginForm.login>input[type="text"]会生成下面的代码:

<form id="loginForm" class="login">
<input type="text" value="" />
</form>

兄弟元素:+

使用Zen Coding可以很轻松地创建兄弟元素。

footer>div>a+input可以生成下面的代码:

<footer>
<div>
<a href=""></a>
<input type="" value="" />
</div>
</footer>

提升元素层次:^

>符号会降低元素的层次,然而^符号的作用相反,它是用来提升元素的层次的,而且还可以提升多个级别。比如,1可以提升一个级别,4可以提升4个级别。该功能不常用。

footer>div>a+input^^p,p标签要在input级别的基础上提升2个层次,这样p标签就和最外层的footer标签处于同一级别,所以,生成的代码如下:

<footer>
<div>
<a href=""></a>
<input type="" value="" />
</div>
</footer>
<p></p>

乘积:*

创建n个同样的元素。

ul>li*6会生成下面的代码:

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

元素序号:$

当使用乘积*创建n个同样的元素时,可以使用$给它们添加一个自增的数字。注意:使用多个$操作符(如$$)会创建使用多个0填充的数字。

ul>li#id$$$*4会生成下面的代码:

<ul>
<li id="id001"></li>
<li id="id002"></li>
<li id="id003"></li>
<li id="id004"></li>
</ul>

元素中的文本:{}

要给元素输入文本时,可以使用{}符号。

ul>li*10>span{Windows $}会生成以下代码:

<ul>
<li>
<span>Windows 1</span>
</li>
<li>
<span>Windows 2</span>
</li>
<li>
<span>Windows 3</span>
</li>
<li>
<span>Windows 4</span>
</li>
<li>
<span>Windows 5</span>
</li>
<li>
<span>Windows 6</span>
</li>
<li>
<span>Windows 7</span>
</li>
<li>
<span>Windows 8</span>
</li>
<li>
<span>Windows 9</span>
</li>
<li>
<span>Windows 10</span>
</li>
</ul>

联合所有的符号

联合多个功能可以更快地编写一些相当酷的HTML,甚至可以为模板创建一些Knockout.js的绑定,然后只需要改变属性名就行了。

例如section[data-bind="foreach:customers"]>div*4>input[type="text" data-bind="text:$$"]会生成下面的代码:

<section data-bind="foreach:customers">
<div>
<input type="text" value="" data-bind="text:01" /></div>
<div>
<input type="text" value="" data-bind="text:02" /></div>
<div>
<input type="text" value="" data-bind="text:03" /></div>
<div>
<input type="text" value="" data-bind="text:04" /></div>
</section>

组合:()

组合是Zen Coding中强大的功能,它可以创建复杂的表达式。

例如 div>(header>div)+section>(ul>li*2>a)+footer>(div>span)可以生成下面的代码:

	<div>
<header>
<div></div>
</header>
<section>
<ul>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
<footer>
<div>
<span></span>
</div>
</footer>
</section>
</div>

补充

如果你还想了解更多的快捷语法,请下载这个表单文件(需要FanQiang)。

让ZenCoding提升编码速度的更多相关文章

  1. delphi 编码速度提升技能

    效率,是一个永恒的主题. 本文重点强调 delphi ide 中的编码速度技能 一.TForm 窗口重用 当您在写一个管理类软件的时候,有大量的操作窗口,这些窗口会有大量共性.窗口重用就会发挥很大的作 ...

  2. JavaScript的工作原理:解析、抽象语法树(AST)+ 提升编译速度5个技巧

    这是专门探索 JavaScript 及其所构建的组件的系列文章的第 14 篇. 如果你错过了前面的章节,可以在这里找到它们: JavaScript 是如何工作的:引擎,运行时和调用堆栈的概述! Jav ...

  3. Docker实用技巧之更改软件包源提升构建速度

    一.开篇 地球,中国,成都市,某小区的阳台上,一青年负手而立,闭目沉思,阵阵的凉风吹得他衣衫呼呼的飘.忽然,他抬起头,刹那间,睁开了双眼,好似一到精光射向星空,只见这夜空......一颗星星都没有.他 ...

  4. 13 nginx gzip压缩提升网站速度

    一:nginx gzip压缩提升网站速度 我们观察news.163.com的头信息 请求: Accept-Encoding:gzip,deflate,sdch 响应: Content-Encoding ...

  5. COCOS2DX 3.0 优化提升渲染速度 Auto-batching

    COCOS2DX 3.0 优化提升渲染速度 Auto-batching 近期在看COCOS2DX 3.0的Auto-batching合批与Auto Culling动态缩减功能以下就来细致看看吧:整合好 ...

  6. nginx之gzip压缩提升网站速度

    目录: 为啥使用gzip压缩 nginx使用gzip gzip的常用配置参数 nginx配置gzip 注意 为啥使用gzip压缩 开启nginx的gzip压缩,网页中的js,css等静态资源的大小会大 ...

  7. laravel使用手札——使用PHPStorm提升开发速度

    laravel使用手札——使用PHPStorm提升开发速度 phpstormphplaravel  阅读约 4 分钟 PHPStorm安装 PHPStorm 使用手札——安装看这里 代码自动提示支持 ...

  8. Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡

    文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...

  9. Java动态编译优化——提升编译速度(N倍)

    一.前言 最近一直在研究Java8 的动态编译, 并且也被ZipFileIndex$Entry 内存泄漏所困扰,在无意中,看到一个第三方插件的动态编译.并且编译速度是原来的2-3倍.原本打算直接用这个 ...

随机推荐

  1. NopCommerce 框架系列(一)

    今天,终于抽出时间来写写博文,也希望自己能养成写博文的好习惯,大神勿喷. 我从NopCommerce官网上下载了源码,以便自己学习研究,如有需要下载源码的朋友,请点击链接: http://www.no ...

  2. python 类变量 在多线程下的共享与释放问题

    最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...

  3. 搭建高可用mongodb集群(一)——配置mongodb

    在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...

  4. C#时间戳转成php的time()

    DateTime timeStamp = new DateTime(1970,1,1);  //得到1970年的时间戳 long a = (DateTime.UtcNow.Ticks - timeSt ...

  5. RTP在。net中的使用(资料)

    开源组件:lumisoft 网址:http://www.lumisoft.ee/lswww/download/downloads/Examples/ 非开源的免费组建:rtp.net (微软推荐)

  6. 解决ORA-00824: cannot set sga_target due to existing

    今天Linux服务器机子重启了下,Oracle启动不起来,提示:解决ORA-00824: cannot set sga_target due to existing 看了很多解决方法,发现下面这个特别 ...

  7. css3中的字体样式

    text-overform:ellipsis省略号/clip裁剪. overform:hidden溢出隐藏文字. 但是text-overflow只是用来说明文字溢出时用什么方式显示,要实现溢出时产生省 ...

  8. PBX220 测评一

    //纯粹个人看法,可能包含非常不恰当的主观看法,敬请见谅. 本次测试的是易用科技Speedytel 新出的产品 PBX-220.      测试环境为:华硕EeePC(IE7).Eyebeam. 先来 ...

  9. 一句话的代码,从集合中找出第一个重复字符的方法javascript版。

    有的时候需求是这样的: 找出集合中第一个重复的字符所在的位置,刚才看了园内某自许为算法的代码,感觉非常之啰嗦故写了以下代码! 本人对神马算法之类的完全不懂,但那些伪算法家们也别出来装蒜.一句话:不要欺 ...

  10. javascript鸭式辩型法实现接口

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...