@webref/css 5.4.4 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/CSS.json +450 -21
  3. package/README.md +4 -4
  4. package/SVG.json +42 -35
  5. package/compat.json +111 -75
  6. package/compositing.json +101 -12
  7. package/css-align.json +300 -30
  8. package/css-anchor.json +177 -19
  9. package/css-animations-2.json +37 -15
  10. package/css-animations.json +155 -31
  11. package/css-backgrounds-4.json +107 -32
  12. package/css-backgrounds.json +426 -59
  13. package/css-box.json +243 -20
  14. package/css-break.json +292 -11
  15. package/css-cascade-6.json +22 -13
  16. package/css-cascade.json +50 -15
  17. package/css-color-5.json +320 -35
  18. package/css-color-adjust.json +75 -8
  19. package/css-color.json +1100 -61
  20. package/css-conditional-4.json +11 -6
  21. package/css-conditional-5.json +38 -19
  22. package/css-conditional.json +28 -15
  23. package/css-contain-3.json +101 -26
  24. package/css-contain.json +71 -6
  25. package/css-content.json +291 -30
  26. package/css-counter-styles.json +455 -18
  27. package/css-display.json +250 -19
  28. package/css-easing.json +137 -25
  29. package/css-env.json +61 -6
  30. package/css-exclusions.json +65 -6
  31. package/css-extensions.json +20 -12
  32. package/css-flexbox.json +132 -11
  33. package/css-fonts-5.json +255 -13
  34. package/css-fonts.json +886 -74
  35. package/css-gcpm-4.json +30 -5
  36. package/css-gcpm.json +76 -15
  37. package/css-grid-3.json +10 -9
  38. package/css-grid.json +442 -42
  39. package/css-highlight-api.json +13 -5
  40. package/css-images-4.json +221 -68
  41. package/css-images-5.json +40 -0
  42. package/css-images.json +278 -33
  43. package/css-inline.json +525 -16
  44. package/css-layout-api.json +20 -0
  45. package/css-line-grid.json +80 -7
  46. package/css-lists.json +176 -21
  47. package/css-logical.json +125 -50
  48. package/css-masking.json +330 -47
  49. package/css-multicol-2.json +32 -5
  50. package/css-multicol.json +84 -13
  51. package/css-namespaces.json +15 -10
  52. package/css-nav.json +63 -7
  53. package/css-nesting.json +15 -0
  54. package/css-overflow-4.json +83 -10
  55. package/css-overflow.json +239 -18
  56. package/css-overscroll.json +110 -9
  57. package/css-page-floats.json +188 -16
  58. package/css-page.json +262 -67
  59. package/css-paint-api.json +8 -5
  60. package/css-position.json +269 -16
  61. package/css-properties-values-api.json +9 -7
  62. package/css-pseudo.json +67 -0
  63. package/css-regions.json +8 -7
  64. package/css-rhythm.json +69 -10
  65. package/css-round-display.json +47 -10
  66. package/css-ruby.json +137 -8
  67. package/css-scoping.json +27 -0
  68. package/css-scroll-anchoring.json +20 -5
  69. package/css-scroll-snap-2.json +272 -10
  70. package/css-scroll-snap.json +218 -29
  71. package/css-scrollbars.json +41 -6
  72. package/css-shadow-parts.json +8 -5
  73. package/css-shapes-2.json +190 -43
  74. package/css-shapes.json +130 -36
  75. package/css-size-adjust.json +26 -5
  76. package/css-sizing-4.json +404 -23
  77. package/css-sizing.json +231 -12
  78. package/css-speech.json +619 -35
  79. package/css-syntax.json +193 -92
  80. package/css-tables.json +10 -9
  81. package/css-text-4.json +800 -40
  82. package/css-text-decor-4.json +394 -23
  83. package/css-text-decor.json +159 -14
  84. package/css-text.json +371 -20
  85. package/css-transforms-2.json +177 -40
  86. package/css-transforms.json +137 -45
  87. package/css-transitions.json +33 -14
  88. package/css-ui.json +437 -42
  89. package/css-values-5.json +99 -14
  90. package/css-values.json +654 -146
  91. package/css-variables.json +12 -7
  92. package/css-view-transitions.json +45 -7
  93. package/css-will-change.json +36 -7
  94. package/css-writing-modes.json +141 -10
  95. package/fill-stroke.json +290 -35
  96. package/filter-effects-2.json +6 -5
  97. package/filter-effects.json +109 -45
  98. package/fullscreen.json +15 -0
  99. package/mathml-core.json +10 -9
  100. package/mediaqueries-5.json +505 -52
  101. package/mediaqueries.json +307 -40
  102. package/motion.json +99 -16
  103. package/package.json +1 -1
  104. package/scroll-animations.json +225 -24
  105. package/selectors.json +368 -30
  106. package/svg-strokes.json +8 -7
  107. package/upgrade-insecure-requests.json +26 -0
  108. package/html.json +0 -19
