Skip to content

Commit 15de50d

Browse files
committed
[css-values] Update <custom-ident> section to match current thinking on disambiguation, insofar as possible. Fix crosslinking.
--HG-- extra : rebase_source : fc884180d312589f2a0dbcfc76f89d8e2f9cda01
1 parent 2f9440e commit 15de50d

File tree

2 files changed

+2341
-1046
lines changed

2 files changed

+2341
-1046
lines changed

css-values/Overview.bs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Component value types</h3>
6868

6969
<ol>
7070
<li>
71-
<a href="#keywords">keyword</a> values (such as ''auto'', ''disc'', etc.),
71+
<a href="#keywords">keyword</a> values (such as <css>auto</css>, ''disc'', etc.),
7272
which appear literally, without quotes (e.g. <code>auto</code>)
7373

7474
<li>
@@ -307,7 +307,7 @@ Property value examples</h3>
307307
<td>''3''
308308
<tr><td>'text-align'
309309
<td>left | right | center | justify
310-
<td>''center''
310+
<td>''text-align/center''
311311
<tr><td>'padding-top'
312312
<td>&lt;length> | &lt;percentage>
313313
<td>''5%''
@@ -388,21 +388,21 @@ Author-defined Identifiers: the <<custom-ident>> type</h3>
388388
The <a>CSS-wide keywords</a> are not valid <<custom-ident>>s.
389389
The ''default'' keyword is reserved
390390
and is also not a valid <<custom-ident>>.
391+
Specifications using <<custom-ident>> must specify clearly
392+
what other keywords are excluded from <<custom-ident>>, if any--
393+
for example by saying that any pre-defined keywords in that property's value definition are excluded.
394+
Excluded keywords are excluded in all <a title="ASCII case-insensitive">ASCII case permutations</a>.
391395

392-
Specifications using <<custom-ident>> should specify clearly
393-
what other keywords are excluded from <<custom-ident>>&mdash;for
394-
example by saying that any pre-defined keywords in that property's value definition are excluded.
395-
As a general rule, an identifier that could be interpreted as a pre-defined keyword
396-
in any position or multiplication of the <<custom-ident>> component value
397-
is excluded,
398-
and is invalid as a <<custom-ident>> matching to that component value
399-
even in positions where its use would be technically unambiguous.
400-
For example, if a keyword could be misparsed when specified
401-
as the first item of a ''<<custom-ident>>+'' list,
402-
it is invalid when specified in any position in that list.
403-
404-
Excluded keywords are excluded in all ASCII case permutations.
396+
When parsing positionally-ambiguous keywords in a property value,
397+
a <<custom-ident>> production can only claim the keyword if no other unfulfilled production can claim it.
405398

399+
<div class="example">
400+
For example, the shorthand declaration ''animation: ease-in ease-out''
401+
is equivalent to the longhand declarations
402+
''animation-timing-function: ease-in; animation-name: ease-out;''.
403+
''ease-in'' is claimed by the <<single-timing-function>> production belonging to 'animation-timing-function',
404+
leaving ''ease-out'' to be claimed by the <<custom-ident>> production belonging to 'animation-name'.
405+
</div>
406406

407407
<h3 id="strings">
408408
Quoted Strings: the <<string>> type</h3>
@@ -669,7 +669,7 @@ Relative lengths</h3>
669669
Font-relative lengths: the ''em'', ''ex'', ''ch'', ''rem'' units</h4>
670670

