这是语法的正式EBNF定义。如果您正在寻找易于阅读的示例,请查看标准的第 2 章。
简而言之,S代表空格字符、IDENT标识符(如foobar2)、*零次或多次重复。让我们详细介绍一下:
media_query_list
: S* [media_query [ ',' S* media_query ]* ]?
;
表示 a media_query_list(即可以在 中的所有内容@media ( here ))由一个或多个 组成media_query,以逗号和可选间距分隔。例如,这些是有效media_query_list的 s:
media_query
media_query, media_query, media_query,media_query
的定义在media_query后面给出,在
media_query
: [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
| expression [ AND S* expression ]*
手段有|两种形式。任何一个
media_type
ONLY media_type
NOT media_type
(和可选表达式,用 连接AND),或者只是一个表达式,后面跟着可选的多个其他表达式,用 . 连接AND。
表达式定义如下:
expression
: '(' S* media_feature S* [ ':' S* expr ]? ')' S*
这意味着它总是在括号中,并且仅包含一个media_feature,或一个媒体功能,后跟一个expr. 例如,这些是有效的表达式:
(foo)
(foo: 2px)
在这个定义中,media_typeandmedia_feature可以是任意标识符。在实践中,它们将是浏览器识别的标识符,例如print、screen等max-width。