package/css-anchor.json CHANGED
@@ -3,8 +3,8 @@
3
3
  "title": "CSS Anchor Positioning",
4
4
  "url": "https://drafts.csswg.org/css-anchor-1/"
5
5
  },
6
- "properties": {
7
- "anchor-scroll": {
6
+ "properties": [
7
+ {
8
8
  "name": "anchor-scroll",
9
9
  "value": "none | <dashed-ident>",
10
10
  "initial": "none",
@@ -14,12 +14,32 @@
14
14
  "computedValue": "as specified",
15
15
  "canonicalOrder": "per grammar",
16
16
  "animationType": "discrete",
17
+ "values": [
18
+ {
19
+ "name": "none",
20
+ "prose": "No effect.",
21
+ "type": "value",
22
+ "value": "none"
23
+ },
24
+ {
25
+ "name": "<dashed-ident>",
26
+ "prose": "The scroll offsets of the target anchor element with the name given by the <dashed-ident> will be compensated for in positioning and fallback.",
27
+ "type": "value",
28
+ "value": "<dashed-ident>"
29
+ },
30
+ {
31
+ "name": "implicit",
32
+ "prose": "The scroll offsets of the implicit anchor element will be compensated for in positioning and fallback.",
33
+ "type": "value",
34
+ "value": "implicit"
35
+ }
36
+ ],
17
37
  "styleDeclaration": [
18
38
  "anchor-scroll",
19
39
  "anchorScroll"
20
40
  ]
21
41
  },
22
- "anchor-name": {
42
+ {
23
43
  "name": "anchor-name",
24
44
  "value": "none | <dashed-ident>",
25
45
  "initial": "none",
@@ -29,12 +49,26 @@
29
49
  "computedValue": "as specified",
30
50
  "canonicalOrder": "per grammar",
31
51
  "animationType": "discrete",
52
+ "values": [
53
+ {
54
+ "name": "none",
55
+ "prose": "The property has no effect.",
56
+ "type": "value",
57
+ "value": "none"
58
+ },
59
+ {
60
+ "name": "<dashed-ident>",
61
+ "prose": "If the element generates a principal box, the element is an anchor element, with an anchor name equal to the <dashed-ident>. The anchor name is a tree-scoped name. Otherwise, the property has no effect.",
62
+ "type": "value",
63
+ "value": "<dashed-ident>"
64
+ }
65
+ ],
32
66
  "styleDeclaration": [
33
67
  "anchor-name",
34
68
  "anchorName"
35
69
  ]
36
70
  },
37
- "position-fallback": {
71
+ {
38
72
  "name": "position-fallback",
39
73
  "value": "none | <dashed-ident>",
40
74
  "initial": "none",
@@ -44,32 +78,156 @@
44
78
  "computedValue": "as specified",
45
79
  "canonicalOrder": "per grammar",
46
80
  "animationType": "discrete",
81
+ "values": [
82
+ {
83
+ "name": "none",
84
+ "prose": "The property has no effect; the element does not use a position fallback list.",
85
+ "type": "value",
86
+ "value": "none"
87
+ },
88
+ {
89
+ "name": "<dashed-ident>",
90
+ "prose": "If there is a @position-fallback rule with a name matching the specified ident, then the element uses that position fallback list. Otherwise, this value has no effect.",
91
+ "type": "value",
92
+ "value": "<dashed-ident>"
93
+ }
94
+ ],
47
95
  "styleDeclaration": [
48
96
  "position-fallback",
49
97
  "positionFallback"
50
98
  ]
51
99
  }
52
- },
53
- "atrules": {
54
- "@position-fallback": {
55
- "value": "@position-fallback <dashed-ident> { <rule-list> } @try { <declaration-list> }",
100
+ ],
101
+ "atrules": [
102
+ {
103
+ "name": "@position-fallback",
104
+ "prose": "The @position-fallback rule defines a position fallback list with a given name, specifying one or more sets of positioning properties inside of @try blocks that will be applied to an element, with each successive one serving as fallback if the previous would cause the element to partially or fully overflow its containing block.",
105
+ "descriptors": [],
106
+ "value": "@position-fallback <dashed-ident> { <rule-list> } @try { <declaration-list> }"
107
+ },
108
+ {
109
+ "name": "@try",
110
+ "prose": "The @position-fallback rule defines a position fallback list with a given name, specifying one or more sets of positioning properties inside of @try blocks that will be applied to an element, with each successive one serving as fallback if the previous would cause the element to partially or fully overflow its containing block.",
56
111
  "descriptors": []
57
112
  }
58
- },
59
- "valuespaces": {
60
- "<anchor()>": {
113
+ ],
114
+ "selectors": [],
115
+ "values": [
116
+ {
117
+ "name": "anchor()",
61
118
  "prose": "An absolutely-positioned element can use the anchor() function as a value in its inset properties to refer to the position of one or more anchor elements. The anchor() function resolves to a <length>.",
62
- "value": "anchor( <dashed-ident>? <anchor-side>, <length-percentage>? )"
63
- },
64
- "<anchor-size()>": {
65
- "prose": "An absolutely-positioned element can use the anchor-size() function in its sizing properties to refer to the size of one or more anchor elements. The anchor-size() function resolves to a <length>.",
66
- "value": "anchor( <dashed-ident>? <anchor-size>, <length-percentage>? )"
119
+ "type": "function",
120
+ "value": "anchor( <dashed-ident>? <anchor-side>, <length-percentage>? )",
121
+ "values": [
122
+ {
123
+ "name": "left",
124
+ "prose": "The physical <anchor-side> keywords (left, right, top, and bottom) are only useful in inset properties corresponding to their corresponding axis: for example, using top and bottom in left or right (or in inset-inline-start if the inline axis is horizontal, etc) results in an invalid anchor query.",
125
+ "type": "value",
126
+ "value": "left"
127
+ },
128
+ {
129
+ "name": "right",
130
+ "prose": "The physical <anchor-side> keywords (left, right, top, and bottom) are only useful in inset properties corresponding to their corresponding axis: for example, using top and bottom in left or right (or in inset-inline-start if the inline axis is horizontal, etc) results in an invalid anchor query.",
131
+ "type": "value",
132
+ "value": "right"
133
+ },
134
+ {
135
+ "name": "top",
136
+ "prose": "The physical <anchor-side> keywords (left, right, top, and bottom) are only useful in inset properties corresponding to their corresponding axis: for example, using top and bottom in left or right (or in inset-inline-start if the inline axis is horizontal, etc) results in an invalid anchor query.",
137
+ "type": "value",
138
+ "value": "top"
139
+ },
140
+ {
141
+ "name": "bottom",
142
+ "prose": "The physical <anchor-side> keywords (left, right, top, and bottom) are only useful in inset properties corresponding to their corresponding axis: for example, using top and bottom in left or right (or in inset-inline-start if the inline axis is horizontal, etc) results in an invalid anchor query.",
143
+ "type": "value",
144
+ "value": "bottom"
145
+ },
146
+ {
147
+ "name": "start",
148
+ "prose": "The logical <anchor-side> keywords (start, end, self-start, and self-end) map to one of the physical keywords depending on the property the function is being used in (top or bottom in the top or bottom properties, etc) and the writing mode of either the element (for self-start and self-end) or the writing mode of the element’s containing block (for start and end).",
149
+ "type": "value",
150
+ "value": "start"
151
+ },
152
+ {
153
+ "name": "end",
154
+ "prose": "The logical <anchor-side> keywords (start, end, self-start, and self-end) map to one of the physical keywords depending on the property the function is being used in (top or bottom in the top or bottom properties, etc) and the writing mode of either the element (for self-start and self-end) or the writing mode of the element’s containing block (for start and end).",
155
+ "type": "value",
156
+ "value": "end"
157
+ },
158
+ {
159
+ "name": "self-start",
160
+ "prose": "The logical <anchor-side> keywords (start, end, self-start, and self-end) map to one of the physical keywords depending on the property the function is being used in (top or bottom in the top or bottom properties, etc) and the writing mode of either the element (for self-start and self-end) or the writing mode of the element’s containing block (for start and end).",
161
+ "type": "value",
162
+ "value": "self-start"
163
+ },
164
+ {
165
+ "name": "self-end",
166
+ "prose": "The logical <anchor-side> keywords (start, end, self-start, and self-end) map to one of the physical keywords depending on the property the function is being used in (top or bottom in the top or bottom properties, etc) and the writing mode of either the element (for self-start and self-end) or the writing mode of the element’s containing block (for start and end).",
167
+ "type": "value",
168
+ "value": "self-end"
169
+ },
170
+ {
171
+ "name": "center",
172
+ "prose": "A <percentage> value refers to a position a corresponding percentage between the start and end sides, with 0% being equivalent to start and 100% being equivalent to end. The center keyword is equivalent to 50%.",
173
+ "type": "value",
174
+ "value": "center"
175
+ }
176
+ ]
67
177
  },
68
- "<anchor-side>": {
178
+ {
179
+ "name": "<anchor-side>",
180
+ "type": "type",
69
181
  "value": "top | left | right | bottom | start | end | self-start | self-end | <percentage> | center"
70
182
  },
71
- "<anchor-size>": {
183
+ {
184
+ "name": "anchor-size()",
185
+ "prose": "An absolutely-positioned element can use the anchor-size() function in its sizing properties to refer to the size of one or more anchor elements. The anchor-size() function resolves to a <length>.",
186
+ "type": "function",
187
+ "value": "anchor( <dashed-ident>? <anchor-size>, <length-percentage>? )",
188
+ "values": [
189
+ {
190
+ "name": "width",
191
+ "prose": "The physical <anchor-size> keywords (width and height) refer to the width and height, respectively, of the target anchor element. Unlike anchor(), there is no restriction on having to match axises; for example, width: anchor-size(--foo height); is valid.",
192
+ "type": "value",
193
+ "value": "width"
194
+ },
195
+ {
196
+ "name": "height",
197
+ "prose": "The physical <anchor-size> keywords (width and height) refer to the width and height, respectively, of the target anchor element. Unlike anchor(), there is no restriction on having to match axises; for example, width: anchor-size(--foo height); is valid.",
198
+ "type": "value",
199
+ "value": "height"
200
+ },
201
+ {
202
+ "name": "block",
203
+ "prose": "The logical <anchor-size> keywords (block, inline, self-block, and self-inline) map to one of the physical keywords according to either the writing mode of the element (for self-block and self-inline) or the writing mode of the element’s containing block (for block and inline).",
204
+ "type": "value",
205
+ "value": "block"
206
+ },
207
+ {
208
+ "name": "inline",
209
+ "prose": "The logical <anchor-size> keywords (block, inline, self-block, and self-inline) map to one of the physical keywords according to either the writing mode of the element (for self-block and self-inline) or the writing mode of the element’s containing block (for block and inline).",
210
+ "type": "value",
211
+ "value": "inline"
212
+ },
213
+ {
214
+ "name": "self-block",
215
+ "prose": "The logical <anchor-size> keywords (block, inline, self-block, and self-inline) map to one of the physical keywords according to either the writing mode of the element (for self-block and self-inline) or the writing mode of the element’s containing block (for block and inline).",
216
+ "type": "value",
217
+ "value": "self-block"
218
+ },
219
+ {
220
+ "name": "self-inline",
221
+ "prose": "The logical <anchor-size> keywords (block, inline, self-block, and self-inline) map to one of the physical keywords according to either the writing mode of the element (for self-block and self-inline) or the writing mode of the element’s containing block (for block and inline).",
222
+ "type": "value",
223
+ "value": "self-inline"
224
+ }
225
+ ]
226
+ },
227
+ {
228
+ "name": "<anchor-size>",
229
+ "type": "type",
72
230
  "value": "width | height | block | inline | self-block | self-inline"
73
231
  }
74
- }
232
+ ]
75
233
  }
@@ -3,8 +3,8 @@
3
3
  "title": "CSS Animations Level 2",
4
4
  "url": "https://drafts.csswg.org/css-animations-2/"
5
5
  },
6
- "properties": {
7
- "animation-composition": {
6
+ "properties": [
7
+ {
8
8
  "name": "animation-composition",
9
9
  "value": "<single-animation-composition>#",
10
10
  "initial": "replace",
@@ -19,7 +19,7 @@
19
19
  "animationComposition"
20
20
  ]
21
21
  },
22
- "animation-timeline": {
22
+ {
23
23
  "name": "animation-timeline",
24
24
  "value": "<single-animation-timeline>#",
25
25
  "initial": "auto",
@@ -34,20 +34,42 @@
34
34
  "animationTimeline"
35
35
  ]
36
36
  }
37
- },
38
- "atrules": {},
39
- "valuespaces": {
40
- "<single-animation-composition>": {
41
- "value": "replace | add | accumulate"
37
+ ],
38
+ "atrules": [],
39
+ "selectors": [],
40
+ "values": [
41
+ {
42
+ "name": "<single-animation-composition>",
43
+ "value": "replace | add | accumulate",
44
+ "type": "type"
42
45
  },
43
- "<timeline-name>": {
44
- "value": "<custom-ident> | <string>"
46
+ {
47
+ "name": "<single-animation-timeline>",
48
+ "type": "type",
49
+ "value": "auto | none | <timeline-name>",
50
+ "values": [
51
+ {
52
+ "name": "auto",
53
+ "value": "auto",
54
+ "type": "value"
55
+ },
56
+ {
57
+ "name": "none",
58
+ "prose": "The animation is not associated with a timeline.",
59
+ "type": "value",
60
+ "value": "none"
61
+ }
62
+ ]
45
63
  },
46
- "<single-animation>": {
47
- "value": "<time> || <easing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state> || [ none | <keyframes-name> ] || <single-animation-timeline>"
64
+ {
65
+ "name": "<timeline-name>",
66
+ "value": "<custom-ident> | <string>",
67
+ "type": "type"
48
68
  },
49
- "<single-animation-timeline>": {
50
- "value": "auto | none | <timeline-name>"
69
+ {
70
+ "name": "<single-animation>",
71
+ "value": "<time> || <easing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state> || [ none | <keyframes-name> ] || <single-animation-timeline>",
72
+ "type": "type"
51
73
  }
52
- }
74
+ ]
53
75
  }
@@ -3,8 +3,8 @@
3
3
  "title": "CSS Animations Level 1",
4
4
  "url": "https://drafts.csswg.org/css-animations-1/"
5
5
  },
6
- "properties": {
7
- "animation-name": {
6
+ "properties": [
7
+ {
8
8
  "name": "animation-name",
9
9
  "value": "[ none | <keyframes-name> ]#",
10
10
  "initial": "none",
@@ -14,12 +14,26 @@
14
14
  "computedValue": "list, each item either a case-sensitive css identifier or the keyword none",
15
15
  "canonicalOrder": "per grammar",
16
16
  "animationType": "not animatable",
17
+ "values": [
18
+ {
19
+ "name": "none",
20
+ "prose": "No keyframes are specified at all, so there will be no animation. Any other animations properties specified for this animation have no effect.",
21
+ "type": "value",
22
+ "value": "none"
23
+ },
24
+ {
25
+ "name": "<keyframes-name>",
26
+ "prose": "The animation will use the keyframes with the name specified by the <keyframes-name>, if they exist. If no @keyframes rule with that name exists, there is no animation.",
27
+ "type": "value",
28
+ "value": "<keyframes-name>"
29
+ }
30
+ ],
17
31
  "styleDeclaration": [
18
32
  "animation-name",
19
33
  "animationName"
20
34
  ]
21
35
  },
22
- "animation-duration": {
36
+ {
23
37
  "name": "animation-duration",
24
38
  "value": "<time [0s,∞]>#",
25
39
  "initial": "0s",
@@ -29,12 +43,20 @@
29
43
  "computedValue": "list, each item a duration",
30
44
  "canonicalOrder": "per grammar",
31
45
  "animationType": "not animatable",
46
+ "values": [
47
+ {
48
+ "name": "<time [0s,∞]>",
49
+ "prose": "The <time> specifies the length of time that an animation takes to complete one cycle. A negative <time> is invalid. If the <time> is 0s, like the initial value, the keyframes of the animation have no effect, but the animation itself still occurs instantaneously. Specifically, start and end events are fired; if animation-fill-mode is set to backwards or both, the first frame of the animation, as defined by animation-direction, will be displayed during the animation-delay. After the animation-delay the last frame of the animation, as defined by animation-direction, will be displayed if animation-fill-mode is set to forwards or both. If animation-fill-mode is set to none the animation will have no visible effect.",
50
+ "type": "value",
51
+ "value": "<time [0s,∞]>"
52
+ }
53
+ ],
32
54
  "styleDeclaration": [
33
55
  "animation-duration",
34
56
  "animationDuration"
35
57
  ]
36
58
  },
37
- "animation-timing-function": {
59
+ {
38
60
  "name": "animation-timing-function",
39
61
  "value": "<easing-function>#",
40
62
  "initial": "ease",
@@ -49,7 +71,7 @@
49
71
  "animationTimingFunction"
50
72
  ]
51
73
  },
52
- "animation-iteration-count": {
74
+ {
53
75
  "name": "animation-iteration-count",
54
76
  "value": "<single-animation-iteration-count>#",
55
77
  "initial": "1",
@@ -59,12 +81,26 @@
59
81
  "computedValue": "list, each item either a number or the keyword infinite",
60
82
  "canonicalOrder": "per grammar",
61
83
  "animationType": "not animatable",
84
+ "values": [
85
+ {
86
+ "name": "infinite",
87
+ "prose": "The animation will repeat forever.",
88
+ "type": "value",
89
+ "value": "infinite"
90
+ },
91
+ {
92
+ "name": "<number [0,∞]>",
93
+ "prose": "The animation will repeat the specified number of times. If the number is not an integer, the animation will end partway through its last cycle. Negative numbers are invalid. A value of 0 is valid and, similar to an animation-duration of 0s, causes the animation to occur instantaneously.",
94
+ "type": "value",
95
+ "value": "<number [0,∞]>"
96
+ }
97
+ ],
62
98
  "styleDeclaration": [
63
99
  "animation-iteration-count",
64
100
  "animationIterationCount"
65
101
  ]
66
102
  },
67
- "animation-direction": {
103
+ {
68
104
  "name": "animation-direction",
69
105
  "value": "<single-animation-direction>#",
70
106
  "initial": "normal",
@@ -74,12 +110,38 @@
74
110
  "computedValue": "list, each item a keyword as specified",
75
111
  "canonicalOrder": "per grammar",
76
112
  "animationType": "not animatable",
113
+ "values": [
114
+ {
115
+ "name": "normal",
116
+ "prose": "All iterations of the animation are played as specified.",
117
+ "type": "value",
118
+ "value": "normal"
119
+ },
120
+ {
121
+ "name": "reverse",
122
+ "prose": "All iterations of the animation are played in the reverse direction from the way they were specified.",
123
+ "type": "value",
124
+ "value": "reverse"
125
+ },
126
+ {
127
+ "name": "alternate",
128
+ "prose": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.",
129
+ "type": "value",
130
+ "value": "alternate"
131
+ },
132
+ {
133
+ "name": "alternate-reverse",
134
+ "prose": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.",
135
+ "type": "value",
136
+ "value": "alternate-reverse"
137
+ }
138
+ ],
77
139
  "styleDeclaration": [
78
140
  "animation-direction",
79
141
  "animationDirection"
80
142
  ]
81
143
  },
82
- "animation-play-state": {
144
+ {
83
145
  "name": "animation-play-state",
84
146
  "value": "<single-animation-play-state>#",
85
147
  "initial": "running",
@@ -89,12 +151,26 @@
89
151
  "computedValue": "list, each item a keyword as specified",
90
152
  "canonicalOrder": "per grammar",
91
153
  "animationType": "not animatable",
154
+ "values": [
155
+ {
156
+ "name": "running",
157
+ "prose": "While this property is set to running, the animation proceeds as normal.",
158
+ "type": "value",
159
+ "value": "running"
160
+ },
161
+ {
162
+ "name": "paused",
163
+ "prose": "While this property is set to paused, the animation is paused. The animation continues to apply to the element with the progress it had made before being paused. When unpaused (set back to running), it restarts from where it left off, as if the \"clock\" that controls the animation had stopped and started again. If the property is set to paused during the delay phase of the animation, the delay clock is also paused and resumes as soon as animation-play-state is set back to running.",
164
+ "type": "value",
165
+ "value": "paused"
166
+ }
167
+ ],
92
168
  "styleDeclaration": [
93
169
  "animation-play-state",
94
170
  "animationPlayState"
95
171
  ]
96
172
  },
97
- "animation-fill-mode": {
173
+ {
98
174
  "name": "animation-fill-mode",
99
175
  "value": "<single-animation-fill-mode>#",
100
176
  "initial": "none",
@@ -104,12 +180,38 @@
104
180
  "computedValue": "list, each item a keyword as specified",
105
181
  "canonicalOrder": "per grammar",
106
182
  "animationType": "not animatable",
183
+ "values": [
184
+ {
185
+ "name": "none",
186
+ "prose": "The animation has no effect when it is applied but not executing.",
187
+ "type": "value",
188
+ "value": "none"
189
+ },
190
+ {
191
+ "name": "forwards",
192
+ "prose": "After the animation ends (as determined by its animation-iteration-count), the animation will apply the property values for the time the animation ended. When animation-iteration-count is an integer greater than zero, the values applied will be those for the end of the last completed iteration of the animation (rather than the values for the start of the iteration that would be next). When animation-iteration-count is zero, the values applied will be those that would start the first iteration (just as when animation-fill-mode is backwards).",
193
+ "type": "value",
194
+ "value": "forwards"
195
+ },
196
+ {
197
+ "name": "backwards",
198
+ "prose": "During the period defined by animation-delay, the animation will apply the property values defined in the keyframe that will start the first iteration of the animation. These are either the values of the from keyframe (when animation-direction is normal or alternate) or those of the to keyframe (when animation-direction is reverse or alternate-reverse).",
199
+ "type": "value",
200
+ "value": "backwards"
201
+ },
202
+ {
203
+ "name": "both",
204
+ "prose": "The effects of both forwards and backwards fill apply.",
205
+ "type": "value",
206
+ "value": "both"
207
+ }
208
+ ],
107
209
  "styleDeclaration": [
108
210
  "animation-fill-mode",
109
211
  "animationFillMode"
110
212
  ]
111
213
  },
112
- "animation": {
214
+ {
113
215
  "name": "animation",
114
216
  "value": "<single-animation>#",
115
217
  "initial": "see individual properties",
@@ -123,34 +225,56 @@
123
225
  "animation"
124
226
  ]
125
227
  }
126
- },
127
- "atrules": {
128
- "@keyframes": {
129
- "value": "@keyframes <keyframes-name> { <rule-list> }",
130
- "descriptors": []
228
+ ],
229
+ "atrules": [
230
+ {
231
+ "name": "@keyframes",
232
+ "prose": "Keyframes are specified using the @keyframes at-rule, defined as follows:",
233
+ "descriptors": [],
234
+ "value": "@keyframes <keyframes-name> { <rule-list> }"
131
235
  }
132
- },
133
- "valuespaces": {
134
- "<single-animation-iteration-count>": {
135
- "value": "infinite | <number [0,∞]>"
236
+ ],
237
+ "selectors": [],
238
+ "values": [
239
+ {
240
+ "name": "<keyframes-name>",
241
+ "type": "type",
242
+ "value": "<custom-ident> | <string>"
136
243
  },
137
- "<single-animation-direction>": {
138
- "value": "normal | reverse | alternate | alternate-reverse"
244
+ {
245
+ "name": "<keyframe-block>",
246
+ "type": "type",
247
+ "value": "<keyframe-selector># { <declaration-list> }"
139
248
  },
140
- "<single-animation-play-state>": {
141
- "value": "running | paused"
249
+ {
250
+ "name": "<keyframe-selector>",
251
+ "type": "type",
252
+ "value": "from | to | <percentage [0,100]>"
142
253
  },
143
- "<single-animation-fill-mode>": {
144
- "value": "none | forwards | backwards | both"
254
+ {
255
+ "name": "<single-animation-iteration-count>",
256
+ "value": "infinite | <number [0,∞]>",
257
+ "type": "type"
145
258
  },
146
- "<single-animation>": {
147
- "value": "<time> || <easing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state> || [ none | <keyframes-name> ]"
259
+ {
260
+ "name": "<single-animation-direction>",
261
+ "value": "normal | reverse | alternate | alternate-reverse",
262
+ "type": "type"
148
263
  },
149
- "<keyframes-name>": {
150
- "value": "<custom-ident> | <string>"
264
+ {
265
+ "name": "<single-animation-play-state>",
266
+ "value": "running | paused",
267
+ "type": "type"
151
268
  },
152
- "<keyframe-block>": {
153
- "value": "<keyframe-selector># { <declaration-list> }"
269
+ {
270
+ "name": "<single-animation-fill-mode>",
271
+ "value": "none | forwards | backwards | both",
272
+ "type": "type"
273
+ },
274
+ {
275
+ "name": "<single-animation>",
276
+ "value": "<time> || <easing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state> || [ none | <keyframes-name> ]",
277
+ "type": "type"
154
278
  }
155
- }
279
+ ]
156
280
  }