@webref/css 6.0.0 → 6.1.1

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.
package/CSS.json CHANGED
@@ -285,7 +285,7 @@
285
285
  ],
286
286
  "values": [
287
287
  {
288
- "name": "<identifier>",
288
+ "name": "identifiers",
289
289
  "type": "type"
290
290
  },
291
291
  {
@@ -480,5 +480,39 @@
480
480
  "name": "<relative-size>",
481
481
  "type": "type"
482
482
  }
483
+ ],
484
+ "warnings": [
485
+ {
486
+ "msg": "Dangling value",
487
+ "name": "thin",
488
+ "prose": "A thin border.",
489
+ "type": "value",
490
+ "value": "thin",
491
+ "for": "border-bottom-right"
492
+ },
493
+ {
494
+ "msg": "Dangling value",
495
+ "name": "medium",
496
+ "prose": "A medium border.",
497
+ "type": "value",
498
+ "value": "medium",
499
+ "for": "border-bottom-right"
500
+ },
501
+ {
502
+ "msg": "Dangling value",
503
+ "name": "thick",
504
+ "prose": "A thick border.",
505
+ "type": "value",
506
+ "value": "thick",
507
+ "for": "border-bottom-right"
508
+ },
509
+ {
510
+ "msg": "Dangling value",
511
+ "name": "<length>",
512
+ "prose": "The border’s thickness has an explicit value. Explicit border widths cannot be negative.",
513
+ "type": "value",
514
+ "value": "<length>",
515
+ "for": "border-bottom-right"
516
+ }
483
517
  ]
484
518
  }
package/css-align.json CHANGED
@@ -199,8 +199,9 @@
199
199
  },
200
200
  {
201
201
  "name": "legacy",
202
- "value": "legacy",
203
- "type": "value"
202
+ "prose": "This keyword causes the value to effectively inherit into descendants. If the legacy keyword appears on its own (without an accompanying left, right, or center keyword): if the inherited value of justify-items includes the legacy keyword, this value computes to the inherited value; otherwise it computes to normal. When justify-self:auto references the value of justify-items, only the alignment keyword, not the legacy keyword, is referenced by it. It exists to implement the legacy alignment behavior of HTML’s <center> element and align attribute.",
203
+ "type": "value",
204
+ "value": "legacy"
204
205
  }
205
206
  ],
206
207
  "styleDeclaration": [
@@ -336,6 +337,24 @@
336
337
  "type": "type",
337
338
  "value": "center | start | end | self-start | self-end | flex-start | flex-end",
338
339
  "values": [
340
+ {
341
+ "name": "center",
342
+ "prose": "Centers the alignment subject within its alignment container.",
343
+ "type": "value",
344
+ "value": "center"
345
+ },
346
+ {
347
+ "name": "start",
348
+ "prose": "Aligns the alignment subject to be flush with the alignment container’s start edge in the appropriate axis.",
349
+ "type": "value",
350
+ "value": "start"
351
+ },
352
+ {
353
+ "name": "end",
354
+ "prose": "Aligns the alignment subject to be flush with the alignment container’s end edge in the appropriate axis.",
355
+ "type": "value",
356
+ "value": "end"
357
+ },
339
358
  {
340
359
  "name": "self-start",
341
360
  "prose": "Aligns the alignment subject to be flush with the edge of the alignment container corresponding to the alignment subject’s start side in the appropriate axis.",
@@ -347,13 +366,57 @@
347
366
  "prose": "Aligns the alignment subject to be flush with the edge of the alignment container corresponding to the alignment subject’s end side in the appropriate axis.",
348
367
  "type": "value",
349
368
  "value": "self-end"
369
+ },
370
+ {
371
+ "name": "flex-start",
372
+ "prose": "Only used in flex layout. [CSS-FLEXBOX-1] Aligns the alignment subject to be flush with the edge of the alignment container corresponding to the flex container’s main-start or cross-start side, as appropriate. When used outside of a flex formatting context, this value behaves as start. That is, on boxes that are not flex items (or pretending to be flex items, such as when determining the static position of an absolutely-positioned box that is a child of a flex container), this value behaves as start when used in the self-alignment properties, and on boxes that are not flex containers, this value behaves as start when used in the content-distribution properties.",
373
+ "type": "value",
374
+ "value": "flex-start"
375
+ },
376
+ {
377
+ "name": "flex-end",
378
+ "prose": "Only used in flex layout. Aligns the alignment subject to be flush with the edge of the alignment container corresponding to the flex container’s main-end or cross-end side, as appropriate. When used outside of a flex formatting context, this value behaves as end. That is, on boxes that are not flex items (or pretending to be flex items, such as when determining the static position of an absolutely-positioned box that is a child of a flex container), this value behaves as end when used in the self-alignment properties, and on boxes that are not flex containers, this value behaves as end when used in the content-distribution properties.",
379
+ "type": "value",
380
+ "value": "flex-end"
350
381
  }
351
382
  ]
352
383
  },
353
384
  {
354
385
  "name": "<content-position>",
355
386
  "type": "type",
356
- "value": "center | start | end | flex-start | flex-end"
387
+ "value": "center | start | end | flex-start | flex-end",
388
+ "values": [
389
+ {
390
+ "name": "center",
391
+ "prose": "Centers the alignment subject within its alignment container.",
392
+ "type": "value",
393
+ "value": "center"
394
+ },
395
+ {
396
+ "name": "start",
397
+ "prose": "Aligns the alignment subject to be flush with the alignment container’s start edge in the appropriate axis.",
398
+ "type": "value",
399
+ "value": "start"
400
+ },
401
+ {
402
+ "name": "end",
403
+ "prose": "Aligns the alignment subject to be flush with the alignment container’s end edge in the appropriate axis.",
404
+ "type": "value",
405
+ "value": "end"
406
+ },
407
+ {
408
+ "name": "flex-start",
409
+ "prose": "Only used in flex layout. [CSS-FLEXBOX-1] Aligns the alignment subject to be flush with the edge of the alignment container corresponding to the flex container’s main-start or cross-start side, as appropriate. When used outside of a flex formatting context, this value behaves as start. That is, on boxes that are not flex items (or pretending to be flex items, such as when determining the static position of an absolutely-positioned box that is a child of a flex container), this value behaves as start when used in the self-alignment properties, and on boxes that are not flex containers, this value behaves as start when used in the content-distribution properties.",
410
+ "type": "value",
411
+ "value": "flex-start"
412
+ },
413
+ {
414
+ "name": "flex-end",
415
+ "prose": "Only used in flex layout. Aligns the alignment subject to be flush with the edge of the alignment container corresponding to the flex container’s main-end or cross-end side, as appropriate. When used outside of a flex formatting context, this value behaves as end. That is, on boxes that are not flex items (or pretending to be flex items, such as when determining the static position of an absolutely-positioned box that is a child of a flex container), this value behaves as end when used in the self-alignment properties, and on boxes that are not flex containers, this value behaves as end when used in the content-distribution properties.",
416
+ "type": "value",
417
+ "value": "flex-end"
418
+ }
419
+ ]
357
420
  },
358
421
  {
359
422
  "name": "<baseline-position>",
@@ -367,16 +430,16 @@
367
430
  "value": "baseline"
368
431
  },
