Zen Coding: 一种快速编写HTML/CSS代码[译](2)
作者:神采飞扬 来源:前端观察 发布时间:2009-12-16 12:53:00
展开缩写
展开缩写功能将类似CSS的选择器转换为XHTML代码。术语“缩写”可能会有点儿难以理解。为什么不直接称之为“CSS选择器”呢?嗯,首要原因是语义化:“选择器”意为选择一些东西,但是在这里我们事实上是生成 一些东西,是写一个长代码的较短的替代。其次,它只是使用真实的CSS选择器语法的一个小的子集,并添加了一些新的操作符。
这里是一个支持的属性和操作符的列表:
E
元素名称(div, p);E#id
使用id的元素(div#content, p#intro, span#error);E.class
使用类的元素(div.header, p.error.critial). 你也可以联合使用class和idID: div#content.column.width;E>N
子代元素(div>p, div#footer>p>span);E+N
兄弟元素(h1+p, div#header+div#content+div#footer);E*N
元素倍增(ul#nav>li*5>a);E$*N
条目编号 (ul#nav>li.item-$*5);
正如你能看到的,你已经知道如何使用Zen Coding了:只是些一个简单的仿CSS选择器(呃,“缩写”抱歉),就像这样…
div#header>img.logo+ul#nav>li*4>a
…然后调用”展开缩写”行为。
这里有两个新增的操作符:元素倍增和条目编号。比如,如果你想生成5个<li>元素,你可以简单的写位li*5。它也将同样重写全部子代元素。如果你想写4个<li>元素,每个里面都有一个<a>标签,你就可以简单的写为li*4>a,这样会生成以下HTML代码:
<li><a href=""></a></li><li><a href=""></a></li><li><a href=""></a></li><li><a href=""></a></li>
最后一个——条目编号用于当你想用索引标记重复的元素的情况。假设你想生成class为item1、item2和item3的3个<div>元素。你可以写成这样的缩写,div.item$*3:
<div class="item1"></div><div class="item2"></div><div class="item3"></div>
只需在你想要索引出现的任何class或id属性上添加一个美元符号即可,而且想要多少都可以。那么,这样…
div#i$-test.class$$$*5
会被转换成为:
<div id="i1-test" class="class111"></div><div id="i2-test" class="class222"></div><div id="i3-test" class="class333"></div><div id="i4-test" class="class444"></div><div id="i5-test" class="class555"></div>
你会看到,当你写a的缩写的时候,输出是<a href=”"></a>。或者,如果你写img,输出就是<img src=”" alt=”" />。
Zen Coding是如何知道什么时候应该为生成的标签添加默认的属性或者跳过关闭标签的?有一个专门的文件,名为zen_settings.js描述了输出元素。这是一个简单的JSON文件,描述每种语言的缩写(是的,你可以为不同的句法定义缩写,比如HTML、XSL、CSS等)。通用的语言缩写定义看起来就像这样:
'html': { 'snippets': { 'cc:ie6': '<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->', ... }, 'abbreviations': { 'a': '<a href=""></a>', 'img': '<img src="" alt="" />', ... } }


猜你喜欢
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- TF-IDF(term frequency–inverse document frequency)是一种用于信息检索(information
- Geohash 是一种地址编码,它能把二维的经纬度编码成一维的字符串。比如,北海公园的编码是wx4g0ec1。Geohash 的原理、算法下
- vscode安装python库1.已经在vscode中装了python并配置好python运行环境。检查是否正确配置好运行环境,按Windo
- 前言相信大家应该都有所体会,在目前的软件项目中,都会较多的使用到对文档的操作,用于记录和统计相关业务信息。由于系统自身提供了对文档的相关操作
- 问题:如何保护自己的ASP源代码不泄露? 答:下载微软的Windows Script Encoder,对ASP的脚本和客户端javascri
- 本文实例讲述了Python设计模式之建造者模式。分享给大家供大家参考,具体如下:建造者模式(Builder Pattern):将一个复杂对象
- 在numpy中的ndarry是一个数组,因此index就是位置下标,注意下标是从0开始增加:在插入时使用np.insert(),在末尾添加时
- 在django1.9之前,数据库同步只需要一条命令:python manage.py syncdb在djang1.9以后,数据库同步执行指令
- var Fundamental = {count:1}; function Test(){} Test.prototype = Fundam
- 120726 11:57:22 [Warning] 'user' entry 'root@localhost.loc
- 概述在绝大部分的开发语言中与实际开发过程中,Dictionary扮演着举足轻重的角色。从我们的数据模型到服务器返回的参数到数据库的应用等等,
- 说明Django 默认的用户表 auth_user 包含 id, password, last_login, is_superuser, u
- 本文实例讲述了关于php中SimpleXML 函数的用法,此函数是允许您把 XML 转换为对象,分享给大家供大家参考。具体分析如下:Simp
- 一、前期准备1、安装好python3,可以在anaconda中安装python3。2、一个合适的双目摄像头。3、一台可以运行Matlab的电
- 本文实例为大家分享了python编写实现抽奖器的具体代码,供大家参考,具体内容如下# coding=utf-8import sysimpor
- 要写一个类似tomcat的简易服务器,首先需弄清楚这几点:1. 客户端(Client)和服务端(Server)的角色及作用角色A向角色B请求
- 交换变量 x = 6y = 5x, y = y, xprint x>>> 5print y>>>
- 一、'建立register.asp 代码如下:<%@ language=vbscript %>&nb
- 触发器是一种特殊的存储过程,触发器主要是通过事件进行触发而被自动调用执行,而存储过程必须通过存储过程的名称被调用。一、触发器的定义触发器是在