671671
Aside from ''rem'' (which refers to the font-size of the root element),
672-
the <dfn export>font-relative lengths</dfn> refer to the font metrics of the element on which they are used.
672+
the <dfn export id="font-relative length">font-relative lengths</dfn> refer to the font metrics of the element on which they are used.
673673
The exception is when they occur in the value of the 'font-size' property itself,
674674
in which case they refer to the computed font metrics of the parent element
675675
(or the computed font metrics corresponding to the initial values of the 'font' property,
@@ -730,7 +730,7 @@ Viewport-percentage lengths: the ''vw'', ''vh'', ''vmin'', ''vmax'' units</h4>
730730
<a href="http://www.w3.org/TR/CSS21/visudet.html#containing-block-details">initial containing block</a>.
731731
When the height or width of the initial containing block is changed,
732732
they are scaled accordingly.
733-
However, when the value of 'overflow' on the root element is ''auto'',
733+
However, when the value of 'overflow' on the root element is ''overflow/auto'',
734734
any scroll bars are assumed not to exist.
735735
<span class='note'>Note that the initial containing block's size is affected by the presence of scrollbars on the viewport.</span>
736736

@@ -1012,7 +1012,7 @@ Images: the <<image>> type</h3>
10121012
The <<position>> data type is defined in [[!CSS3BG]].
10131013
UAs that support CSS Backgrounds &amp; Borders Level 3 or its successor must interpret <<position>> as defined therein.
10141014

1015-
<h2 id="functional-notation">
1015+
<h2 id="functional-notations">
10161016
Functional Notations</h2>
10171017

10181018
A <dfn>functional notation</dfn> is a type of component value
@@ -1223,7 +1223,7 @@ Computed Value</h4>
12231223
e.g. ''calc(100% - 100% + 1em)'' resolves to ''calc(0% + 1em)'',
12241224
not to ''calc(1em)''.
12251225
If there are special rules for computing percentages in a value
1226-
(e.g. <a href="http://www.w3.org/TR/CSS21/visudet.html#the-height-property">the 'height' property</a>),
1226+
(e.g. <a href="http://www.w3.org/TR/CSS21/visudet.html#the-height-property">the <css>height</css> property</a>),
12271227
they apply whenever a ''calc()'' expression contains percentages.
12281228

12291229
Note: Thus, the computed value of a ''calc()'' expression can be represented
@@ -1260,7 +1260,7 @@ Computed Value</h4>
12601260
math expressions involving percentages for widths and heights on
12611261
table columns, table column groups, table rows, table row groups, and table cells
12621262
in both auto and fixed layout tables
1263-
MAY be treated as if ''auto'' had been specified.
1263+
MAY be treated as if ''width/auto'' had been specified.
12641264

12651265

12661266
<h4 id='calc-range'>
@@ -1298,7 +1298,7 @@ Toggling Between Values: ''toggle()''</h3>
12981298
<div class='example'>
12991299
The following example cycles markers for nested lists,
13001300
so that a top level list has ''disc''-shaped markers,
1301-
but nested lists use ''circle'', then ''square'', then ''box'',
1301+
but nested lists use ''list-style-type/circle'', then ''square'', then ''box'',
13021302
and then repeat through the list of marker shapes,
13031303
starting again (for the 5th list deep) with ''disc''.
13041304

@@ -1354,7 +1354,7 @@ Toggling Between Values: ''toggle()''</h3>
13541354
not a particular serialization [[!CSS21]],
13551355
so comparison between computed values should always be unambiguous and have the expected result.
13561356
For example,
1357-
a Level 2 <a href="http://www.w3.org/TR/CSS21/colors.html#propdef-background-position">'background-position'</a> computed value
1357+
a Level 2 <a property spec=css21>background-position</a> computed value
13581358
is just two offsets, each represented as an absolute length or a percentage,
13591359
so the declarations ''background-position: top center'' and ''background-position: 50% 0%''
13601360
produce identical computed values.
@@ -1412,7 +1412,7 @@ Ian's proposal:
14121412
In CSS3, the ''attr()'' expression can return many different types.
14131413
The ''attr()'' expression cannot return everything,
14141414
for example it cannot do counters, named strings, quotes,
1415-
or keyword values such as ''auto'', ''nowrap'', or ''baseline''.
1415+
or keyword values such as <css>auto</css>, <css>nowrap</css>, or <css>baseline</css>.
14161416
This is intentional,
14171417
as the intent of the ''attr()'' expression is not to make it possible to describe a presentational language's formatting using CSS,
14181418
but to enable CSS to take semantic data into account.
@@ -1464,14 +1464,14 @@ Ian's proposal:
14641464
Note that the default value need not be of the type given,
14651465
if the attr() expression is the entire property value.
14661466
For instance, if the type required of the attribute by the author is ''px'',
1467-
the default could still be ''auto'',
1467+
the default could still be <css>auto</css>,
14681468
like in ''width: attr(size px, auto);''.
14691469

14701470
If the attr() is used alongside other values to form the full property value,
14711471
however, the default value must match the attr()&#39;s type.
14721472
For example, ''box-shadow: attr(size px, inset) 5px 10px blue;'' is invalid,
14731473
even though it would create a valid declaration if you substituted the attr() expression
1474-
with either a ''px'' length <em>or</em> the ''inset'' keyword.
1474+
with either a ''px'' length <em>or</em> the ''box-shadow/inset'' keyword.
14751475
</div>
14761476

14771477
If the specified attribute exists on the element,
@@ -1790,7 +1790,7 @@ Changes</h2>
17901790
<li>Made undefined namespace prefixes in ''attr()'' invalidate the function.
17911791
<li>Per <a href="http://lists.w3.org/Archives/Public/www-style/2013Jan/0616.html">WG resolution</a>,
17921792
made <a href="#viewport-relative-lengths">viewport-percentage units</a> respect scrollbars on the viewport
1793-
unless 'overflow' is ''auto'' (in which case they ignore the presence of scrollbars).
1793+
unless 'overflow' is ''overflow/auto'' (in which case they ignore the presence of scrollbars).
17941794
<li>Deferred exact definition of <a href="#viewport-relative-lengths">viewport-percentage units</a>
17951795
in paged media to <a href="http://www.w3.org/TR/css3-page/">CSS Paged Media</a>.
17961796
<li>Added back the <<custom-ident>> term as a convenience notation, so that other specs can refer to it.

0 commit comments

Comments
 (0)