369
432
  {
370
- "name": "first baseline | first",
433
+ "name": "first baseline",
371
434
  "prose": "Specifies participation in first-baseline alignment: aligns the alignment baseline of the box’s first baseline set with the corresponding baseline of its baseline-sharing group. See § 9.3 Aligning Boxes by Baseline for more details. The fallback alignment for first baseline is safe self-start (for self-alignment) or safe start (for content-distribution).",
372
435
  "type": "value",
373
- "value": "first baseline | first"
436
+ "value": "first baseline"
374
437
  },
375
438
  {
376
- "name": "last baseline | last",
439
+ "name": "last baseline",
377
440
  "prose": "Specifies participation in last-baseline alignment: aligns the alignment baseline of the box’s last baseline set with the corresponding baseline of its baseline-sharing group.̣ See § 9.3 Aligning Boxes by Baseline for more details. The fallback alignment for last baseline is safe self-end (for self-alignment) or safe end (for content-distribution).",
378
441
  "type": "value",
379
- "value": "last baseline | last"
442
+ "value": "last baseline"
380
443
  }
381
444
  ]
382
445
  },
@@ -50,22 +50,23 @@
50
50
  "values": [
51
51
  {
52
52
  "name": "auto",
53
- "value": "auto",
54
- "type": "value"
53
+ "prose": "The animation’s timeline is a DocumentTimeline, more specifically the default document timeline.",
54
+ "type": "value",
55
+ "value": "auto"
55
56
  },
56
57
  {
57
58
  "name": "none",
58
59
  "prose": "The animation is not associated with a timeline.",
59
60
  "type": "value",
60
61
  "value": "none"
62
+ },
63
+ {
64
+ "name": "<timeline-name>",
65
+ "value": "<custom-ident> | <string>",
66
+ "type": "value"
61
67
  }
62
68
  ]
63
69
  },
