Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSS2.2【一】标准中关于CSS属性的一些约定 #1

Open
fearnliu opened this issue Nov 14, 2017 · 0 comments
Open

CSS2.2【一】标准中关于CSS属性的一些约定 #1

fearnliu opened this issue Nov 14, 2017 · 0 comments
Labels

Comments

@fearnliu
Copy link
Owner

fearnliu commented Nov 14, 2017

CSS属性定义

W3C的CSS2.2规范针对CSS属性定义的约定如下图所示

image

Value

一个CSS的属性值通常由以下一种或多种类型的组件值构成:

  1. 关键字值(例如,autoinheritunset等)
  2. 基本数据类型,由<>包裹着,例如规范中的<length><percentage>
  3. 与具有相同名称的属性具有相同范围值的类型,这种情况下,类型名字与属性名字相同,例如<'border-width'>
  4. 非终端数据类型,不与属性同名;例如<border-width>

在这些定义中出现的其他单词必须是字面量形式的关键字,不带引号('),斜杠(/),逗号(,)等。

以上几中类型的组件值可能按照以下组合构成属性值:

  • 并列排布的单词,这意味着它们所有必须以被给出的顺序出现
  • 单竖线符号(|)分隔的组件值,有且只有操作符某一侧的值必须出现
  • 双竖线符号(||)分隔的组件值,它们其中一个或多个可以任何顺序出现
  • 双且符号(&&)分隔的组件值,它们所有必须出现,可以任何顺序出现
  • 中括号([ ])包裹的组件值,主要用于划分分组

以上几种操作符的优先级由强到弱依次如下:

 并列排布 强于 && 强于 || 强于 |

例如:

a b | c || d && e f

等价于

[ a b ]  |  [ c  ||  [ d  &&  [ e f ] ]

另外,每个类型值,关键字或者分组后面可以跟随以下修饰符:

  • *,表示其之前的类型、单词或者分组可以出现0次或者多次
  • +,表示其之前的类型、单词或者分组可以出现1次或者多次
  • ?,表示其之前的类型、单词或者分组可以出现0次或者1次
  • {A, B},表示其之前的类型、单词或者分组至少出现A次,至多出现B次。

Initial

指明属性的初始值。

Applies to

列出属性适用的元素。所有元素都被认为具有所有属性,但是某些属性对某些类型的元素没有渲染效果。

Inherited

指明属性的值是否可以从祖先元素继承。

Percentage values

指明如何解释属性的百分比,前提是百分比对于属性值是合法的。如果此处为N/A,则表示属性不接受百分比值。

Media groups

指明属性可以应用的媒体组。

Computed value

描述属性的计算值。

简写属性

有些属性是简写属性,就是多个简单属性放在一起的速记写法,也可以理解为综合了多个简单属性的复合属性。

例如,font属性就是font-stylefont-varinatfont-weightfont-sizeline-heightfont-family多个属性的简写属性。

值得注意的是,当省略了简写属性中某些对应位置上的值时,那么对应的简单属性就会被分配到其属性的Initial Value

@fearnliu fearnliu added the CSS label Nov 14, 2017
@fearnliu fearnliu changed the title CSS2.2【一】标准中的一些约定 CSS2.2【一】标准中关于CSS属性的一些约定 Nov 14, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant