在本文中,我们将展示一种通过使用模仿CSS选择器的语法来快速开发HTML和CSS的新方法。它是由谢尔盖奇库约诺克开发的。你花多少时间写HTML代码(包括所有标签、属性、引用、大括号等。)?如果你的编辑器有代码提示功能,你会更容易编写,但即便如此,你也要手动输入大量代码。在JavaScript中,当我们想要获取页面上的特定元素时,会遇到同样的问题,必须编写大量代码,这就变得难以维护和重用。JavaScript框架应运而生,它们还引入了CSS选择器引擎。现在,您可以使用简单的CSS表达式来获取DOM元素,这非常酷。但是,如果您不仅可以使用CSS选择器来布局和定位元素,还可以生成代码呢?比如这样写:复制代码如下: div#contenth1 p …然后可以看到输出:复制代码如下: div id=' content ' h1/h1p/p/div,上面的效果可以用dreamweaver来测试,Dreamweaver v.0.7的扩展下载地址Zen Coding是不是有些混乱?今天,我将介绍Zen Coding,一套用于快速HTML和CSS编码的工具。最初是Vadim Makeev在2009年4月提出的(文章用的是俄语),由我(也就是我)开发了几个月,终于达到了一个比较成熟的状态。Zen Coding由两个核心组件组成:一个缩写扩展器(缩写为类似CSS的选择器)和一个上下文无关的HTML标记对匹配器。看看这个演示视频,看看他们能为你做些什么。注:原视频位于Vimeo,但如果想看,需要翻翻【和谐】墙。地址在这里:http://vimeo.com/7405114.上面的视频是从Vimeo下载上传到优酷的,但是上传后质量大打折扣。youtube上也有一段视频,是基于Aptana的演示。同样精彩的是:http://www.youtube.com/watch?PS:看似youtube比Vimeo更容易翻越【和谐】墙,但如何翻越【和谐】墙已经超出了本网站的范围。如果你想跳转到详细的介绍和用户指南,请看看演示页面,立即下载你适用的插件:
如果你想写四个li元素,每个元素里面都有一个A标记,你可以简单的把它们写成li*4a,这样会生成如下的HTML代码:复制代码如下: lia href=' '/A/lilia href=' '/A/lilia href=' '/A/lilia href=' '/A/lilia href=' '/A/Li最后3355。假设您想用类item1、item2和item3生成三个div元素。你可以写这个缩写,div.item$*3:复制代码如下: div class=' item 1 '/div div class=' item 2 '/div div class=' item 3 '/div只需给你想要索引的任何类或id属性添加一个美元符号,你可以使用任意多个。所以,这样…复制的代码如下:div # I $-test.class $ $ * 5将转换为:复制的代码如下: Div id=' i1-test ' class 111 '/Div id=' I2-test ' class 222 '/Div id=' i3-test ' class 333 '/Div id=' i4-test ' class 444 '/Div id=' i5-test ' class 555 '/Div Zen编码如何知道何时向生成的标记添加默认属性或跳过结束标记?有一个名为zen_settings.js的特殊文件描述了输出元素。这是一个简单的JSON文件,描述了每种语言的缩写(是的,您可以为不同的语法定义缩写,如HTML、XSL、CSS等。).通用语言缩写定义如下:复制的代码如下: ' html ' : { ' snippets ' 3360 { ' cc 3360 ie 6 ' : '!- [if lte IE 6]nt${child}|n![endif]-',},'缩写' : {'a' :' a href=''/a ',' img ' : ' img src=' http 3360 ' alt=' '/',}} 010.片段是随机的代码片段,缩写是标签定义。通过片段,你可以写任何你想要的代码,它会以你写的格式输出。但是您必须手动格式化它(使用n和t来换行和缩进),并将${child}变量放在您想要输出子元素的地方,就像这样:cc:ie6style。如果不使用${child}变量,子元素将在代码片段之后输出。有了缩写,就必须写标签定义,语法非常重要。通常,您必须编写一个包含所有默认属性的简单标签,例如: a href=“”/a .当加载Zen Coding时,它会将一个标签定义解析为一个特定的对象,该对象描述了标签的名称和属性(包括它们的顺序)以及标签是否为空。因此,如果您编写img src=' ' alt=' '/,您将告诉Zen Coding标签必须为空,然后“扩展缩写”行为将在输出之前对其使用特定的规则。对于片段和缩写,您可以添加管道符号,该符号告诉Zen Coding当缩写展开时光标将位于何处。默认情况下,Zen Coding将光标放在空属性的引号之间以及开始和结束标记之间。
然后我决定写我自己的标签对匹配器,作为Zen Coding的一部分。但是,它仍然处于测试阶段,仍然存在一些问题,但是它可以很好地快速工作。它开始从光标的当前位置寻找相关的标签,而不是浏览整个文档(就像匹配器使用HTML标签的通常方式)。这使得它非常快速且不受上下文影响:它甚至可以用于这个JavaScript代码片段:复制代码如下: var table=' tablefor(var I=0;I 3;I){ table=' tr ';for(var j=0;j5;j){ table=' TD ' j '/TD ';} table='/tr ';} table='/table ';00-1010这确实是一个很酷的功能,它结合了缩写和标签对匹配器的功能。有多少次你发现你需要添加一个包元素来修复一个浏览器错误?还是需要给块级内容添加一个装饰,比如背景图片或者边框?您必须编写开始标记,暂时中断代码,找到相关点并关闭标记。这就是“使用缩写包”可以帮助你的地方。该功能非常简单:它要求您输入缩写,然后执行适当的“展开缩写”操作,并将所需的文本放在缩写的最后一个元素中。如果您没有选择任何文本,它将启动标记对匹配器并使用结果。它还可以计算出光标的位置:在标签内容的内部或开始和结束标签之间。根据其位置,它包装标签的内容或标签本身。缩写引入了一种特殊的缩写语法来换行。只需跳转到乘法运算符后的数字,例如:ul # navli * a .当Zen Coding找到一个未定义的乘数时,它会将其作为一个重复元素:它将输出您的章节中的行数,并将每行的内容放在重复元素的最后一个子元素中。如果您包装这个缩写div # headerul # navigationli。此文本周围的项目$ *。Aspan:复制代码如下:关于美国产品newsblog联系起来,你会得到如下结果:复制代码如下: div id=' header ' ul id=' navigation ' Li class=' item 1 ' a href=' spana。关于Us/span/A/Li Li class=' item 2 ' A href=' SPan products/span/A/Li Li class=' item 3 ' A href=' SPan news/span/A/Li Li class=' item 4 ' A href=' SPan blog/span/A/Li class=' item 5 ' A href=' SPan向上联系/span/a/Li/ul/div如您所见,Zen Coding是一个强大的文本处理工具。
安装后,与Zen编码相关的子菜单将出现在Aptana菜单栏的“Script”菜单中。注意:Aptana版本的官方插件基于MAC。如果您使用的是Windows,则需要手动更改快捷键(在每个文件头的注释部分更改)。官方的文件编码有点乱。修改官方js时,请注意编码问题。修改不当将导致相关功能的丧失。00-1010好消息是DreamWeaver插件已经有了Zen编码,坏消息是插件只支持扩展缩写的功能。默认快捷键无效。您只能在“命令”菜单中单击操作。另外,没有测试插件是否只支持CS4版本。但是,作者已经发布了这个插件的源代码,您可以自定义一个Dreamweaver插件。其实官方的DW插件在Windows中有一些bug,就是会有空行。我只是修改了一下,重新编译了一个包。这台机器上的测试很好。感兴趣的童鞋可以试试下载:http://www.boxcn.net/shared/c71z7x7sfePS:官方DW插件已经更新,建议正式下载。新插件增加了更多的功能支持。UPDATE @ 12-23-2009特别推荐:有豪情的同学把缩写付诸实践,总结了很多很棒的用例,推荐大家学习。