64
- {
65
- "name": "<timeline-name>",
66
- "value": "<custom-ident> | <string>",
67
- "type": "type"
68
- },
69
70
  {
70
71
  "name": "<single-animation>",
71
72
  "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>",
package/css-content.json CHANGED
@@ -39,8 +39,9 @@
39
39
  "values": [
40
40
  {
41
41
  "name": "<string>",
42
- "value": "<string>",
43
- "type": "value"
42
+ "prose": "Represents an anonymous inline box filled with the specified text.",
43
+ "type": "value",
44
+ "value": "<string>"
44
45
  },
45
46
  {
46
47
  "name": "<image>",
@@ -171,8 +172,9 @@
171
172
  "values": [
172
173
  {
173
174
  "name": "<string>",
174
- "value": "<string>",
175
- "type": "value"
175
+ "prose": "Represents an anonymous inline box filled with the specified text.",
176
+ "type": "value",
177
+ "value": "<string>"
176
178
  },
177
179
  {
178
180
  "name": "<image>",
@@ -235,7 +237,33 @@
235
237
  {
236
238
  "name": "<quote>",
237
239
  "type": "type",
238
- "value": "open-quote | close-quote | no-open-quote | no-close-quote"
240
+ "value": "open-quote | close-quote | no-open-quote | no-close-quote",
241
+ "values": [
242
+ {
243
+ "name": "open-quote",
244
+ "prose": "These values are replaced by the appropriate string from the quotes property, and increments (decrements) the level of nesting for quotes. See § 2.4.1 Specifying quotes with the quotes property for more information.",
245
+ "type": "value",
246
+ "value": "open-quote"
247
+ },
248
+ {
249
+ "name": "close-quote",
250
+ "prose": "These values are replaced by the appropriate string from the quotes property, and increments (decrements) the level of nesting for quotes. See § 2.4.1 Specifying quotes with the quotes property for more information.",
251
+ "type": "value",
252
+ "value": "close-quote"
253
+ },
254
+ {
255
+ "name": "no-open-quote",
256
+ "prose": "Inserts nothing (as in none), but increments (decrements) the level of nesting for quotes. See § 2.4.1 Specifying quotes with the quotes property for more information.",
257
+ "type": "value",
258
+ "value": "no-open-quote"
259
+ },
260
+ {
261
+ "name": "no-close-quote",
262
+ "prose": "Inserts nothing (as in none), but increments (decrements) the level of nesting for quotes. See § 2.4.1 Specifying quotes with the quotes property for more information.",
263
+ "type": "value",
264
+ "value": "no-close-quote"
265
+ }
266
+ ]
239
267
  },
240
268
  {
241
269
  "name": "leader()",
package/css-fonts.json CHANGED
@@ -158,7 +158,7 @@
158
158
  "value": "italic"
159
159
  },
160
160
  {
161
- "name": "oblique <angle [−90deg,90deg]>?",
161
+ "name": "oblique <angle [-90deg,90deg]>?",
162
162
  "prose": "Controls matching against an oblique face. Positive angles represent a clockwise slant; negative angles represent a counter-clockwise slant. The lack of an <angle> represents 14deg. (Note that a font might internally provide its own mapping for \"oblique\", but the mapping within the font is disregarded.) Fractional and negative values are accepted; however, values less than -90deg or values greater than 90deg are invalid. If no oblique faces exist, and font-synthesis-style has the value auto, a synthetic oblique face will be generated.",
163
163
  "type": "value",
164
164
  "value": "oblique <angle [-90deg,90deg]>?"
@@ -227,8 +227,9 @@
227
227
  },
228
228
  {
229
229
  "name": "<number [0,∞]>",
230
- "value": "<number [0,∞]>",
231
- "type": "value"
230
+ "prose": "Specifies the aspect value used in the calculation below to calculate the adjusted font size: c = ( a / a' ) s where: s = font-size value a = aspect value as specified by the 'font-size-adjust' property a' = aspect value of actual font c = adjusted font-size to use Negative values are invalid. This value applies to any font that is selected but in typical usage it should be based on the aspect value of the first font in the font-family list. If this is specified accurately, the (a/a') term in the formula above is effectively 1 for the first font and no adjustment occurs. If the value is specified inaccurately, text rendered using the first font in the family list will display differently in older user agents that don’t support font-size-adjust.",
231
+ "type": "value",
232
+ "value": "<number [0,∞]>"
232
233
  }
233
234
  ],
234
235
  "styleDeclaration": [
package/css-gcpm-4.json CHANGED
@@ -23,8 +23,8 @@
23
23
  "atrules": [],
24
24
  "selectors": [
25
25
  {
26
- "name": ":nth-of-page(n)",
27
- "prose": "The element is the nth matched element on the page."
26
+ "name": ":nth-of-page()",
27
+ "value": ":nth-of-page(n)"
28
28
  },
29
29
  {
30
30
  "name": ":first-of-page",
package/css-grid.json CHANGED
@@ -344,7 +344,7 @@
344
344
  "value": "<custom-ident>"
345
345
  },
346
346
  {
347
- "name": "[ <integer [−∞,−1]> | <integer [1,∞]> ] && <custom-ident>?",
347
+ "name": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?",
348
348
  "prose": "Contributes the Nth grid line to the grid item’s placement. If a negative integer is given, it instead counts in reverse, starting from the end edge of the explicit grid. If a name is given as a <custom-ident>, only lines with that name are counted. If not enough lines with that name exist, all implicit grid lines are assumed to have that name for the purpose of finding this position. An <integer> value of zero makes the declaration invalid.",
349
349
  "type": "value",
350
350
  "value": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?"
@@ -392,7 +392,7 @@
392
392
  "value": "<custom-ident>"
393
393
  },
394
394
  {
395
- "name": "[ <integer [−∞,−1]> | <integer [1,∞]> ] && <custom-ident>?",
395
+ "name": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?",
396
396
  "prose": "Contributes the Nth grid line to the grid item’s placement. If a negative integer is given, it instead counts in reverse, starting from the end edge of the explicit grid. If a name is given as a <custom-ident>, only lines with that name are counted. If not enough lines with that name exist, all implicit grid lines are assumed to have that name for the purpose of finding this position. An <integer> value of zero makes the declaration invalid.",
397
397
  "type": "value",
398
398
  "value": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?"
@@ -440,7 +440,7 @@
440
440
  "value": "<custom-ident>"
441
441
  },
442
442
  {
443
- "name": "[ <integer [−∞,−1]> | <integer [1,∞]> ] && <custom-ident>?",
443
+ "name": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?",
444
444
  "prose": "Contributes the Nth grid line to the grid item’s placement. If a negative integer is given, it instead counts in reverse, starting from the end edge of the explicit grid. If a name is given as a <custom-ident>, only lines with that name are counted. If not enough lines with that name exist, all implicit grid lines are assumed to have that name for the purpose of finding this position. An <integer> value of zero makes the declaration invalid.",
445
445
  "type": "value",
446
446
  "value": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?"
@@ -488,7 +488,7 @@
488
488
  "value": "<custom-ident>"
489
489
  },
490
490
  {
491
- "name": "[ <integer [−∞,−1]> | <integer [1,∞]> ] && <custom-ident>?",
491
+ "name": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?",
492
492
  "prose": "Contributes the Nth grid line to the grid item’s placement. If a negative integer is given, it instead counts in reverse, starting from the end edge of the explicit grid. If a name is given as a <custom-ident>, only lines with that name are counted. If not enough lines with that name exist, all implicit grid lines are assumed to have that name for the purpose of finding this position. An <integer> value of zero makes the declaration invalid.",
493
493
  "type": "value",
494
494
  "value": "[ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>?"
@@ -657,10 +657,10 @@
657
657
  "type": "type",
658
658
  "values": [
659
659
  {
660
- "name": "fr|fr unit",
660
+ "name": "fr",
661
661
  "prose": "A flexible length or <flex> is a dimension with the fr unit, which represents a fraction of the leftover space in the grid container. Tracks sized with fr units are called flexible tracks as they flex in response to leftover space similar to how flex items with a zero base size fill space in a flex container.",
662
662
  "type": "value",
663
- "value": "fr|fr unit"
663
+ "value": "fr"
664
664
  }
665
665
  ]
666
666
  }
@@ -7,8 +7,8 @@
7
7
  "atrules": [],
8
8
  "selectors": [
9
9
  {
10
- "name": "::highlight(<custom-highlight-name>)",
11
- "prose": "The ::highlight(<custom-highlight-name>) pseudo-element (also known as the custom highlight pseudo-element) represents the portion of a document that is being contained or partially contained in all the ranges of the registered custom highlight with the custom highlight name <custom-highlight-name>, if any. <custom-highlight-name> must be a valid CSS <ident-token>."
10
+ "name": "::highlight()",
11
+ "value": "::highlight(<custom-highlight-name>)"
12
12
  }
13
13
  ],
14
14
  "values": [
package/css-images-4.json CHANGED
@@ -166,7 +166,21 @@
166
166
  {
167
167
  "name": "conic-gradient()",
168
168
  "type": "function",
169
- "value": "conic-gradient( [ [ from <angle> ]? [ at <position> ]? ] || <color-interpolation-method>, <angular-color-stop-list> )"
169
+ "value": "conic-gradient( [ [ from <angle> ]? [ at <position> ]? ] || <color-interpolation-method>, <angular-color-stop-list> )",
170
+ "values": [
171
+ {
172
+ "name": "<angle>",
173
+ "prose": "The entire gradient is rotated by this angle. If omitted, defaults to 0deg. The unit identifier may be omitted if the <angle> is zero.",
174
+ "type": "value",
175
+ "value": "<angle>"
176
+ },
177
+ {
178
+ "name": "<position>",
179
+ "prose": "Determines the gradient center of the gradient. The <position> value type (which is also used for background-position) is defined in [CSS-VALUES-3], and is resolved using the center-point as the object area and the gradient box as the positioning area. If this argument is omitted, it defaults to center.",
180
+ "type": "value",
181
+ "value": "<position>"
182
+ }
183
+ ]
170
184
  },
171
185
  {
172
186
  "name": "repeating-linear-gradient()",
@@ -181,7 +195,21 @@
181
195
  {
182
196
  "name": "repeating-conic-gradient()",
183
197
  "prose": "In addition to linear-gradient(), radial-gradient(), and conic-gradient(), this specification defines repeating-linear-gradient(), repeating-radial-gradient(), and repeating-conic-gradient() values. These notations take the same values and are interpreted the same as their respective non-repeating siblings defined previously.",
184
- "type": "function"
198
+ "type": "function",
199
+ "values": [
200
+ {
201
+ "name": "<angle>",
202
+ "prose": "The entire gradient is rotated by this angle. If omitted, defaults to 0deg. The unit identifier may be omitted if the <angle> is zero.",
203
+ "type": "value",
204
+ "value": "<angle>"
205
+ },
206
+ {
207
+ "name": "<position>",
208
+ "prose": "Determines the gradient center of the gradient. The <position> value type (which is also used for background-position) is defined in [CSS-VALUES-3], and is resolved using the center-point as the object area and the gradient box as the positioning area. If this argument is omitted, it defaults to center.",
209
+ "type": "value",
210
+ "value": "<position>"
211
+ }
212
+ ]
185
213
  },
186
214
  {
187
215
  "name": "<color-stop-list>",
@@ -0,0 +1,40 @@
1
+ {
2
+ "spec": {
3
+ "title": "CSS Images Module Level 5",
4
+ "url": "https://drafts.csswg.org/css-images-5/"
5
+ },
6
+ "properties": [
7
+ {
8
+ "name": "object-view-box",
9
+ "value": "none | <basic-shape-rect>",
10
+ "initial": "none",
11
+ "appliesTo": "replaced elements",
12
+ "inherited": "no",
13
+ "percentages": "n/a",
14
+ "computedValue": "specified keyword, or computed function",
15
+ "canonicalOrder": "per grammar",
16
+ "animationType": "as if possible, otherwise discrete",
17
+ "values": [
18
+ {
19
+ "name": "none",
20
+ "prose": "The element does not have a view box.",
21
+ "type": "value",
22
+ "value": "none"
23
+ },
24
+ {
25
+ "name": "<basic-shape-rect>",
26
+ "prose": "If the element does not have both a natural width and a natural height, this value has no effect, similar to none. Otherwise, specifies a view box for the element. First, resolve the <basic-shape-rect> against a reference box formed by the element’s natural sizes to obtain the element’s view box. For all purposes, the element is now treated as having natural sizes equal to the view box’s width and height. If the element had a natural aspect ratio, it’s now treated as instead having the same ratio as the view box. Further adjustments to the size/position of the element’s contents, such as object-position or object-fit, are similarly performed on the view box instead. When the element is painted, its contents are scaled and translated such that the element’s contents retain the same position and size, relative to the view box’s final size and position, that they had when the view box was determined (above). Have not yet defined what happens if the view box is zero-area. It’s an error case, so precise behavior isn’t important; just need to see what impls want to do about it.",
27
+ "type": "value",
28
+ "value": "<basic-shape-rect>"
29
+ }
30
+ ],
31
+ "styleDeclaration": [
32
+ "object-view-box",
33
+ "objectViewBox"
34
+ ]
35
+ }
36
+ ],
37
+ "atrules": [],
38
+ "selectors": [],
39
+ "values": []
40
+ }
package/css-images.json CHANGED
@@ -114,7 +114,7 @@
114
114
  "values": [
115
115
  {
116
116
  "name": "auto",
117
- "prose": "The scaling algorithm is UA dependent.",
117
+ "prose": "The scaling algorithm is UA-dependent.",
118
118
  "type": "value",
119
119
  "value": "auto"
120
120
  },
@@ -138,15 +138,9 @@
138
138
  },
139
139
  {
140
140
  "name": "crisp-edges",
141
- "prose": "The image is scaled in a way that preserves contrast and edges, and which does not smooth colors or introduce blur to the image in the process. The image must be scaled with the nearest neighbor algorithm: treating the original image’s pixel grid as a literal grid of rectangles, scale those to the desired size, then each pixel of the final image takes its color solely from the nearest pixel of the scaled original image.",
141
+ "prose": "The image is scaled in a way that preserves contrast and edges, and which does not smooth colors or introduce blur to the image in the process. The image may be scaled using nearest neighbor, but may instead be scaled with a UA-defined algorithm. The only requirement is that the algorithm must not blur edges or blend colors from the source image; but it can, for example, intelligently detect diagonal or curved lines and render them as such rather than as jagged-looking \"giant pixels\".",
142
142
  "type": "value",
143
143
  "value": "crisp-edges"
144
- },
145
- {
146
- "name": "nearest neighbor",
147
- "prose": "The image must be scaled with the nearest neighbor algorithm: treating the original image’s pixel grid as a literal grid of rectangles, scale those to the desired size, then each pixel of the final image takes its color solely from the nearest pixel of the scaled original image.",
148
- "type": "value",
149
- "value": "nearest neighbor"
150
144
  }
151
145
  ],
152
146
  "styleDeclaration": [
@@ -183,7 +177,32 @@
183
177
  "name": "radial-gradient()",
184
178
  "prose": "The radial-gradient() notation specifies a radial gradient by indicating the center of the gradient (where the 0% ellipse will be) and the size and shape of the ending shape (the 100% ellipse). Color stops are given as a list, just as for linear-gradient(). Starting from the gradient center and progressing towards (and potentially beyond) the ending shape, uniformly-scaled concentric ellipses are drawn and colored according to the specified color stops.",
185
179
  "type": "function",
186
- "value": "radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )",
180
+ "value": "radial-gradient( [ <rg-ending-shape> || <rg-size> ]? [ at <position> ]? , <color-stop-list> )",
181
+ "values": [
182
+ {
183
+ "name": "<position>",
184
+ "prose": "Determines the center of the gradient. The <position> value type (which is also used for background-position) is defined in [CSS-VALUES-3], and is resolved using the center-point as the object area and the gradient box as the positioning area. If this argument is omitted, it defaults to center.",
185
+ "type": "value",
186
+ "value": "<position>"
187
+ },
188
+ {
189
+ "name": "<rg-ending-shape>",
190
+ "prose": "Can be either circle or ellipse; determines whether the gradient’s ending shape is a circle or an ellipse, respectively. If <rg-ending-shape> is omitted, the ending shape defaults to a circle if the <rg-size> is a single <length>, and to an ellipse otherwise.",
191
+ "type": "value",
192
+ "value": "<rg-ending-shape>"
193
+ },
194
+ {
195
+ "name": "<rg-size>",
196
+ "prose": "Determines the size of the gradient’s ending shape. If omitted it defaults to farthest-corner. It can be given explicitly or by keyword. For the purpose of the keyword definitions, consider the gradient box edges as extending infinitely in both directions, rather than being finite line segments. If the ending-shape is an ellipse, its axises are aligned with the horizontal and vertical axises. Both circle and ellipse gradients accept the following <rg-extent-keyword> values: If <rg-ending-shape> is specified as circle or is omitted, the <rg-size> may be given explicitly as: If <rg-ending-shape> is specified as ellipse or is omitted, <rg-size> may instead be given explicitly as:",
197
+ "type": "value",
198
+ "value": "<rg-size>"
199
+ }
200
+ ]
201
+ },
202
+ {
203
+ "name": "<rg-size>",
204
+ "type": "type",
205
+ "value": "<rg-extent-keyword> | <length [0,∞]> | <length-percentage [0,∞]>{2}",
187
206
  "values": [
188
207
  {
189
208
  "name": "<length [0,∞]>",
@@ -199,6 +218,54 @@
199
218
  }
200
219
  ]
201
220
  },
221
+ {
222
+ "name": "<rg-extent-keyword>",
223
+ "type": "type",
224
+ "value": "closest-corner | closest-side | farthest-corner | farthest-side",
225
+ "values": [
226
+ {
227
+ "name": "closest-side",
228
+ "prose": "The ending shape is sized so that it exactly meets the side of the gradient box closest to the gradient’s center. If the shape is an ellipse, it exactly meets the closest side in each dimension.",
229
+ "type": "value",
230
+ "value": "closest-side"
231
+ },
232
+ {
233
+ "name": "farthest-side",
234
+ "prose": "Same as closest-side, except the ending shape is sized based on the farthest side(s).",
235
+ "type": "value",
236
+ "value": "farthest-side"
237
+ },
238
+ {
239
+ "name": "closest-corner",
240
+ "prose": "The ending shape is sized so that it passes through the corner of the gradient box closest to the gradient’s center. If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.",
241
+ "type": "value",
242
+ "value": "closest-corner"
243
+ },
244
+ {
245
+ "name": "farthest-corner",
246
+ "prose": "Same as closest-corner, except the ending shape is sized based on the farthest corner. If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.",
247
+ "type": "value",
248
+ "value": "farthest-corner"
249
+ }
250
+ ]
251
+ },
252
+ {
253
+ "name": "<rg-ending-shape>",
254
+ "type": "type",
255
+ "value": "circle | ellipse",
256
+ "values": [
257
+ {
258
+ "name": "circle",
259
+ "type": "value",
260
+ "value": "circle"
261
+ },
262
+ {
263
+ "name": "ellipse",
264
+ "type": "value",
265
+ "value": "ellipse"
266
+ }
267
+ ]
268
+ },
202
269
  {
203
270
  "name": "repeating-linear-gradient()",
204
271
  "prose": "In addition to linear-gradient() and radial-gradient(), this specification defines repeating-linear-gradient() and repeating-radial-gradient() values. These notations take the same values and are interpreted the same as their respective non-repeating siblings defined previously.",
@@ -207,7 +274,27 @@
207
274
  {
208
275
  "name": "repeating-radial-gradient()",
209
276
  "prose": "In addition to linear-gradient() and radial-gradient(), this specification defines repeating-linear-gradient() and repeating-radial-gradient() values. These notations take the same values and are interpreted the same as their respective non-repeating siblings defined previously.",
210
- "type": "function"
277
+ "type": "function",
278
+ "values": [
279
+ {
280
+ "name": "<position>",
281
+ "prose": "Determines the center of the gradient. The <position> value type (which is also used for background-position) is defined in [CSS-VALUES-3], and is resolved using the center-point as the object area and the gradient box as the positioning area. If this argument is omitted, it defaults to center.",
282
+ "type": "value",
283
+ "value": "<position>"
284
+ },
285
+ {
286
+ "name": "<rg-ending-shape>",
287
+ "prose": "Can be either circle or ellipse; determines whether the gradient’s ending shape is a circle or an ellipse, respectively. If <rg-ending-shape> is omitted, the ending shape defaults to a circle if the <rg-size> is a single <length>, and to an ellipse otherwise.",
288
+ "type": "value",
289
+ "value": "<rg-ending-shape>"
290
+ },
291
+ {
292
+ "name": "<rg-size>",
293
+ "prose": "Determines the size of the gradient’s ending shape. If omitted it defaults to farthest-corner. It can be given explicitly or by keyword. For the purpose of the keyword definitions, consider the gradient box edges as extending infinitely in both directions, rather than being finite line segments. If the ending-shape is an ellipse, its axises are aligned with the horizontal and vertical axises. Both circle and ellipse gradients accept the following <rg-extent-keyword> values: If <rg-ending-shape> is specified as circle or is omitted, the <rg-size> may be given explicitly as: If <rg-ending-shape> is specified as ellipse or is omitted, <rg-size> may instead be given explicitly as:",
294
+ "type": "value",
295
+ "value": "<rg-size>"
296
+ }
297
+ ]
211
298
  },
212
299
  {
213
300
  "name": "<color-stop-list>",
package/css-lists.json CHANGED
@@ -169,6 +169,12 @@
169
169
  "prose": "Instantiates a reversed counter of the given <counter-name> with a starting value of the given <integer>, or no starting value if not given.",
170
170
  "type": "value",
171
171
  "value": "<reversed-counter-name> <integer>?"
172
+ },
173
+ {
174
+ "name": "list-item",
175
+ "prose": "In addition to any explicitly defined counters that authors write in their styles, list items automatically increment a special list-item counter, which is used when generating the default marker string on list items (see list-style-type).",
176
+ "type": "value",
177
+ "value": "list-item"
172
178
  }
173
179
  ],
174
180
  "styleDeclaration": [
@@ -198,6 +204,12 @@
198
204
  "prose": "Sets (for counter-set) or increments (for counter-increment) the value of the named counter on the element to/by the specified <integer>. If the <integer> is omitted, it defaults to 1 (for counter-increment) or 0 (for counter-set). If there is not currently a counter of the given name on the element, the element instantiates a new counter of the given name with a starting value of 0 before setting or incrementing its value.",
199
205
  "type": "value",
200
206
  "value": "<counter-name> <integer>?"
207
+ },
208
+ {
209
+ "name": "list-item",
210
+ "prose": "In addition to any explicitly defined counters that authors write in their styles, list items automatically increment a special list-item counter, which is used when generating the default marker string on list items (see list-style-type).",
211
+ "type": "value",
212
+ "value": "list-item"
201
213
  }
202
214
  ],
203
215
  "styleDeclaration": [
@@ -227,6 +239,12 @@
227
239
  "prose": "Sets (for counter-set) or increments (for counter-increment) the value of the named counter on the element to/by the specified <integer>. If the <integer> is omitted, it defaults to 1 (for counter-increment) or 0 (for counter-set). If there is not currently a counter of the given name on the element, the element instantiates a new counter of the given name with a starting value of 0 before setting or incrementing its value.",
228
240
  "type": "value",
229
241
  "value": "<counter-name> <integer>?"
242
+ },
243
+ {
244
+ "name": "list-item",
245
+ "prose": "In addition to any explicitly defined counters that authors write in their styles, list items automatically increment a special list-item counter, which is used when generating the default marker string on list items (see list-style-type).",
246
+ "type": "value",
247
+ "value": "list-item"
230
248
  }
231
249
  ],
232
250
  "styleDeclaration": [
@@ -256,12 +274,28 @@
256
274
  {
257
275
  "name": "counter()",
258
276
  "type": "function",
259
- "value": "counter( <counter-name>, <counter-style>? )"
277
+ "value": "counter( <counter-name>, <counter-style>? )",
278
+ "values": [
279
+ {
280
+ "name": "list-item",
281
+ "prose": "In addition to any explicitly defined counters that authors write in their styles, list items automatically increment a special list-item counter, which is used when generating the default marker string on list items (see list-style-type).",
282
+ "type": "value",
283
+ "value": "list-item"
284
+ }
285
+ ]
260
286
  },
261
287
  {
262
288
  "name": "counters()",
263
289
  "type": "function",
264
- "value": "counters( <counter-name>, <string>, <counter-style>? )"
290
+ "value": "counters( <counter-name>, <string>, <counter-style>? )",
291
+ "values": [
292
+ {
293
+ "name": "list-item",
294
+ "prose": "In addition to any explicitly defined counters that authors write in their styles, list items automatically increment a special list-item counter, which is used when generating the default marker string on list items (see list-style-type).",
295
+ "type": "value",
296
+ "value": "list-item"
297
+ }
298
+ ]
265
299
  }
266
300
  ]
267
301
  }
package/css-nav.json CHANGED
@@ -56,8 +56,9 @@
56
56
  },
57
57
  {
58
58
  "name": "scroll",
59
- "value": "scroll",
60
- "type": "value"
59
+ "prose": "If the currently focused element is not itself a scroll container, this value on an ancestor scroll container has the same effect as auto. If the currently focused element is a scroll container, it is scrolled in the direction requested without changing which element is in focus, regardless of the presence of focusable descendants.",
60
+ "type": "value",
61
+ "value": "scroll"
61
62
  }
62
63
  ],
63
64
  "styleDeclaration": [
package/css-ruby.json CHANGED
@@ -35,8 +35,9 @@
35
35
  },
36
36
  {
37
37
  "name": "inter-character",
38
- "value": "inter-character",
39
- "type": "value"
38
+ "prose": "If the writing mode of the enclosing ruby container is vertical, this value has the same effect as over. Otherwise, the ruby annotation becomes an inter-character annotation. The annotation appears on the right of the base in horizontal text. This forces the computed value of writing-mode of the ruby annotation children of this ruby annotation container to be vertical-rl. This value is provided for the special case of traditional Chinese as used especially in Taiwan: ruby (made of bopomofo glyphs) in that context appears vertically along the right side of the base glyph, even when the layout of the base characters is horizontal: “Bopomofo” ruby in traditional Chinese (ruby annotation shown in blue for clarity) in horizontal layout",
39
+ "type": "value",
40
+ "value": "inter-character"
40
41
  }
41
42
  ],
42
43
  "styleDeclaration": [
package/css-sizing.json CHANGED
@@ -297,8 +297,9 @@
297
297
  },
298
298
  {
299
299
  "name": "border-box",
300
- "value": "border-box",
301
- "type": "value"
300
+ "prose": "Sizes specified on sizing properties as <length-percentage> represent the box’s visually-apparent sizes, including the borders/padding (but not margin): they are applied to the border box. The padding and border of the box are laid out and drawn inside the specified width and height, with the content box sized to fill the remaining space, floored at zero. The content width and height are calculated by subtracting the border and padding widths of the respective sides from the specified <length-percentage>. As the content width and height cannot be negative, this computation is floored at zero. Used values, as exposed for instance through getComputedStyle(), also refer to the border box.",
301
+ "type": "value",
302
+ "value": "border-box"
302
303
  }
303
304
  ],
304
305
  "styleDeclaration": [
package/css-speech.json CHANGED
@@ -525,8 +525,9 @@
525
525
  "values": [
526
526
  {
527
527
  "name": "<family-name>",
528
- "value": "<family-name>",
529
- "type": "value"
528
+ "prose": "Values are specific voice instances (e.g., Mike, comedian, mary, carlos2, \"valley girl\"). Like font-family names, voice names must either be given quoted as strings, or unquoted as a sequence of one or more identifiers. If a sequence of identifiers is given as a voice name, the computed value is the name converted to a string by joining all the identifiers in the sequence by single spaces. Voice names that happen to be the same as the gender keywords (male, female and neutral) or that happen to match the CSS-wide keywords or preserve must be quoted to disambiguate with these keywords. The keyword default is reserved for future use and must also be quoted when used as voice names. It is recommended to quote voice names that contain white space, digits, or punctuation characters other than hyphens—even if these voice names are valid in unquoted form—in order to improve code clarity. For example: voice-family: \"john doe\", \"Henry the-8th\";",
529
+ "type": "value",
530
+ "value": "<family-name>"
530
531
  },
531
532
  {
532
533
  "name": "<age>",
@@ -649,9 +649,9 @@
649
649
  {
650
650
  "msg": "Dangling value",
651
651
  "name": "auto",
652
- "value": "auto",
653
- "pureSyntax": false,
652
+ "prose": "The UA chooses a trim amount that ensures that if two identical underlined elements appear side-by-side they do not appear to have a single underline. (This is important in Chinese, where underlining is a form of punctuation.) text-decoration-skip-inset: auto for <u>石井</u><u>艾俐俐</u>",
654
653
  "type": "value",
654
+ "value": "auto",
655
655
  "for": "text-decoration-skip-inset"
656
656
  },
657
657
  {
@@ -159,8 +159,9 @@
159
159
  },
160
160
  {
161
161
  "name": "view-box",
162
- "value": "view-box",
163
- "type": "value"
162
+ "prose": "Uses the nearest SVG viewport as reference box. If a viewBox attribute is specified for the SVG viewport creating element: The reference box is positioned at the origin of the coordinate system established by the viewBox attribute. The dimension of the reference box is set to the width and height values of the viewBox attribute.",
163
+ "type": "value",
164
+ "value": "view-box"
164
165
  }
165
166
  ],
166
167
  "styleDeclaration": [
package/css-ui.json CHANGED
@@ -484,8 +484,9 @@
484
484
  },
485
485
  {
486
486
  "name": "contain",
487
- "value": "contain",
488
- "type": "value"
487
+ "prose": "UAs must not allow a selection which is started in this element to be extended outside of this element. A selection started outside of this element must not end in this element. If the user attempts to create such a selection, the UA must instead end the selection range at the element boundary. The UA must allow selections to extend across this element, and such selections must include the content of the element.",
488
+ "type": "value",
489
+ "value": "contain"
489
490
  },
490
491
  {
491
492
  "name": "all",
package/css-values.json CHANGED
@@ -127,9 +127,10 @@
127
127
  "type": "type",
128
128
  "values": [
129
129
  {
130
- "name": "em unit",
131
- "value": "em unit",
132
- "type": "value"
130
+ "name": "em",
131
+ "prose": "Equal to the computed value of the font-size property of the element on which it is used. The rule: h1 { line-height: 1.2em } means that the line height of h1 elements will be 20% greater than the font size of h1 element. On the other hand: h1 { font-size: 1.2em } means that the font size of h1 elements will be 20% greater than the computed font size inherited by h1 elements.",
132
+ "type": "value",
133
+ "value": "em"
133
134
  },
134
135
  {
135
136
  "name": "rem",
@@ -41,20 +41,20 @@
41
41
  "prose": "This pseudo-element is the grouping container of all the other view-transition pseudo-elements. Its originating element is the document’s document element. The following is added to the HTML user agent style sheet: html::view-transition { position: fixed; inset: 0; }"
42
42
  },
43
43
  {
44
- "name": "::view-transition-group( <pt-name-selector> )",
45
- "prose": "One of these pseudo-elements exists for each view-transition-name in a view transition, and holds the rest of the pseudo-elements corresponding to this view-transition-name. Its originating element is the ::view-transition pseudo-element. The following is added to the HTML user agent style sheet: html::view-transition-group(*) { position: absolute; top: 0; left: 0; animation-duration: 0.25s; animation-fill-mode: both; } The selector for this and subsequently defined pseudo-elements is likely to change to indicate position in the pseudo-tree hierarchy."
44
+ "name": "::view-transition-group()",
45
+ "value": "::view-transition-group( <pt-name-selector> )"
46
46
  },
47
47
  {
48
- "name": "::view-transition-image-pair( <pt-name-selector> )",
49
- "prose": "One of these pseudo-elements exists for each view-transition-name being in a view transition, and holds the images of the old and new elements. Its originating element is the ::view-transition-group() pseudo-element with the same transition-name. The following is added to the HTML user agent style sheet: html::view-transition-image-pair(*) { position: absolute; inset: 0; animation-duration: inherit; animation-fill-mode: inherit; }"
48
+ "name": "::view-transition-image-pair()",
49
+ "value": "::view-transition-image-pair( <pt-name-selector> )"
50
50
  },
51
51
  {
52
- "name": "::view-transition-old( <pt-name-selector> )",
53
- "prose": "One of these pseudo-elements exists for each element in the old DOM being animated by the view transition, and is a replaced element displaying the old element’s snapshot image. It has natural dimensions equal to the snapshot’s size. Its originating element is the ::view-transition-image-pair() pseudo-element with the same transition-name. The following is added to the HTML user agent style sheet: html::view-transition-old(*) { position: absolute; inset-block-start: 0; inline-size: 100%; block-size: auto; animation-duration: inherit; animation-fill-mode: inherit; }"
52
+ "name": "::view-transition-old()",
53
+ "value": "::view-transition-old( <pt-name-selector> )"
54
54
  },
55
55
  {
56
- "name": "::view-transition-new( <pt-name-selector> )",
57
- "prose": "Identical to ::view-transition-old(), except it deals with the new element instead."
56
+ "name": "::view-transition-new()",
57
+ "value": "::view-transition-new( <pt-name-selector> )"
58
58
  }
59
59
  ],
60
60
  "values": [
package/fill-stroke.json CHANGED
@@ -356,8 +356,9 @@
356
356
  "values": [
357
357
  {
358
358
  "name": "<number>",
359
- "value": "<number>",
360
- "type": "value"
359
+ "prose": "Specifies the limit on the join’s size as a ratio of its diagonal to the stroke-width. Values less than 1 are invalid (and make the declaration invalid). For a miter linejoin, the length of the diagonal is calculated from the angle between the two segments as stroke-width / sin(θ/2). The linejoin is clipped perpendicular to the line bisecting the angle between the two path segments. For an arcs linejoin, the length of the diagonal is calculated along a circular arc that is tangent to the line bisecting the angle between the two segments at the point the two segments intersect and passes through the end point of the join. The linejoin is clipped perpendicular to this arc.",
360
+ "type": "value",
361
+ "value": "<number>"
361
362
  }
362
363
  ],
363
364
  "styleDeclaration": [
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webref/css",
3
3
  "description": "CSS definitions of the web platform",
4
- "version": "6.0.0",
4
+ "version": "6.1.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/w3c/webref.git"
@@ -12,6 +12,6 @@
12
12
  "license": "MIT",
13
13
  "main": "index.js",
14
14
  "peerDependencies": {
15
- "css-tree": "^2.2.1"
15
+ "css-tree": "^2.3.0"
16
16
  }
17
17
  }
@@ -6,12 +6,12 @@
6
6
  "properties": [
7
7
  {
8
8
  "name": "scroll-timeline-name",
9
- "value": "none | <custom-ident>",
9
+ "value": "none | <custom-ident>#",
10
10
  "initial": "none",
11
11
  "appliesTo": "scroll containers",
12
12
  "inherited": "no",
13
13
  "percentages": "n/a",
14
- "computedValue": "the specified keyword",
14
+ "computedValue": "the keyword none or a list of <custom-ident>s",
15
15
  "canonicalOrder": "per grammar",
16
16
  "animationType": "not animatable",
17
17
  "styleDeclaration": [
@@ -21,12 +21,12 @@
21
21
  },
22
22
  {
23
23
  "name": "scroll-timeline-axis",
24
- "value": "block | inline | vertical | horizontal",
24
+ "value": "[ block | inline | vertical | horizontal ]#",
25
25
  "initial": "block",
26
26
  "appliesTo": "scroll containers",
27
27
  "inherited": "no",
28
28
  "percentages": "n/a",
29
- "computedValue": "the specified keyword",
29
+ "computedValue": "a list of the keywords specified",
30
30
  "canonicalOrder": "per grammar",
31
31
  "animationType": "not animatable",
32
32
  "values": [
@@ -74,7 +74,7 @@
74
74
  },
75
75
  {
76
76
  "name": "scroll-timeline",
77
- "value": "<'scroll-timeline-name'> || <'scroll-timeline-axis'>",
77
+ "value": "[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#",
78
78
  "initial": "see individual properties",
79
79
  "appliesTo": "scroll containers",
80
80
  "inherited": "no",
@@ -186,7 +186,7 @@
186
186
  },
187
187
  {
188
188
  "name": "view-timeline",
189
- "value": "[ <'view-timeline-name'> || <'view-timeline-axis'> ]#",
189
+ "value": "[ <'view-timeline-name'> <'view-timeline-axis'>? ]#",
190
190
  "initial": "see individual properties",
191
191
  "appliesTo": "all elements",
192
192
  "inherited": "see individual properties",
@@ -260,7 +260,7 @@
260
260
  },
261
261
  {
262
262
  "name": "animation-delay-end",
263
- "value": "[ <time> | <timeline-range-name> <percentage> ]",
263
+ "value": "[ <time> | <timeline-range-name> <percentage> ]#",
264
264
  "initial": "0s",
265
265
  "appliesTo": "all elements",
266
266
  "inherited": "no",
@@ -293,7 +293,7 @@
293
293
  "values": [
294
294
  {
295
295
  "name": "scroll()",
296
- "prose": "The scroll() functional notation can be used as a value of animation-timeline and specifies a scroll progress timeline. Its syntax is",
296
+ "prose": "The scroll() functional notation can be used as a <single-animation-timeline> value in animation-timeline and specifies a scroll progress timeline. Its syntax is",
297
297
  "type": "function",
298
298
  "value": "scroll( [ <scroller> || <axis> ]? )",
299
299
  "values": [
@@ -345,6 +345,12 @@
345
345
  "type": "type",
346
346
  "value": "root | nearest"
347
347
  },
348
+ {
349
+ "name": "view()",
350
+ "prose": "The view() functional notation can be used as a <single-animation-timeline> value in animation-timeline and specifies a view progress timeline in reference to the nearest ancestor scroll container. Its syntax is",
351
+ "type": "function",
352
+ "value": "view( [ <axis> || <'view-timeline-inset'> ]? )"
353
+ },
348
354
  {
349
355
  "name": "<timeline-range-name>",
350
356
  "prose": "A named timeline range is a named segment of an animation timeline. The start of the segment is represented as 0% progress through the range; the end of the segment is represented as 100% progress through the range. Multiple named timeline ranges can be attached to a given timeline, and multiple such ranges can overlap. For example, the contain range of a view progress timeline overlaps with its cover range. Named timeline ranges are represented by the <timeline-range-name> value type, which indicates a CSS identifier representing one of the predefined named timeline ranges.",
package/selectors.json CHANGED
@@ -16,7 +16,7 @@
16
16
  },
17
17
  {
18
18
  "name": ":not()",
19
- "prose": "The negation pseudo-class, :not(), is a functional pseudo-class taking a selector list as an argument. It represents an element that is not represented by its argument."
19
+ "prose": "The negation pseudo-class, :not(), is a functional pseudo-class taking a <complex-real-selector-list> as an argument. It represents an element that is not represented by its argument."
20
20
  },
21
21
  {
22
22
  "name": ":where()",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  {
26
26
  "name": ":has()",
27
- "prose": "The relational pseudo-class, :has(), is a functional pseudo-class taking a <forgiving-relative-selector-list> as an argument. It represents an element if any of the relative selectors would match at least one element when anchored against this element."
27
+ "prose": "The relational pseudo-class, :has(), is a functional pseudo-class taking a <relative-selector-list> as an argument. It represents an element if any of the relative selectors would match at least one element when anchored against this element."
28
28
  },
29
29
  {
30
30
  "name": ":defined",
@@ -68,23 +68,23 @@
68
68
  },
69
69
  {
70
70
  "name": ":hover",
71
- "prose": "The :hover pseudo-class applies while the user designates an element with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element. Interactive user agents that cannot detect hovering due to hardware limitations (e.g., a pen device that does not detect hovering) are still conforming; the selector will simply never match in such a UA."
71
+ "prose": "The :hover pseudo-class applies while the user designates an element (or pseudo-element) with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element. Interactive user agents that cannot detect hovering due to hardware limitations (e.g., a pen device that does not detect hovering) are still conforming; the selector will simply never match in such a UA."
72
72
  },
73
73
  {
74
74
  "name": ":active",
75
- "prose": "The :active pseudo-class applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it. On systems with more than one mouse button, :active applies only to the primary or primary activation button (typically the \"left\" mouse button), and any aliases thereof."
75
+ "prose": "The :active pseudo-class applies while an element is being “activated” by the user, as defined by the host language; for example, while a hyperlink is being triggered."
76
76
  },
77
77
  {
78
78
  "name": ":focus",
79
- "prose": "The :focus pseudo-class applies while an element has the focus (accepts keyboard or mouse events, or other forms of input)."
79
+ "prose": "The :focus pseudo-class applies while an element (or pseudo-element) has the focus (accepts keyboard or other forms of input)."
80
80
  },
81
81
  {
82
82
  "name": ":focus-visible",
83
- "prose": "While the :focus pseudo-class always matches the currently-focused element, UAs only sometimes visibly indicate focus (such as by drawing a “focus ring”), instead using a variety of heuristics to visibly indicate the focus only when it would be most helpful to the user. The :focus-visible pseudo-class matches a focused element in these situations only, allowing authors to change the appearance of the focus indicator without changing when a focus indicator appears."
83
+ "prose": "While the :focus pseudo-class always matches the currently-focused element, UAs only sometimes visibly indicate focus (such as by drawing a “focus ring”), instead using a variety of heuristics to visibly indicate the focus only when it would be most helpful to the user. The :focus-visible pseudo-class matches a focused element (or pseudo-element) in these situations only, allowing authors to change the appearance of the focus indicator without changing when a focus indicator appears."
84
84
  },
85
85
  {
86
86
  "name": ":focus-within",
87
- "prose": "The :focus-within pseudo-class applies to any element for which the :focus pseudo class applies as well as to an element whose descendant in the flat tree (including non-element nodes, such as text nodes) matches the conditions for matching :focus."
87
+ "prose": "The :focus-within pseudo-class applies to any element (or pseudo-element) for which the :focus pseudo class applies, as well as to an element (or pseudo-element) whose descendant in the flat tree (including non-element nodes, such as text nodes) matches the conditions for matching :focus."
88
88
  },
89
89
  {
90
90
  "name": ":current",
@@ -232,11 +232,11 @@
232
232
  },
233
233
  {
234
234
  "name": ":nth-child()",
235
- "prose": "The :nth-child(An+B [of S]? ) pseudo-class notation represents elements that are among An+Bth elements from the list composed of their inclusive siblings that match the selector list S, which is a <complex-selector-list> parsed as a forgiving selector list. If S is omitted, it defaults to *|*."
235
+ "value": ":nth-child(An+B [of S]? )"
236
236
  },
237
237
  {
238
238
  "name": ":nth-last-child()",
239
- "prose": "The :nth-last-child(An+B [of S]? ) pseudo-class notation represents elements that are among An+Bth elements from the list composed of their inclusive siblings that match the selector list S, counting backwards from the end. S is <complex-selector-list> parsed as a forgiving selector list. If S is omitted, it defaults to *|*."
239
+ "value": ":nth-last-child(An+B [of S]? )"
240
240
  },
241
241
  {
242
242
  "name": ":first-child",
@@ -252,11 +252,11 @@
252
252
  },
253
253
  {
254
254
  "name": ":nth-of-type()",
255
- "prose": "The :nth-of-type(An+B) pseudo-class notation represents the same elements that would be matched by :nth-child(|An+B| of S), where S is a type selector and namespace prefix matching the element in question. For example, when considering whether an HTML img element matches this pseudo-class, the S in question is html|img (assuming an appropriate html namespace is declared)."
255
+ "value": ":nth-of-type(An+B)"
256
256
  },
257
257
  {
258
258
  "name": ":nth-last-of-type()",
259
- "prose": "The :nth-last-of-type(An+B) pseudo-class notation represents the same elements that would be matched by :nth-last-child(|An+B| of S), where S is a type selector and namespace prefix matching the element in question. For example, when considering whether an HTML img element matches this pseudo-class, the S in question is html|img (assuming an appropriate html namespace is declared)."
259
+ "value": ":nth-last-of-type(An+B)"
260
260
  },
261
261
  {
262
262
  "name": ":first-of-type",
@@ -288,11 +288,11 @@
288
288
  },
289
289
  {
290
290
  "name": ":nth-col()",
291
- "prose": "The :nth-col(An+B) pseudo-class notation represents a cell element belonging to a column that has An+B-1 columns before it, for any positive integer or zero value of n. Column membership is determined based on the semantics of the document language only: whether and how the elements are presented is not considered. If a cell element belongs to more than one column, it is represented by a selector indicating any of those columns."
291
+ "value": ":nth-col(An+B)"
292
292
  },
293
293
  {
294
294
  "name": ":nth-last-col()",
295
- "prose": "The :nth-last-col(An+B) pseudo-class notation represents a cell element belonging to a column that has An+B-1 columns after it, for any positive integer or zero value of n. Column membership is determined based on the semantics of the document language only: whether and how the elements are presented is not considered. If a cell element belongs to more than one column, it is represented by a selector indicating any of those columns."
295
+ "value": ":nth-last-col(An+B)"
296
296
  }
297
297
  ],
298
298
  "values": [
@@ -306,6 +306,11 @@
306
306
  "type": "type",
307
307
  "value": "<complex-selector>#"
308
308
  },
309
+ {
310
+ "name": "<complex-real-selector-list>",
311
+ "type": "type",
312
+ "value": "<complex-real-selector>#"
313
+ },
309
314
  {
310
315
  "name": "<compound-selector-list>",
311
316
  "type": "type",
@@ -321,9 +326,24 @@
321
326
  "type": "type",
322
327
  "value": "<relative-selector>#"
323
328
  },
329
+ {
330
+ "name": "<relative-real-selector-list>",
331
+ "type": "type",
332
+ "value": "<relative-real-selector>#"
333
+ },
334
+ {
335
+ "name": "<complex-selector-unit>",
336
+ "type": "type",
337
+ "value": "[ <compound-selector>? <pseudo-compound-selector>* ]!"
338
+ },
324
339
  {
325
340
  "name": "<complex-selector>",
326
341
  "type": "type",
342
+ "value": "<complex-selector-unit> [ <combinator>? <complex-selector-unit> ]*"
343
+ },
344
+ {
345
+ "name": "<complex-real-selector>",
346
+ "type": "type",
327
347
  "value": "<compound-selector> [ <combinator>? <compound-selector> ]*"
328
348
  },
329
349
  {
@@ -331,10 +351,20 @@
331
351
  "type": "type",
332
352
  "value": "<combinator>? <complex-selector>"
333
353
  },
354
+ {
355
+ "name": "<relative-real-selector>",
356
+ "type": "type",
357
+ "value": "<combinator>? <complex-real-selector>"
358
+ },
334
359
  {
335
360
  "name": "<compound-selector>",
336
361
  "type": "type",
337
- "value": "[ <type-selector>? <subclass-selector>* [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!"
362
+ "value": "[ <type-selector>? <subclass-selector>* ]!"
363
+ },
364
+ {
365
+ "name": "<pseudo-compound-selector>",
366
+ "type": "type",
367
+ "value": "<pseudo-element-selector> <pseudo-class-selector>*"
338
368
  },
339
369
  {
340
370
  "name": "<simple-selector>",
@@ -410,11 +440,6 @@
410
440
  "name": "<forgiving-selector-list>",
411
441
  "prose": "The <forgiving-selector-list> production instead parses each selector in the list individually, simply ignoring ones that fail to parse, so the remaining selectors can still be used.",
412
442
  "type": "type"
413
- },
414
- {
415
- "name": "<forgiving-relative-selector-list>",
416
- "prose": "<forgiving-relative-selector-list> is identical to <forgiving-selector-list>, except it parses its components as <relative-selector> rather than <complex-selector>.",
417
- "type": "type"
418
443
  }
419
444
  ]
420
445
  }