辽宁铁岭人,现居大连。1970年生。 先后供职于 中国国际海运网、大连学堂科技、大连华仁视线网络科技有限公司、大连中科海云科技有限公司,任职技术总监。 精通PHP、JAVA、Javascript、HTML、CSS等网络编程技术及Linux操作系统。 精通面向对象编程、设计模式、重构及互联网产品设计。
分类: Html/Css
2013-04-10 14:46:17
元素类型
在 HTML 和 XML 文档中,当展开缩写时,所有缩写部分都实时转换成 HTML/XML 标签。但是某些标签——如 a 或者 img——转换成带有预定义属性的元素: 的 。Emmet 怎么知道什么时候添加所需的属性呢?
所有元素定义都以如下格式存放在 文件中:
{ "html": { "abbreviations": { "a": "<a href=\"\">", "link": "<link rel=\"stylesheet\" href=\"\" />" ... }, "snippets": { "cc:ie6": "" ... } }, "css": { ... } }
正像上面的代码展示的那样,第一级定义了语法名称。语法一节内元素定义被分成了两个小节: snippets(片段) 和 abbreviations(缩写)。
Snippets(片段)就是普通的代码块,和所有程序编辑中的普通代码一样。可以在这一部分键入任何内容,它将被原样输出。
Abbreviations(缩写)是带有数据提示的真实构建块。由于 Emmet 常用于书写 HTML/XML 标签,缩写定义使用 XML 格式来描述元素。
Emmet 解析缩写定义并检索以下数据:
仔细观察上面的 HTML 缩写定义。link 元素的定义是 (双绰号被 JSON 忽略;或者用单绰号代替)。这个定义是说此标签是用来生成 link 的缩写,它被命名为 link 并且饮食两个属性:带有默认值 “stylesheet” 的 rel 和带有空值的 href (严格遵造顺序),并且生成的元素包含关闭标签。
当 link 缩写被展开时,将得到如下 HTML 输出:
<link rel="stylesheet" href="">
允许覆盖默认属性或者添加新属性:
link[rel=prefetch title="Hello world"]
生成:
<link rel="prefetch" href="" title="Hello world">
还可以添加子元素,这将强制 Emmet 输出关闭标签:
link>xsl:apply-templates
将输出:
<link rel="stylesheet" href=""> <xsl:apply-templates>xsl:apply-templates> link>
Aliases(别名)
在 snippets.json 的缩写一节,还能够定义别名:常用缩写的短写形式。别名能够用来定义:
在 snippets.json 文件中,可以找到如下定义:
...
"html": {
"abbreviations": {
"bq": "blockquote",
"ol+": "ol>li"
}
}
上面的示例中,当展开 bq 缩写,Emmet 会找到 blockquote 缩写的定义。如果它不存在,将简单的输出
元素。ol+ 缩写的输出结果与 ol>li 相同。ol+ 定义可能会产生歧义,因为它的末尾包含 + , + 还是 sibling(兄弟)运算符。Emmet 正确地展开这些缩写,并且加号由于历史原因遗留了下来。需要记住的是,不要使用加号来创建缩写的别名。