浏览器CSS解析的词法语法初步介绍
2014-04-10 00:00
1201 查看
和 HTML 不同,CSS 是上下文无关的语法,可以使用简介中描述的各种解析器进行解析。事实上,CSS 规范定义了 CSS 的词法和语法。
让我们来看一些示例吧。
词法语法(词汇)是针对各个标记用正则表达式定义的:
comment \/\*[^*]*\*+([^/*][^*]*\*+)*\/
num [0-9]+|[0-9]*"."[0-9]+
nonascii [\200-\377]
nmstart [_a-z]|{nonascii}|{escape}
nmchar [_a-z0-9-]|{nonascii}|{escape}
name {nmchar}+
ident {nmstart}{nmchar}*
“ident”是标识符 (identifier) 的缩写,比如类名。“name”是元素的 ID(通过“#”来引用)。
语法是采用 BNF(Backus-Naur Form) 格式描述的。
这是一个规则集的结构:
div.error 和 a.error 是选择器。大括号内的部分包含了由此规则集应用的规则。此结构的正式定义是这样的:
这表示一个规则集就是一个选择器,或者由逗号和空格(S 表示空格)分隔的多个(数量可选)选择器。规则集包含了大括号,以及其中的一个或多个(数量可选)由分号分隔的声明。
让我们来看一些示例吧。
词法语法(词汇)是针对各个标记用正则表达式定义的:
comment \/\*[^*]*\*+([^/*][^*]*\*+)*\/
num [0-9]+|[0-9]*"."[0-9]+
nonascii [\200-\377]
nmstart [_a-z]|{nonascii}|{escape}
nmchar [_a-z0-9-]|{nonascii}|{escape}
name {nmchar}+
ident {nmstart}{nmchar}*
“ident”是标识符 (identifier) 的缩写,比如类名。“name”是元素的 ID(通过“#”来引用)。
语法是采用 BNF(Backus-Naur Form) 格式描述的。
ruleset : selector [ ',' S* selector ]* '{' S* declaration [ ';' S* declaration ]* '}' S* ; selector : simple_selector [ combinator selector | S+ [ combinator? selector ]? ]? ; simple_selector : element_name [ HASH | class | attrib | pseudo ]* | [ HASH | class | attrib | pseudo ]+ ; class : '.' IDENT ; element_name : IDENT | '*' ; attrib : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ] ']' ; pseudo : ':' [ IDENT | FUNCTION S* [IDENT S*] ')' ] ;
这是一个规则集的结构:
div.error , a.error { color:red; font-weight:bold; }
div.error 和 a.error 是选择器。大括号内的部分包含了由此规则集应用的规则。此结构的正式定义是这样的:
ruleset : selector [ ',' S* selector ]* '{' S* declaration [ ';' S* declaration ]* '}' S* ;
这表示一个规则集就是一个选择器,或者由逗号和空格(S 表示空格)分隔的多个(数量可选)选择器。规则集包含了大括号,以及其中的一个或多个(数量可选)由分号分隔的声明。
相关文章推荐
- CSS学习之Flex弹性布局语法介绍
- (浏览器解析的)文档流与CSS
- Firefox, IE等不同浏览器对JavaScript,CSS不同解析问题 (转备以后使用)
- css的语法介绍 css基础
- ECMall的模板解析语法介绍
- 浏览器对CSS小数点的解析——坑
- Firefox 浏览器的CSS补丁解析
- ECMall的模板解析语法介绍
- 在浏览器的背后(二) —— HTML语言的语法解析
- WEB前端底层知识之浏览器是如何工作的(4)--Render树与CSS解析
- 求助 javascript以及css滤镜详细介绍,在IE以及火狐、chrome等主流浏览器下的详细应用教程
- CSS基础-1介绍及语法
- 初步学习CSS之定义、分类和基本语法
- CssClass初步语法了解
- 浏览器的解析渲染原理以及js ,css 阻塞问题的分析
- 网站怎么布局能解决不同浏览器对CSS解析的差异,使用css reset
- 避免css中文字体在浏览器中解析成乱码
- 浏览器了解(三)CSS解析
- 【转】不同浏览器CSS解析小结
- 浏览器工作原理(五):CSS解析(CSS parsing)