css3-overflow/Overview.src.html

Tue, 31 Jul 2012 17:42:36 -0700

author
L. David Baron <dbaron@dbaron.org>
date
Tue, 31 Jul 2012 17:42:36 -0700
changeset 6470
0b57818abe66
child 6471
beffd0ad5064
permissions
-rw-r--r--

Initial draft.

dbaron@6470 1 <!DOCTYPE html>
dbaron@6470 2 <html lang="en">
dbaron@6470 3 <head>
dbaron@6470 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
dbaron@6470 5 <title>CSS Regions Module Level 3 (Option B)</title>
dbaron@6470 6 <link rel=contents href="#contents">
dbaron@6470 7 <link rel=index href="#index">
dbaron@6470 8 <link rel="stylesheet" type="text/css" href="../default.css">
dbaron@6470 9 <link rel="stylesheet" type="text/css"
dbaron@6470 10 href="http://www.w3.org/StyleSheets/TR/W3C-[STATUS].css">
dbaron@6470 11 </head>
dbaron@6470 12
dbaron@6470 13 <div class="head">
dbaron@6470 14 <!--logo-->
dbaron@6470 15
dbaron@6470 16 <h1>CSS Regions Module Level 3 (Option B)</h1>
dbaron@6470 17
dbaron@6470 18 <h2 class="no-num no-toc">[LONGSTATUS] [DATE]</h2>
dbaron@6470 19 <dl>
dbaron@6470 20 <dt>This version:
dbaron@6470 21 <dd><a href="[VERSION]">http://www.w3.org/TR/[YEAR]/ED-css3-regions-b-[CDATE]/</a>
dbaron@6470 22
dbaron@6470 23 <dt>Latest version:
dbaron@6470 24 <dd><a href="http://www.w3.org/TR/[SHORTNAME]/">http://www.w3.org/TR/[SHORTNAME]/</a>
dbaron@6470 25
dbaron@6470 26 <dt>Editor's draft:
dbaron@6470 27 <dd><a href="http://dev.w3.org/csswg/[SHORTNAME]/">http://dev.w3.org/csswg/[SHORTNAME]/</a>
dbaron@6470 28
dbaron@6470 29 <!--
dbaron@6470 30 <dt>Previous version:
dbaron@6470 31 <dd><a href="http://www.w3.org/PreviousVersionURI">
dbaron@6470 32 http://www.w3.org/PreviousVersionURI</a>
dbaron@6470 33 -->
dbaron@6470 34
dbaron@6470 35 <dt>Issue Tracking:</dt>
dbaron@6470 36 <dd>Maintained in document (only editor's draft is current)
dbaron@6470 37
dbaron@6470 38 <dt>Feedback:</dt>
dbaron@6470 39 <dd><a href="http://lists.w3.org/Archives/Public/www-style/">www-style@w3.org</a> with subject line &ldquo;<kbd>[[SHORTNAME]] <var>&hellip; message topic &hellip;</var></kbd>&rdquo;
dbaron@6470 40
dbaron@6470 41 <dt>Editors:
dbaron@6470 42 <dd class="h-card vcard">
dbaron@6470 43 <a class="p-name fn u-url url" rel="author"
dbaron@6470 44 href="http://dbaron.org/">L. David Baron</a>,
dbaron@6470 45 <a class="p-org org" href="http://www.mozilla.org/">Mozilla</a>
dbaron@6470 46 </dl>
dbaron@6470 47
dbaron@6470 48 <!--copyright-->
dbaron@6470 49
dbaron@6470 50 <hr title="Separator for header">
dbaron@6470 51 </div>
dbaron@6470 52
dbaron@6470 53 <h2 class="no-num no-toc" id="abstract">Abstract</h2>
dbaron@6470 54
dbaron@6470 55 <p>
dbaron@6470 56 <a href="http://www.w3.org/TR/CSS/">CSS</a> is
dbaron@6470 57 a language for describing
dbaron@6470 58 the rendering of structured documents (such as HTML and XML)
dbaron@6470 59 on screen, on paper, in speech, etc.
dbaron@6470 60 This module contains the features of CSS
dbaron@6470 61 relating to new mechanisms of overflow handling in visual media (e.g., screen or paper).
dbaron@6470 62 In interactive media,
dbaron@6470 63 it describes features that allow the overflow
dbaron@6470 64 from a fixed size container
dbaron@6470 65 to be handled by pagination (displaying one page at a time).
dbaron@6470 66 It also describes features, applying to all visual media,
dbaron@6470 67 that allow the contents of an element
dbaron@6470 68 to be spread across multiple containers,
dbaron@6470 69 allowing the contents to flow across multiple regions of a page
dbaron@6470 70 or to have different styles for different parts.
dbaron@6470 71 </p>
dbaron@6470 72
dbaron@6470 73 <h2 class="no-num no-toc" id="status">Status of this document</h2>
dbaron@6470 74
dbaron@6470 75 <!--status-->
dbaron@6470 76
dbaron@6470 77 <p>The following features are at risk: &hellip;
dbaron@6470 78
dbaron@6470 79 <h2 class="no-num no-toc" id="contents">
dbaron@6470 80 Table of contents</h2>
dbaron@6470 81
dbaron@6470 82 <!--toc-->
dbaron@6470 83
dbaron@6470 84 <h2 id="intro">
dbaron@6470 85 Introduction</h2>
dbaron@6470 86
dbaron@6470 87 <p>
dbaron@6470 88 In CSS Level 1 [[CSS1]], placing more content than would fit
dbaron@6470 89 inside an element with a specified size
dbaron@6470 90 was generally an authoring error.
dbaron@6470 91 Doing so caused the content to extend
dbaron@6470 92 outside the bounds of the element,
dbaron@6470 93 which would likely cause
dbaron@6470 94 that content to overlap with other elements.
dbaron@6470 95 </p>
dbaron@6470 96
dbaron@6470 97 <p>
dbaron@6470 98 CSS Level 2 [[CSS21]] introduced the 'overflow' property,
dbaron@6470 99 which allows authors to have overflow be handled by scrolling,
dbaron@6470 100 which means it is no longer an authoring error.
dbaron@6470 101 It also allows authors to specify
dbaron@6470 102 that overflow is handled by clipping,
dbaron@6470 103 which makes sense when the author's intent
dbaron@6470 104 is that the content not be shown.
dbaron@6470 105 </p>
dbaron@6470 106
dbaron@6470 107 <p>
dbaron@6470 108 However, scrolling is not the only way
dbaron@6470 109 to present large amounts of content,
dbaron@6470 110 and may even not be the optimal way.
dbaron@6470 111 After all, the codex replaced the scroll
dbaron@6470 112 as the common format for large written works
dbaron@6470 113 because of its advantages.
dbaron@6470 114 </p>
dbaron@6470 115
dbaron@6470 116 <p>
dbaron@6470 117 This specification introduces
dbaron@6470 118 a mechanism for Web pages to specify
dbaron@6470 119 that a region of a page should handle overflow
dbaron@6470 120 through pagination rather than through scrolling.
dbaron@6470 121 </p>
dbaron@6470 122
dbaron@6470 123 <p>
dbaron@6470 124 This specification also extends the concept of overflow
dbaron@6470 125 in another direction.
dbaron@6470 126 Instead of requiring that authors specify a single region
dbaron@6470 127 into which the content of an element must flow,
dbaron@6470 128 this specification allows authors to specify multiple regions,
dbaron@6470 129 each with their own dimensions and styles,
dbaron@6470 130 so that the content of the element can flow from one to the next,
dbaron@6470 131 using as many as needed to place the content without overflowing.
dbaron@6470 132 </p>
dbaron@6470 133
dbaron@6470 134 <p>
dbaron@6470 135 In both of these cases, implementations must
dbaron@6470 136 break the content in the block-progression dimension.
dbaron@6470 137 Implementations must do this is described
dbaron@6470 138 in the CSS Fragmentation Module [[!CSS3-BREAK]].
dbaron@6470 139 </p>
dbaron@6470 140
dbaron@6470 141
dbaron@6470 142 <h2 id="paginated-overflow">Paginated overflow</h2>
dbaron@6470 143
dbaron@6470 144 <p class="issue">overflow:paginate or overflow:pages (or paged-x, paged-y, paged-x-controls, paged-y-controls as css3-gcpm has?)</p>
dbaron@6470 145
dbaron@6470 146 <p class="issue">Ability to display N pages at once
dbaron@6470 147 rather than just one page at once?</p>
dbaron@6470 148
dbaron@6470 149 <h2 id="region-overflow">Region overflow</h2>
dbaron@6470 150
dbaron@6470 151 <p>
dbaron@6470 152 This section introduces and defines the meaning of
dbaron@6470 153 the new ''regions'' (<span class="issue">or ''repeat''?</span>)
dbaron@6470 154 value of the 'overflow' property.
dbaron@6470 155 </p>
dbaron@6470 156
dbaron@6470 157 <p>
dbaron@6470 158 When the computed value of 'overflow' for an element is ''regions'',
dbaron@6470 159 and implementations would otherwise have created a box for the element,
dbaron@6470 160 then implementations must create at least one box for that element.
dbaron@6470 161 Each box created for the element is called a <dfn>region box</dfn>
dbaron@6470 162 for that element.
dbaron@6470 163 (If an element with ''overflow: regions'' generates only one box,
dbaron@6470 164 that box is a <i>region box</i>.
dbaron@6470 165 However, if an element's computed 'overflow' is not ''regions'',
dbaron@6470 166 then its box is not a <i>region box</i>.)
dbaron@6470 167 Every <i>region box</i> is a fragmentation container,
dbaron@6470 168 and for each <i>region box</i> box from which
dbaron@6470 169 breakable content overflows in the block dimension,
dbaron@6470 170 there must be another <i>region box</i> created as a next sibling
dbaron@6470 171 of the previous one.
dbaron@6470 172 <span class="issue">Or is it as though it's a next sibling of
dbaron@6470 173 the element? Need to figure out exactly how this interacts with
dbaron@6470 174 other box-level fixup.</span>
dbaron@6470 175 (Breakable content might overflow in the box dimension either
dbaron@6470 176 because of a specified size on the region box
dbaron@6470 177 or because the region box is within a fragmentation context
dbaron@6470 178 in which it is being broken.
dbaron@6470 179 In other words, a single region box is never broken
dbaron@6470 180 across columns or pages;
dbaron@6470 181 the pieces that are in separate columns or pages
dbaron@6470 182 are always distinct region boxes.)
dbaron@6470 183 </p>
dbaron@6470 184
dbaron@6470 185 <p class="issue">
dbaron@6470 186 We also want '':nth-region()'' pseudo-elements
dbaron@6470 187 to be able to apply to the pieces of an element
dbaron@6470 188 split within a fragmentation context.
dbaron@6470 189 Should we require that authors who want to use
dbaron@6470 190 '':nth-region()'' in this way specify ''overflow:regions''
dbaron@6470 191 (even if they don't specify a constrained height),
dbaron@6470 192 or should it work automatically for all elements
dbaron@6470 193 even if they don't have ''overflow: regions''?
dbaron@6470 194 </p>
dbaron@6470 195
dbaron@6470 196 <h3 id="region-styling">Region styling</h3>
dbaron@6470 197
dbaron@6470 198 <h4 id="region-pseudo-element">The ::nth-region() pseudo-element</h4>
dbaron@6470 199
dbaron@6470 200 <p>
dbaron@6470 201 The ::nth-region() pseudo-element is a pseudo-element
dbaron@6470 202 that describes some of the region boxes generated by an element.
dbaron@6470 203 The argument to the pseudo-element takes the same syntax
dbaron@6470 204 as the argument to the :nth-child() pseudo-class
dbaron@6470 205 defined in [[!SELECT]], and has the same meaning
dbaron@6470 206 except that the number is relative to
dbaron@6470 207 <i>region boxes</i> generated by the element
dbaron@6470 208 instead of siblings of the element.
dbaron@6470 209 </p>
dbaron@6470 210
dbaron@6470 211 <p class="issue">
dbaron@6470 212 If we go with a name for the 'overflow' value other than
dbaron@6470 213 ''overflow: regions'',
dbaron@6470 214 then we should probably rename this pseudo-element,
dbaron@6470 215 perhaps to ::nth-piece(), ::nth-part(), or ::nth-instance().
dbaron@6470 216 </p>
dbaron@6470 217
dbaron@6470 218 <p class="note">
dbaron@6470 219 Selectors that allow addressing regions
dbaron@6470 220 by counting from the end rather than the start
dbaron@6470 221 are intentionally not provided.
dbaron@6470 222 Such selectors would interfere with determining
dbaron@6470 223 the number of regions.
dbaron@6470 224 </p>
dbaron@6470 225
dbaron@6470 226 <h4 id="style-of-regions">Styling of regions</h4>
dbaron@6470 227
dbaron@6470 228 <p class="issue">
dbaron@6470 229 Should this apply to region overflow only,
dbaron@6470 230 or also to paginated overflow?
dbaron@6470 231 (If it applies,
dbaron@6470 232 then stricter property restrictions would be needed
dbaron@6470 233 for paginated overflow.)
dbaron@6470 234 </p>
dbaron@6470 235
dbaron@6470 236 <p>
dbaron@6470 237 In the absence of rules with ''::nth-region()'' pseudo-elements,
dbaron@6470 238 the computed style for each <i>region box</i>
dbaron@6470 239 is the computed style for the element
dbaron@6470 240 for which the <i>region box</i> was created.
dbaron@6470 241 However, the style for a <i>region box</i> is also influenced
dbaron@6470 242 by rules whose selector's <i>subject</i> [[!SELECT]]
dbaron@6470 243 has an ''::nth-region()'' pseudo-element,
dbaron@6470 244 if the 1-based number of the region box matches
dbaron@6470 245 that ''::nth-region()'' pseudo-element
dbaron@6470 246 and the selector (excluding the ''::nth-region()'' pseudo-element)
dbaron@6470 247 matches the element generating the regions.
dbaron@6470 248 </p>
dbaron@6470 249
dbaron@6470 250 <p>
dbaron@6470 251 Styling an '':nth-region()'' pseudo-element with the 'overflow'
dbaron@6470 252 property has no effect;
dbaron@6470 253 the computed value of 'overflow' for the region box
dbaron@6470 254 remains the same as the computed value of overflow for the element.
dbaron@6470 255 </p>
dbaron@6470 256
dbaron@6470 257 <p>
dbaron@6470 258 Specifying ''display: none'' for a region box causes
dbaron@6470 259 the region box with that index not to be generated.
dbaron@6470 260 However, in terms of the indices
dbaron@6470 261 used for matching '':nth-region()'' pseudo-elements
dbaron@6470 262 of later region boxes,
dbaron@6470 263 it still counts as though it was generated.
dbaron@6470 264 However, since it is not generated, it does not contain any content.
dbaron@6470 265 </p>
dbaron@6470 266
dbaron@6470 267 <p class="issue">
dbaron@6470 268 Would it make more sense to forbid ''display:none''?
dbaron@6470 269 Or perhaps to forbid 'display', 'position', 'float',
dbaron@6470 270 and similar (in addition to 'overflow')?
dbaron@6470 271 </p>
dbaron@6470 272
dbaron@6470 273 <p>
dbaron@6470 274 To match the model for other pseudo-elements
dbaron@6470 275 where the pseudo-elements live inside their corresponding element,
dbaron@6470 276 declarations in ''::nth-region()'' pseudo-elements override
dbaron@6470 277 declarations in rules without the pseudo-element.
dbaron@6470 278 The relative priority within such declarations is determined
dbaron@6470 279 by normal cascading order (see [[!CSS21]]).
dbaron@6470 280 </p>
dbaron@6470 281
dbaron@6470 282 <p>
dbaron@6470 283 Styles specified on ''::nth-region()'' pseudo-elements
dbaron@6470 284 do affect inheritance to content within the <i>region box</i>.
dbaron@6470 285 In other words, the content within the <i>region box</i> must
dbaron@6470 286 inherit from the region box's style (i.e., the pseudo-element style)
dbaron@6470 287 rather than directly from the element.
dbaron@6470 288 This means that elements split between region boxes may
dbaron@6470 289 have different styles for different parts of the element.
dbaron@6470 290 </p>
dbaron@6470 291
dbaron@6470 292 <h4 id="style-in-regions">Styling inside regions</h4>
dbaron@6470 293
dbaron@6470 294 <p class="issue">
dbaron@6470 295 Should this apply to region overflow only,
dbaron@6470 296 or also to paginated overflow,
dbaron@6470 297 or even to pagination across pages?
dbaron@6470 298 </p>
dbaron@6470 299
dbaron@6470 300 <p>
dbaron@6470 301 The '':nth-region()'' pseudo-element
dbaron@6470 302 can also be used to style
dbaron@6470 303 content inside of a <i>region box</i>.
dbaron@6470 304 Unlike the ''::first-line'' and ''::first-letter'' pseudo-elements,
dbaron@6470 305 the '':nth-region()'' pseudo-element can be applied
dbaron@6470 306 to parts of the selector other than the subject:
dbaron@6470 307 in particular, it can match ancestors of the subject.
dbaron@6470 308 However, the only CSS properties applied
dbaron@6470 309 by rules with such selectors
dbaron@6470 310 are those that apply
dbaron@6470 311 to the ''::first-letter'' pseudo-element.
dbaron@6470 312 </p>
dbaron@6470 313
dbaron@6470 314 <p>
dbaron@6470 315 To be more precise,
dbaron@6470 316 when a rule's selector has ''::nth-region()'' pseudo-elements
dbaron@6470 317 attached to parts of the selector other than the subject,
dbaron@6470 318 the declarations in that rule apply to
dbaron@6470 319 a fragment (or pseudo-element thereof) when:
dbaron@6470 320 </p>
dbaron@6470 321 <ol>
dbaron@6470 322 <li>
dbaron@6470 323 the declarations are for properties that apply to the
dbaron@6470 324 ''::first-letter'' pseudo-element,
dbaron@6470 325 </li>
dbaron@6470 326 <li>
dbaron@6470 327 the declarations would apply to
dbaron@6470 328 that fragment (or pseudo-element thereof)
dbaron@6470 329 had those ''::nth-region()'' pseudo-elements been removed,
dbaron@6470 330 with a particular association between
dbaron@6470 331 each sequence of simple selectors and the element it matched,
dbaron@6470 332 and
dbaron@6470 333 </li>
dbaron@6470 334 <li>
dbaron@6470 335 for each removed ''::nth-region()'' pseudo-element,
dbaron@6470 336 the fragment lives within a <i>region box</i>
dbaron@6470 337 of the element associated in that association
dbaron@6470 338 with the selector that the pseudo-element was attached to,
dbaron@6470 339 and whose index matches the pseudo-element.
dbaron@6470 340 </li>
dbaron@6470 341 </ol>
dbaron@6470 342
dbaron@6470 343 <h3 id="max-lines">The 'max-lines' property</h3>
dbaron@6470 344
dbaron@6470 345 <p>
dbaron@6470 346 Authors may wish to style the opening lines of an element
dbaron@6470 347 with different styles
dbaron@6470 348 by putting those opening lines in a separate region.
dbaron@6470 349 However, since it may be difficult to predict the exact height
dbaron@6470 350 occupied by those lines
dbaron@6470 351 in order to restrict the first region to that height,
dbaron@6470 352 this specification introduces a 'max-lines' property
dbaron@6470 353 that forces a region to break
dbaron@6470 354 after a specified number of lines.
dbaron@6470 355 This forces a break after the given number of lines
dbaron@6470 356 contained within the element or its descendants,
dbaron@6470 357 as long as those lines are in the same block formatting context.
dbaron@6470 358 </p>
dbaron@6470 359
dbaron@6470 360 <table class=propdef>
dbaron@6470 361 <tr>
dbaron@6470 362 <th>Name:
dbaron@6470 363 <td><dfn>max-lines</dfn>
dbaron@6470 364 <tr>
dbaron@6470 365 <th><a href="#values">Value</a>:
dbaron@6470 366 <td>none | &lt;integer&gt;
dbaron@6470 367 <tr>
dbaron@6470 368 <th>Initial:
dbaron@6470 369 <td>none
dbaron@6470 370 <tr>
dbaron@6470 371 <th>Applies to:
dbaron@6470 372 <td>region boxes
dbaron@6470 373 <tr>
dbaron@6470 374 <th>Inherited:
dbaron@6470 375 <td>no
dbaron@6470 376 <tr>
dbaron@6470 377 <th>Percentages:
dbaron@6470 378 <td>N/A
dbaron@6470 379 <tr>
dbaron@6470 380 <th>Media:
dbaron@6470 381 <td>visual
dbaron@6470 382 <tr>
dbaron@6470 383 <th>Computed&nbsp;value:
dbaron@6470 384 <td>specified value
dbaron@6470 385 <tr>
dbaron@6470 386 <th>Animatable:
dbaron@6470 387 <td>as <a href="http://www.w3.org/TR/css3-transitions/#animatable-types">integer</a>
dbaron@6470 388 <tr>
dbaron@6470 389 <th>Canonical order:
dbaron@6470 390 <td><abbr title="follows order of property value definition">per grammar</abbr>
dbaron@6470 391 </table>
dbaron@6470 392
dbaron@6470 393 <dl>
dbaron@6470 394 <dt>none
dbaron@6470 395 <dd>
dbaron@6470 396 <p>
dbaron@6470 397 Breaks occur only as specified elsewhere.
dbaron@6470 398 </p>
dbaron@6470 399 </dd>
dbaron@6470 400
dbaron@6470 401 <dt>&lt;integer&gt;
dbaron@6470 402 <dd>
dbaron@6470 403 <p>
dbaron@6470 404 In addition to any breaks specified elsewhere,
dbaron@6470 405 a break is forced before any line that would exceed
dbaron@6470 406 the given number of lines
dbaron@6470 407 being placed inside the element
dbaron@6470 408 (excluding lines that are in
dbaron@6470 409 a different block formatting context from
dbaron@6470 410 the block formatting context to which
dbaron@6470 411 an unstyled child of the element would belong).
dbaron@6470 412 </p>
dbaron@6470 413
dbaron@6470 414 <p class="issue">
dbaron@6470 415 If there are multiple boundaries between this line
dbaron@6470 416 and the previous, where exactly (in terms of element
dbaron@6470 417 boundaries) is the break forced?
dbaron@6470 418 </p>
dbaron@6470 419
dbaron@6470 420 <p>
dbaron@6470 421 Only positive integers are accepted.
dbaron@6470 422 Zero or negative integers are a parse error.
dbaron@6470 423 </p>
dbaron@6470 424 </dd>
dbaron@6470 425 </dl>
dbaron@6470 426
dbaron@6470 427 <p class="issue">Should this apply to regions overflow only, or also
dbaron@6470 428 to pagination?</p>
dbaron@6470 429
dbaron@6470 430 <h2 id="conformance">
dbaron@6470 431 Conformance</h2>
dbaron@6470 432
dbaron@6470 433 <h3 id="placement">
dbaron@6470 434 Module interactions</h3>
dbaron@6470 435
dbaron@6470 436 <p>This module extends the 'overflow'
dbaron@6470 437 feature defined in [[CSS21]] section 11.1.1. It defines additional
dbaron@6470 438 overflow handling mechanisms that implementations must implement as
dbaron@6470 439 described in this module in order to conform to this module.</p>
dbaron@6470 440
dbaron@6470 441 <p>No properties in this module apply to the <code>::first-line</code> or
dbaron@6470 442 <code>::first-letter</code> pseudo-elements.</p>
dbaron@6470 443
dbaron@6470 444 <h3 id="values">
dbaron@6470 445 Values</h3>
dbaron@6470 446
dbaron@6470 447 <p>This specification follows the
dbaron@6470 448 <a href="http://www.w3.org/TR/CSS21/about.html#property-defs">CSS property
dbaron@6470 449 definition conventions</a> from [[!CSS21]]. Value types not defined in
dbaron@6470 450 this specification are defined in CSS Level 2 Revision 1 [[!CSS21]].
dbaron@6470 451 Other CSS modules may expand the definitions of these value types: for
dbaron@6470 452 example [[CSS3COLOR]], when combined with this module, expands the
dbaron@6470 453 definition of the &lt;color&gt; value type as used in this specification.</p>
dbaron@6470 454
dbaron@6470 455 <p>In addition to the property-specific values listed in their definitions,
dbaron@6470 456 all properties defined in this specification also accept the
dbaron@6470 457 <a href="http://www.w3.org/TR/CSS21/cascade.html#value-def-inherit">inherit</a>
dbaron@6470 458 keyword as their property value. For readability it has not been repeated
dbaron@6470 459 explicitly.
dbaron@6470 460
dbaron@6470 461
dbaron@6470 462 <h3 id="conventions">
dbaron@6470 463 Document conventions</h3>
dbaron@6470 464
dbaron@6470 465 <p>Conformance requirements are expressed with a combination of
dbaron@6470 466 descriptive assertions and RFC 2119 terminology. The key words “MUST”,
dbaron@6470 467 “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”,
dbaron@6470 468 “RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this
dbaron@6470 469 document are to be interpreted as described in RFC 2119.
dbaron@6470 470 However, for readability, these words do not appear in all uppercase
dbaron@6470 471 letters in this specification.
dbaron@6470 472
dbaron@6470 473 <p>All of the text of this specification is normative except sections
dbaron@6470 474 explicitly marked as non-normative, examples, and notes. [[!RFC2119]]</p>
dbaron@6470 475
dbaron@6470 476 <p>Examples in this specification are introduced with the words “for example”
dbaron@6470 477 or are set apart from the normative text with <code>class="example"</code>,
dbaron@6470 478 like this:
dbaron@6470 479
dbaron@6470 480 <div class="example">
dbaron@6470 481 <p>This is an example of an informative example.</p>
dbaron@6470 482 </div>
dbaron@6470 483
dbaron@6470 484 <p>Informative notes begin with the word “Note” and are set apart from the
dbaron@6470 485 normative text with <code>class="note"</code>, like this:
dbaron@6470 486
dbaron@6470 487 <p class="note">Note, this is an informative note.</p>
dbaron@6470 488
dbaron@6470 489 <h3 id="conformance-classes">
dbaron@6470 490 Conformance classes</h3>
dbaron@6470 491
dbaron@6470 492 <p>Conformance to CSS Regions Module Level 3 (Option B)
dbaron@6470 493 is defined for three conformance classes:
dbaron@6470 494 <dl>
dbaron@6470 495 <dt><dfn title="style sheet!!as conformance class">style sheet</dfn>
dbaron@6470 496 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#style-sheet">CSS
dbaron@6470 497 style sheet</a>.
dbaron@6470 498 <dt><dfn>renderer</dfn></dt>
dbaron@6470 499 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
dbaron@6470 500 that interprets the semantics of a style sheet and renders
dbaron@6470 501 documents that use them.
dbaron@6470 502 <dt><dfn id="authoring-tool">authoring tool</dfn></dt>
dbaron@6470 503 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
dbaron@6470 504 that writes a style sheet.
dbaron@6470 505 </dl>
dbaron@6470 506
dbaron@6470 507 <p>A style sheet is conformant to CSS Regions Module Level 3 (Option B)
dbaron@6470 508 if all of its statements that use syntax defined in this module are valid
dbaron@6470 509 according to the generic CSS grammar and the individual grammars of each
dbaron@6470 510 feature defined in this module.
dbaron@6470 511
dbaron@6470 512 <p>A renderer is conformant to CSS Regions Module Level 3 (Option B)
dbaron@6470 513 if, in addition to interpreting the style sheet as defined by the
dbaron@6470 514 appropriate specifications, it supports all the features defined
dbaron@6470 515 by CSS Regions Module Level 3 (Option B) by parsing them correctly
dbaron@6470 516 and rendering the document accordingly. However, the inability of a
dbaron@6470 517 UA to correctly render a document due to limitations of the device
dbaron@6470 518 does not make the UA non-conformant. (For example, a UA is not
dbaron@6470 519 required to render color on a monochrome monitor.)
dbaron@6470 520
dbaron@6470 521 <p>An authoring tool is conformant to CSS Regions Module Level 3 (Option B)
dbaron@6470 522 if it writes style sheets that are syntactically correct according to the
dbaron@6470 523 generic CSS grammar and the individual grammars of each feature in
dbaron@6470 524 this module, and meet all other conformance requirements of style sheets
dbaron@6470 525 as described in this module.
dbaron@6470 526
dbaron@6470 527 <h3 id="partial">
dbaron@6470 528 Partial implementations</h3>
dbaron@6470 529
dbaron@6470 530 <p>So that authors can exploit the forward-compatible parsing rules to
dbaron@6470 531 assign fallback values, CSS renderers <strong>must</strong>
dbaron@6470 532 treat as invalid (and <a href="http://www.w3.org/TR/CSS21/conform.html#ignore">ignore
dbaron@6470 533 as appropriate</a>) any at-rules, properties, property values, keywords,
dbaron@6470 534 and other syntactic constructs for which they have no usable level of
dbaron@6470 535 support. In particular, user agents <strong>must not</strong> selectively
dbaron@6470 536 ignore unsupported component values and honor supported values in a single
dbaron@6470 537 multi-value property declaration: if any value is considered invalid
dbaron@6470 538 (as unsupported values must be), CSS requires that the entire declaration
dbaron@6470 539 be ignored.</p>
dbaron@6470 540
dbaron@6470 541 <h3 id="experimental">
dbaron@6470 542 Experimental implementations</h3>
dbaron@6470 543
dbaron@6470 544 <p>To avoid clashes with future CSS features, the CSS2.1 specification
dbaron@6470 545 reserves a <a href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords">prefixed
dbaron@6470 546 syntax</a> for proprietary and experimental extensions to CSS.
dbaron@6470 547
dbaron@6470 548 <p>Prior to a specification reaching the Candidate Recommendation stage
dbaron@6470 549 in the W3C process, all implementations of a CSS feature are considered
dbaron@6470 550 experimental. The CSS Working Group recommends that implementations
dbaron@6470 551 use a vendor-prefixed syntax for such features, including those in
dbaron@6470 552 W3C Working Drafts. This avoids incompatibilities with future changes
dbaron@6470 553 in the draft.
dbaron@6470 554 </p>
dbaron@6470 555
dbaron@6470 556 <h3 id="testing">
dbaron@6470 557 Non-experimental implementations</h3>
dbaron@6470 558
dbaron@6470 559 <p>Once a specification reaches the Candidate Recommendation stage,
dbaron@6470 560 non-experimental implementations are possible, and implementors should
dbaron@6470 561 release an unprefixed implementation of any CR-level feature they
dbaron@6470 562 can demonstrate to be correctly implemented according to spec.
dbaron@6470 563
dbaron@6470 564 <p>To establish and maintain the interoperability of CSS across
dbaron@6470 565 implementations, the CSS Working Group requests that non-experimental
dbaron@6470 566 CSS renderers submit an implementation report (and, if necessary, the
dbaron@6470 567 testcases used for that implementation report) to the W3C before
dbaron@6470 568 releasing an unprefixed implementation of any CSS features. Testcases
dbaron@6470 569 submitted to W3C are subject to review and correction by the CSS
dbaron@6470 570 Working Group.
dbaron@6470 571
dbaron@6470 572 <p>Further information on submitting testcases and implementation reports
dbaron@6470 573 can be found from on the CSS Working Group's website at
dbaron@6470 574 <a href="http://www.w3.org/Style/CSS/Test/">http://www.w3.org/Style/CSS/Test/</a>.
dbaron@6470 575 Questions should be directed to the
dbaron@6470 576 <a href="http://lists.w3.org/Archives/Public/public-css-testsuite">public-css-testsuite@w3.org</a>
dbaron@6470 577 mailing list.
dbaron@6470 578
dbaron@6470 579 <h3 id="cr-exit-criteria">
dbaron@6470 580 CR exit criteria</h3>
dbaron@6470 581
dbaron@6470 582 <p class=issue>[Change or remove the following CR exit criteria if
dbaron@6470 583 the spec is not a module, but, e.g., a Note or a profile. This text was <a
dbaron@6470 584 href="http://www.w3.org/Style/CSS/Tracker/actions/44"> decided on 2008-06-04.</a>]</p>
dbaron@6470 585
dbaron@6470 586 <p>
dbaron@6470 587 For this specification to be advanced to Proposed Recommendation,
dbaron@6470 588 there must be at least two independent, interoperable implementations
dbaron@6470 589 of each feature. Each feature may be implemented by a different set of
dbaron@6470 590 products, there is no requirement that all features be implemented by
dbaron@6470 591 a single product. For the purposes of this criterion, we define the
dbaron@6470 592 following terms:
dbaron@6470 593
dbaron@6470 594 <dl>
dbaron@6470 595 <dt>independent <dd>each implementation must be developed by a
dbaron@6470 596 different party and cannot share, reuse, or derive from code
dbaron@6470 597 used by another qualifying implementation. Sections of code that
dbaron@6470 598 have no bearing on the implementation of this specification are
dbaron@6470 599 exempt from this requirement.
dbaron@6470 600
dbaron@6470 601 <dt>interoperable <dd>passing the respective test case(s) in the
dbaron@6470 602 official CSS test suite, or, if the implementation is not a Web
dbaron@6470 603 browser, an equivalent test. Every relevant test in the test
dbaron@6470 604 suite should have an equivalent test created if such a user
dbaron@6470 605 agent (UA) is to be used to claim interoperability. In addition
dbaron@6470 606 if such a UA is to be used to claim interoperability, then there
dbaron@6470 607 must one or more additional UAs which can also pass those
dbaron@6470 608 equivalent tests in the same way for the purpose of
dbaron@6470 609 interoperability. The equivalent tests must be made publicly
dbaron@6470 610 available for the purposes of peer review.
dbaron@6470 611
dbaron@6470 612 <dt>implementation <dd>a user agent which:
dbaron@6470 613
dbaron@6470 614 <ol class=inline>
dbaron@6470 615 <li>implements the specification.
dbaron@6470 616
dbaron@6470 617 <li>is available to the general public. The implementation may
dbaron@6470 618 be a shipping product or other publicly available version
dbaron@6470 619 (i.e., beta version, preview release, or “nightly build”).
dbaron@6470 620 Non-shipping product releases must have implemented the
dbaron@6470 621 feature(s) for a period of at least one month in order to
dbaron@6470 622 demonstrate stability.
dbaron@6470 623
dbaron@6470 624 <li>is not experimental (i.e., a version specifically designed
dbaron@6470 625 to pass the test suite and is not intended for normal usage
dbaron@6470 626 going forward).
dbaron@6470 627 </ol>
dbaron@6470 628 </dl>
dbaron@6470 629
dbaron@6470 630 <p>The specification will remain Candidate Recommendation for at least
dbaron@6470 631 six months.
dbaron@6470 632
dbaron@6470 633 <h2 class=no-num id="acknowledgments">
dbaron@6470 634 Acknowledgments</h2>
dbaron@6470 635
dbaron@6470 636 <p>
dbaron@6470 637 Thanks especially to the feedback from
dbaron@6470 638 H&aring;kon Wium Lie,
dbaron@6470 639 Florian Rivoal,
dbaron@6470 640 and all the rest of the
dbaron@6470 641 <a href="http://lists.w3.org/Archives/Public/www-style/">www-style</a> community.
dbaron@6470 642 </p>
dbaron@6470 643
dbaron@6470 644 <h2 class=no-num id="references">
dbaron@6470 645 References</h2>
dbaron@6470 646
dbaron@6470 647 <h3 class="no-num" id="normative-references">
dbaron@6470 648 Normative references</h3>
dbaron@6470 649 <!--normative-->
dbaron@6470 650
dbaron@6470 651 <h3 class="no-num" id="other-references">
dbaron@6470 652 Other references</h3>
dbaron@6470 653 <!--informative-->
dbaron@6470 654
dbaron@6470 655 <h2 class="no-num" id="index">
dbaron@6470 656 Index</h2>
dbaron@6470 657 <!--index-->
dbaron@6470 658
dbaron@6470 659 <h2 class="no-num" id="property-index">
dbaron@6470 660 Property index</h2>
dbaron@6470 661 <!-- properties -->
dbaron@6470 662
dbaron@6470 663 </body>
dbaron@6470 664 </html>
dbaron@6470 665 <!-- Keep this comment at the end of the file
dbaron@6470 666 Local variables:
dbaron@6470 667 mode: sgml
dbaron@6470 668 sgml-declaration:"~/SGML/HTML4.decl"
dbaron@6470 669 sgml-default-doctype-name:"html"
dbaron@6470 670 sgml-minimize-attributes:t
dbaron@6470 671 sgml-nofill-elements:("pre" "style" "br")
dbaron@6470 672 sgml-live-element-indicator:t
dbaron@6470 673 sgml-omittag:nil
dbaron@6470 674 sgml-shorttag:nil
dbaron@6470 675 sgml-namecase-general:t
dbaron@6470 676 sgml-general-insert-case:lower
dbaron@6470 677 sgml-always-quote-attributes:t
dbaron@6470 678 sgml-indent-step:nil
dbaron@6470 679 sgml-indent-data:t
dbaron@6470 680 sgml-parent-document:nil
dbaron@6470 681 sgml-exposed-tags:nil
dbaron@6470 682 sgml-local-catalogs:nil
dbaron@6470 683 sgml-local-ecat-files:nil
dbaron@6470 684 End:
dbaron@6470 685 -->
dbaron@6470 686

mercurial