Skip to content

Commit 8ea8d7d

Browse files
committed
[css-value-3] Define new bracketed range notation for the CSS value definition syntax. #355
1 parent 36eb02e commit 8ea8d7d

File tree

1 file changed

+52
-5
lines changed

1 file changed

+52
-5
lines changed

css-values-3/Overview.bs

+52-5
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,10 @@ Module Interactions</h3>
7676
<h2 id="value-defs">
7777
Value Definition Syntax</h2>
7878

79-
The syntax described here is used to define the set of valid values
80-
for CSS properties. A property value can have one or more components.
79+
The <dfn for=CSS export>value definition syntax</dfn> described here
80+
is used to define the set of valid values for CSS properties
81+
(and the valid syntax of many other parts of CSS).
82+
A value so described can have one or more components.
8183

8284
<h3 id="component-types">
8385
Component value types</h3>
@@ -92,6 +94,9 @@ Component value types</h3>
9294
<li>
9395
basic data types, which appear between ''&lt;'' and ''>''
9496
(e.g., <<length>>, <<percentage>>, etc.).
97+
For <a>numeric data types</a>,
98+
this type notation can annotate any range restrictions
99+
using the [[#numeric-ranges|bracketed range notation]] described below.
95100

96101
<li>
97102
types that have the same range of values as a property bearing the same name
@@ -355,7 +360,11 @@ Property value examples</h3>
355360
<h2 id="textual-values">
356361
Textual Data Types</h2>
357362

358-
<dfn export lt="CSS identifier | CSS ident | identifier | ident">Identifiers</dfn>,
363+
The <dfn>textual data types</dfn> include
364+
various keywords and identifiers
365+
as well as strings (<<string>>) and URLs (<<url>>).
366+
367+
CSS <dfn export lt="CSS identifier | CSS ident | identifier | ident">identifiers</dfn>,
359368
generically denoted by <dfn>&lt;ident></dfn>,
360369
consist of a sequence of characters conforming to the <<ident-token>> grammar. [[!CSS3SYN]]
361370
Identifiers cannot be quoted;
@@ -665,14 +674,52 @@ URL Modifiers</h4>
665674
<h2 id="numeric-types">
666675
Numeric Data Types</h2>
667676

668-
Properties may restrict numeric values to some range.
677+
The <dfn>numeric data types</dfn> include
678+
<<integer>>,
679+
<<number>>,
680+
<<percentage>>,
681+
and various <a>dimensions</a>
682+
including <<length>>, <<angle>>, <<time>>, <<frequency>>, and <<resolution>>.
683+
684+
Note: While genera-purpose <a>dimensions</a> are defined here,
685+
some other modules define additional data types
686+
(e.g. [[css-grid-1]] introduces ''fr'' units)
687+
whose usage is more localized.
688+
689+
<h2 id="numeric-ranges">
690+
Range Restrictions and Range Definition Notation</h3>
691+
692+
Properties can restrict numeric values to some range.
669693
If the value is outside the allowed range,
670-
unless otherwise specified,
694+
then unless otherwise specified,
671695
the declaration is invalid and must be <a href="https://www.w3.org/TR/CSS21/conform.html#ignore">ignored</a>.
696+
Range restrictions can be annotated in the numeric type notation
697+
using <dfn>bracketed range notation</dfn>,
698+
<code>[<var>min</var>,<var>max</var>]</code>
699+
within the angle brackets, after the identifying keyword,
700+
indicating a closed range
701+
between (and including) <var>min</var> and <var>max</var>,
702+
e.g. <<integer [0,10]>>.
703+
704+
Note: CSS values generally do not allow open ranges;
705+
thus only square-bracket notation is used.
672706

673707
CSS theoretically supports infinite precision and infinite ranges for all value types;
674708
however in reality implementations have finite capacity.
675709
UAs should support reasonably useful ranges and precisions.
710+
Range extremes that are ideally unlimited
711+
are indicated using &infin; or &minus;&infin; as appropriate.
712+
713+
If no range is indicated,
714+
either by using the <a>bracketed range notation</a>
715+
or in the property description,
716+
then <code>[&minus;&infin;,&infin;]</code> is assumed.
717+
718+
Note: At the time of writing,
719+
the <a>bracketed range notation</a> is new;
720+
thus in most CSS specifications
721+
any range limitations are described only in prose.
722+
This does not make them any less binding.
676723
<!--
677724
The recommended minimum ranges and precision,
678725
and the required rounding and clamping rules,

0 commit comments

Comments
 (0)