css3-overflow/Overview.src.html

Thu, 16 Aug 2012 15:05:23 -0700

author
L. David Baron <dbaron@dbaron.org>
date
Thu, 16 Aug 2012 15:05:23 -0700
changeset 6491
64dd301ea467
parent 6490
a6008f514bee
child 6492
dcb554a16adc
permissions
-rw-r--r--

Define fragment indices so that fragments can be split across columns or pages, which means that paginating content is much less likely to cause unexpected breakage in the styling, as discussed at face-to-face meeting afternoon of 2012-08-13.

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@6483 5 <title>CSS Overflow Module Level 3</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@6475 11 <style>
dbaron@6477 12 table.source-demo-pair {
dbaron@6477 13 width: 100%;
dbaron@6477 14 }
dbaron@6481 15
dbaron@6475 16 .in-cards-demo {
dbaron@6475 17 width: 13em;
dbaron@6475 18 height: 8em;
dbaron@6475 19
dbaron@6475 20 padding: 4px;
dbaron@6475 21 border: medium solid blue;
dbaron@6475 22 margin: 6px;
dbaron@6475 23
dbaron@6475 24 font: medium/1.3 Times New Roman, Times, serif;
dbaron@6475 25 white-space: nowrap;
dbaron@6475 26 }
dbaron@6481 27
dbaron@6477 28 .bouncy-columns-demo {
dbaron@6477 29 width: 6em;
dbaron@6477 30 height: 10em;
dbaron@6477 31 float: left;
dbaron@6477 32 margin: 1em;
dbaron@6477 33 font: medium/1.25 Times New Roman, Times, serif;
dbaron@6477 34 white-space: nowrap;
dbaron@6477 35 }
dbaron@6477 36 .bouncy-columns-demo.one {
dbaron@6477 37 background: aqua; color: black;
dbaron@6477 38 transform: rotate(-3deg);
dbaron@6477 39 }
dbaron@6477 40 .bouncy-columns-demo.two {
dbaron@6477 41 background: yellow; color: black;
dbaron@6477 42 transform: rotate(3deg);
dbaron@6477 43 }
dbaron@6479 44
dbaron@6480 45 .article-font-inherit-demo {
dbaron@6480 46 font: 1em/1.25 Times New Roman, Times, serif;
dbaron@6480 47 white-space: nowrap;
dbaron@6480 48 }
dbaron@6480 49 .article-font-inherit-demo.one {
dbaron@6480 50 width: 12em;
dbaron@6480 51 font-size: 1.5em;
dbaron@6480 52 margin-bottom: 1em;
dbaron@6480 53 height: 4em;
dbaron@6480 54 }
dbaron@6480 55 .article-font-inherit-demo.two {
dbaron@6480 56 width: 11em;
dbaron@6480 57 margin-left: 5em;
dbaron@6480 58 margin-right: 2em;
dbaron@6480 59 }
dbaron@6480 60
dbaron@6481 61 .dark-columns-demo {
dbaron@6481 62 width: 6em;
dbaron@6481 63 height: 10em;
dbaron@6481 64 float: left;
dbaron@6481 65 margin-right: 1em;
dbaron@6481 66 font: medium/1.25 Times New Roman, Times, serif;
dbaron@6481 67 white-space: nowrap;
dbaron@6481 68 }
dbaron@6481 69 .dark-columns-demo.one {
dbaron@6481 70 background: aqua; color: black;
dbaron@6481 71 }
dbaron@6481 72 .dark-columns-demo.one :link {
dbaron@6481 73 color: blue;
dbaron@6481 74 }
dbaron@6481 75 .dark-columns-demo.one :visited {
dbaron@6481 76 color: purple;
dbaron@6481 77 }
dbaron@6481 78 .dark-columns-demo.two {
dbaron@6481 79 background: navy; color: white;
dbaron@6481 80 }
dbaron@6481 81 .dark-columns-demo.two :link {
dbaron@6481 82 color: aqua;
dbaron@6481 83 }
dbaron@6481 84 .dark-columns-demo.two :visited {
dbaron@6481 85 color: fuchsia;
dbaron@6481 86 }
dbaron@6481 87
dbaron@6479 88 .article-max-lines-demo {
dbaron@6479 89 font: 1em/1.25 Times New Roman, Times, serif;
dbaron@6479 90 white-space: nowrap;
dbaron@6479 91 }
dbaron@6479 92 .article-max-lines-demo.one::first-letter {
dbaron@6479 93 font-size: 2em;
dbaron@6479 94 line-height: 0.9;
dbaron@6479 95 }
dbaron@6479 96 .article-max-lines-demo.one {
dbaron@6479 97 font-size: 1.5em;
dbaron@6479 98 width: 16em;
dbaron@6479 99 }
dbaron@6479 100 .article-max-lines-demo.two {
dbaron@6479 101 width: 11.5em;
dbaron@6479 102 float: left; margin-right: 1em;
dbaron@6479 103 }
dbaron@6479 104 .article-max-lines-demo.three {
dbaron@6479 105 width: 11.5em;
dbaron@6479 106 float: left;
dbaron@6479 107 }
dbaron@6475 108 </style>
dbaron@6470 109 </head>
dbaron@6470 110
dbaron@6470 111 <div class="head">
dbaron@6470 112 <!--logo-->
dbaron@6470 113
dbaron@6483 114 <h1>CSS Overflow Module Level 3</h1>
dbaron@6470 115
dbaron@6470 116 <h2 class="no-num no-toc">[LONGSTATUS] [DATE]</h2>
dbaron@6470 117 <dl>
dbaron@6470 118 <dt>This version:
dbaron@6483 119 <dd><a href="[VERSION]">http://www.w3.org/TR/[YEAR]/ED-css3-overflow-[CDATE]/</a>
dbaron@6470 120
dbaron@6470 121 <dt>Latest version:
dbaron@6470 122 <dd><a href="http://www.w3.org/TR/[SHORTNAME]/">http://www.w3.org/TR/[SHORTNAME]/</a>
dbaron@6470 123
dbaron@6470 124 <dt>Editor's draft:
dbaron@6470 125 <dd><a href="http://dev.w3.org/csswg/[SHORTNAME]/">http://dev.w3.org/csswg/[SHORTNAME]/</a>
dbaron@6470 126
dbaron@6470 127 <!--
dbaron@6470 128 <dt>Previous version:
dbaron@6470 129 <dd><a href="http://www.w3.org/PreviousVersionURI">
dbaron@6470 130 http://www.w3.org/PreviousVersionURI</a>
dbaron@6470 131 -->
dbaron@6470 132
dbaron@6470 133 <dt>Issue Tracking:</dt>
dbaron@6470 134 <dd>Maintained in document (only editor's draft is current)
dbaron@6470 135
dbaron@6470 136 <dt>Feedback:</dt>
dbaron@6470 137 <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 138
dbaron@6470 139 <dt>Editors:
dbaron@6470 140 <dd class="h-card vcard">
dbaron@6470 141 <a class="p-name fn u-url url" rel="author"
dbaron@6470 142 href="http://dbaron.org/">L. David Baron</a>,
dbaron@6470 143 <a class="p-org org" href="http://www.mozilla.org/">Mozilla</a>
dbaron@6470 144 </dl>
dbaron@6470 145
dbaron@6470 146 <!--copyright-->
dbaron@6470 147
dbaron@6470 148 <hr title="Separator for header">
dbaron@6470 149 </div>
dbaron@6470 150
dbaron@6470 151 <h2 class="no-num no-toc" id="abstract">Abstract</h2>
dbaron@6470 152
dbaron@6470 153 <p>
dbaron@6470 154 <a href="http://www.w3.org/TR/CSS/">CSS</a> is
dbaron@6470 155 a language for describing
dbaron@6470 156 the rendering of structured documents (such as HTML and XML)
dbaron@6470 157 on screen, on paper, in speech, etc.
dbaron@6470 158 This module contains the features of CSS
dbaron@6470 159 relating to new mechanisms of overflow handling in visual media (e.g., screen or paper).
dbaron@6470 160 In interactive media,
dbaron@6470 161 it describes features that allow the overflow
dbaron@6470 162 from a fixed size container
dbaron@6470 163 to be handled by pagination (displaying one page at a time).
dbaron@6470 164 It also describes features, applying to all visual media,
dbaron@6470 165 that allow the contents of an element
dbaron@6484 166 to be spread across multiple fragments,
dbaron@6484 167 allowing the contents to flow across multiple regions
dbaron@6484 168 or to have different styles for different fragments.
dbaron@6470 169 </p>
dbaron@6470 170
dbaron@6470 171 <h2 class="no-num no-toc" id="status">Status of this document</h2>
dbaron@6470 172
dbaron@6470 173 <!--status-->
dbaron@6470 174
dbaron@6470 175 <p>The following features are at risk: &hellip;
dbaron@6470 176
dbaron@6470 177 <h2 class="no-num no-toc" id="contents">
dbaron@6470 178 Table of contents</h2>
dbaron@6470 179
dbaron@6470 180 <!--toc-->
dbaron@6470 181
dbaron@6470 182 <h2 id="intro">
dbaron@6470 183 Introduction</h2>
dbaron@6470 184
dbaron@6470 185 <p>
dbaron@6470 186 In CSS Level 1 [[CSS1]], placing more content than would fit
dbaron@6470 187 inside an element with a specified size
dbaron@6470 188 was generally an authoring error.
dbaron@6470 189 Doing so caused the content to extend
dbaron@6470 190 outside the bounds of the element,
dbaron@6470 191 which would likely cause
dbaron@6470 192 that content to overlap with other elements.
dbaron@6470 193 </p>
dbaron@6470 194
dbaron@6470 195 <p>
dbaron@6470 196 CSS Level 2 [[CSS21]] introduced the 'overflow' property,
dbaron@6470 197 which allows authors to have overflow be handled by scrolling,
dbaron@6470 198 which means it is no longer an authoring error.
dbaron@6470 199 It also allows authors to specify
dbaron@6470 200 that overflow is handled by clipping,
dbaron@6470 201 which makes sense when the author's intent
dbaron@6470 202 is that the content not be shown.
dbaron@6470 203 </p>
dbaron@6470 204
dbaron@6470 205 <p>
dbaron@6470 206 However, scrolling is not the only way
dbaron@6470 207 to present large amounts of content,
dbaron@6470 208 and may even not be the optimal way.
dbaron@6470 209 After all, the codex replaced the scroll
dbaron@6470 210 as the common format for large written works
dbaron@6470 211 because of its advantages.
dbaron@6470 212 </p>
dbaron@6470 213
dbaron@6470 214 <p>
dbaron@6470 215 This specification introduces
dbaron@6470 216 a mechanism for Web pages to specify
dbaron@6484 217 that an element of a page should handle overflow
dbaron@6470 218 through pagination rather than through scrolling.
dbaron@6470 219 </p>
dbaron@6470 220
dbaron@6470 221 <p>
dbaron@6470 222 This specification also extends the concept of overflow
dbaron@6470 223 in another direction.
dbaron@6484 224 Instead of requiring that authors specify a single area
dbaron@6470 225 into which the content of an element must flow,
dbaron@6484 226 this specification allows authors to specify multiple fragments,
dbaron@6470 227 each with their own dimensions and styles,
dbaron@6470 228 so that the content of the element can flow from one to the next,
dbaron@6470 229 using as many as needed to place the content without overflowing.
dbaron@6470 230 </p>
dbaron@6470 231
dbaron@6470 232 <p>
dbaron@6470 233 In both of these cases, implementations must
dbaron@6470 234 break the content in the block-progression dimension.
dbaron@6470 235 Implementations must do this is described
dbaron@6470 236 in the CSS Fragmentation Module [[!CSS3-BREAK]].
dbaron@6470 237 </p>
dbaron@6470 238
dbaron@6483 239 <h2 id="scrolling-overflow">Scrolling and hidden overflow</h2>
dbaron@6483 240
dbaron@6483 241 <p class="issue">
dbaron@6483 242 Move material from [[CSS21]] and [[CSS3BOX]] here.
dbaron@6483 243 </p>
dbaron@6470 244
dbaron@6470 245 <h2 id="paginated-overflow">Paginated overflow</h2>
dbaron@6470 246
dbaron@6470 247 <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 248
dbaron@6470 249 <p class="issue">Ability to display N pages at once
dbaron@6470 250 rather than just one page at once?</p>
dbaron@6470 251
dbaron@6484 252 <h2 id="fragment-overflow">Fragment overflow</h2>
dbaron@6470 253
dbaron@6470 254 <p>
dbaron@6470 255 This section introduces and defines the meaning of
dbaron@6484 256 the new ''fragments'' value of the 'overflow' property.
dbaron@6470 257 </p>
dbaron@6470 258
dbaron@6470 259 <p>
dbaron@6484 260 When the computed value of 'overflow' for an element is ''fragments'',
dbaron@6470 261 and implementations would otherwise have created a box for the element,
dbaron@6491 262 then implementations must create a sequence of <dfn>fragment box</dfn>es
dbaron@6470 263 for that element.
dbaron@6491 264 (It is possible for an element with ''overflow: fragments''
dbaron@6491 265 to generate only one <i>fragment box</i>.
dbaron@6484 266 However, if an element's computed 'overflow' is not ''fragments'',
dbaron@6484 267 then its box is not a <i>fragment box</i>.)
dbaron@6484 268 Every <i>fragment box</i> is a fragmentation container,
dbaron@6491 269 and any overflow
dbaron@6491 270 that would cause that fragmentation container to fragment
dbaron@6491 271 causes another <i>fragment box</i> created as a next sibling
dbaron@6470 272 of the previous one.
dbaron@6470 273 <span class="issue">Or is it as though it's a next sibling of
dbaron@6470 274 the element? Need to figure out exactly how this interacts with
dbaron@6470 275 other box-level fixup.</span>
dbaron@6491 276 However, fragment boxes may themselves be broken
dbaron@6491 277 (due to fragmentation in a fragmentation context outside of them,
dbaron@6491 278 such as pages, columns, or other fragment boxes);
dbaron@6491 279 such breaking leads to fragments of the same fragment box
dbaron@6491 280 rather than multiple fragment boxes.
dbaron@6491 281 (This matters because fragment boxes may be styled by their index;
dbaron@6491 282 such breaking leads to multiple fragments of a fragment box
dbaron@6491 283 with a single index.
dbaron@6491 284 This design choice is so that
dbaron@6491 285 breaking a fragment box across pages does not break
dbaron@6491 286 the association of indices to particular pieces of content.)
dbaron@6491 287 <span class="issue">Should a forced break that breaks to
dbaron@6491 288 an outer fragmentation context cause a new fragment of a single
dbaron@6491 289 fragment box or a new fragment box?</span>
dbaron@6491 290 <span class="issue">Should we find a term other than
dbaron@6491 291 <i>fragment box</i> here to make this a little less confusing?</span>
dbaron@6470 292 </p>
dbaron@6470 293
dbaron@6470 294 <p class="issue">
dbaron@6491 295 What if we want to be able to style the pieces of an element
dbaron@6491 296 split within another type of fragmentation context?
dbaron@6491 297 These rules prevent ever using ''::nth-fragment()'' for that,
dbaron@6491 298 despite that the name seems the most logical name for such a feature.
dbaron@6470 299 </p>
dbaron@6470 300
dbaron@6475 301 <div class="example">
dbaron@6477 302 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6475 303 &lt;title&gt;Breaking content into
dbaron@6475 304 equal-sized cards&lt;/title&gt;
dbaron@6475 305 &lt;style&gt;
dbaron@6475 306 .in-cards {
dbaron@6484 307 overflow: fragments;
dbaron@6475 308
dbaron@6475 309 width: 13em;
dbaron@6475 310 height: 8em;
dbaron@6475 311
dbaron@6475 312 padding: 4px;
dbaron@6475 313 border: medium solid blue;
dbaron@6475 314 margin: 6px;
dbaron@6475 315
dbaron@6475 316 font: medium/1.3 Times New
dbaron@6475 317 Roman, Times, serif;
dbaron@6475 318 }
dbaron@6475 319 &lt;/style&gt;
dbaron@6475 320 &lt;div class="in-cards"&gt;
dbaron@6475 321 In this example, the text in the div
dbaron@6475 322 is broken into a series of cards.
dbaron@6475 323 These cards all have the same style.
dbaron@6475 324 The presence of enough content to
dbaron@6475 325 overflow one of the cards causes
dbaron@6475 326 another one to be created. The second
dbaron@6475 327 card is created just like it's the
dbaron@6475 328 next sibling of the first.
dbaron@6477 329 &lt;/div&gt;</pre></td><td>
dbaron@6475 330 <div class="in-cards-demo">In this example, the text in the<br>div is broken into a series of<br>cards. These cards all have the<br>same style. The presence of<br>enough content to overflow<br>one of the cards causes another</div>
dbaron@6475 331 <div class="in-cards-demo">one to be created. The second<br>card is created just like it's the<br>next sibling of the first.</div>
dbaron@6475 332 </td></tr></table>
dbaron@6475 333 </div>
dbaron@6475 334
dbaron@6487 335 <p class="issue">
dbaron@6487 336 We should specify that ''overflow: fragments'' does not apply
dbaron@6487 337 to at least some table parts,
dbaron@6487 338 and perhaps other elements as well.
dbaron@6487 339 We need to determine exactly which ones.
dbaron@6487 340 </p>
dbaron@6487 341
dbaron@6488 342 <p class="issue">
dbaron@6488 343 This specification needs to say which type of
dbaron@6488 344 fragmentation context is created
dbaron@6488 345 so that it's clear which values of the 'break' property
dbaron@6488 346 cause breaks within this context.
dbaron@6488 347 We probably want ''break: regions'' to apply.
dbaron@6488 348 </p>
dbaron@6488 349
dbaron@6484 350 <h3 id="fragment-styling">Fragment styling</h3>
dbaron@6470 351
dbaron@6484 352 <h4 id="fragment-pseudo-element">The ::nth-fragment() pseudo-element</h4>
dbaron@6470 353
dbaron@6470 354 <p>
dbaron@6484 355 The ::nth-fragment() pseudo-element is a pseudo-element
dbaron@6484 356 that describes some of the <i>fragment box</i>es generated by an element.
dbaron@6470 357 The argument to the pseudo-element takes the same syntax
dbaron@6470 358 as the argument to the :nth-child() pseudo-class
dbaron@6470 359 defined in [[!SELECT]], and has the same meaning
dbaron@6470 360 except that the number is relative to
dbaron@6484 361 <i>fragment box</i>es generated by the element
dbaron@6470 362 instead of siblings of the element.
dbaron@6470 363 </p>
dbaron@6470 364
dbaron@6470 365 <p class="note">
dbaron@6484 366 Selectors that allow addressing fragments
dbaron@6470 367 by counting from the end rather than the start
dbaron@6470 368 are intentionally not provided.
dbaron@6470 369 Such selectors would interfere with determining
dbaron@6484 370 the number of fragments.
dbaron@6470 371 </p>
dbaron@6470 372
dbaron@6489 373 <p class="issue">
dbaron@6489 374 Depending on future discussions,
dbaron@6489 375 this ''::nth-fragment(<var>an+b</var>)'' syntax
dbaron@6489 376 may be replaced with
dbaron@6489 377 the new ''::fragment:nth(<var>an+b</var>)'' syntax.
dbaron@6489 378 </p>
dbaron@6489 379
dbaron@6484 380 <h4 id="style-of-fragments">Styling of fragments</h4>
dbaron@6470 381
dbaron@6470 382 <p class="issue">
dbaron@6484 383 Should this apply to fragment overflow only,
dbaron@6470 384 or also to paginated overflow?
dbaron@6470 385 (If it applies,
dbaron@6470 386 then stricter property restrictions would be needed
dbaron@6470 387 for paginated overflow.)
dbaron@6470 388 </p>
dbaron@6470 389
dbaron@6470 390 <p>
dbaron@6484 391 In the absence of rules with ''::nth-fragment()'' pseudo-elements,
dbaron@6484 392 the computed style for each <i>fragment box</i>
dbaron@6470 393 is the computed style for the element
dbaron@6484 394 for which the <i>fragment box</i> was created.
dbaron@6484 395 However, the style for a <i>fragment box</i> is also influenced
dbaron@6470 396 by rules whose selector's <i>subject</i> [[!SELECT]]
dbaron@6484 397 has an ''::nth-fragment()'' pseudo-element,
dbaron@6484 398 if the 1-based number of the <i>fragment box</i> matches
dbaron@6484 399 that ''::nth-fragment()'' pseudo-element
dbaron@6484 400 and the selector (excluding the ''::nth-fragment()'' pseudo-element)
dbaron@6484 401 matches the element generating the fragments.
dbaron@6470 402 </p>
dbaron@6470 403
dbaron@6486 404 <p>
dbaron@6486 405 When determining the style of the <i>fragment box</i>,
dbaron@6486 406 these rules that match the fragment pseudo-element
dbaron@6486 407 cascade together with the rules that match the element,
dbaron@6486 408 with the fragment pseudo-element adding the specificity
dbaron@6486 409 of a pseudo-class to the specificity calculation.
dbaron@6486 410 <span class="issue">Does this need to be specified in
dbaron@6486 411 the cascading module as well?</span>
dbaron@6486 412 </p>
dbaron@6486 413
dbaron@6477 414 <div class="example">
dbaron@6477 415 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6477 416 &lt;style&gt;
dbaron@6477 417 .bouncy-columns {
dbaron@6484 418 overflow: fragments;
dbaron@6477 419 width: 6em;
dbaron@6477 420 height: 10em;
dbaron@6477 421 float: left;
dbaron@6477 422 margin: 1em;
dbaron@6477 423 font: medium/1.25 Times New
dbaron@6477 424 Roman, Times, serif;
dbaron@6477 425 }
dbaron@6484 426 .bouncy-columns::nth-fragment(1) {
dbaron@6477 427 background: aqua; color: black;
dbaron@6477 428 transform: rotate(-3deg);
dbaron@6477 429 }
dbaron@6484 430 .bouncy-columns::nth-fragment(2) {
dbaron@6477 431 background: yellow; color: black;
dbaron@6477 432 transform: rotate(3deg);
dbaron@6477 433 }
dbaron@6477 434 &lt;/style&gt;
dbaron@6477 435 &lt;div class="bouncy-columns"&gt;
dbaron@6477 436 <i>...</i>
dbaron@6477 437 &lt;/div&gt;</pre></td><td>
dbaron@6477 438 <div class="bouncy-columns-demo one">In this<br>example, the<br>text in the div<br>is broken into<br>a series of<br>columns. The<br>author<br>probably</div>
dbaron@6477 439 <div class="bouncy-columns-demo two">intended the<br>text to fill two<br>columns. But<br>if it happens to<br>fill three<br>columns, the<br>third column is<br>still created. It</div>
dbaron@6484 440 <div class="bouncy-columns-demo">just doesn't<br>have any<br>fragment-specific<br>styling because<br>the author<br>didn't give it<br>any.</div>
dbaron@6477 441 </td></tr></table>
dbaron@6477 442 </div>
dbaron@6477 443
dbaron@6470 444 <p>
dbaron@6484 445 Styling an ''::nth-fragment()'' pseudo-element with the 'overflow'
dbaron@6490 446 property does take effect;
dbaron@6490 447 if a <i>fragment box</i> has a
dbaron@6490 448 computed value of 'overflow' other than ''fragments''
dbaron@6490 449 then that fragment box is the last fragment.
dbaron@6490 450 However, overriding ''overflow'' on the first fragment
dbaron@6490 451 does not cause the <i>fragment box</i> not to exist;
dbaron@6490 452 whether there are fragment boxes at all is determined by
dbaron@6490 453 the computed value of overflow for the element.
dbaron@6470 454 </p>
dbaron@6470 455
dbaron@6470 456 <p>
dbaron@6485 457 Styling an ''::nth-fragment()'' pseudo-element with the 'content'
dbaron@6485 458 property has no effect;
dbaron@6485 459 the computed value of 'content' for the fragment box
dbaron@6485 460 remains the same as the computed value of content for the element.
dbaron@6485 461 </p>
dbaron@6485 462
dbaron@6485 463 <p>
dbaron@6484 464 Specifying ''display: none'' for a <i>fragment box</i> causes
dbaron@6484 465 the fragment box with that index not to be generated.
dbaron@6470 466 However, in terms of the indices
dbaron@6484 467 used for matching ''::nth-fragment()'' pseudo-elements
dbaron@6484 468 of later fragment boxes,
dbaron@6470 469 it still counts as though it was generated.
dbaron@6470 470 However, since it is not generated, it does not contain any content.
dbaron@6470 471 </p>
dbaron@6470 472
dbaron@6470 473 <p class="issue">
dbaron@6470 474 Would it make more sense to forbid ''display:none''?
dbaron@6470 475 Or perhaps to forbid 'display', 'position', 'float',
dbaron@6470 476 and similar (in addition to 'overflow')?
dbaron@6470 477 </p>
dbaron@6470 478
dbaron@6470 479 <p>
dbaron@6470 480 To match the model for other pseudo-elements
dbaron@6470 481 where the pseudo-elements live inside their corresponding element,
dbaron@6484 482 declarations in ''::nth-fragment()'' pseudo-elements override
dbaron@6470 483 declarations in rules without the pseudo-element.
dbaron@6470 484 The relative priority within such declarations is determined
dbaron@6470 485 by normal cascading order (see [[!CSS21]]).
dbaron@6470 486 </p>
dbaron@6470 487
dbaron@6470 488 <p>
dbaron@6484 489 Styles specified on ''::nth-fragment()'' pseudo-elements
dbaron@6484 490 do affect inheritance to content within the <i>fragment box</i>.
dbaron@6484 491 In other words, the content within the <i>fragment box</i> must
dbaron@6484 492 inherit from the fragment box's style (i.e., the pseudo-element style)
dbaron@6470 493 rather than directly from the element.
dbaron@6484 494 This means that elements split between fragment boxes may
dbaron@6470 495 have different styles for different parts of the element.
dbaron@6470 496 </p>
dbaron@6470 497
dbaron@6472 498 <p class="issue">
dbaron@6472 499 This inheritance rule allows specifying styles indirectly
dbaron@6472 500 (by using explicit ''inherit'' or using default inheritance
dbaron@6472 501 on properties that don't apply to '':first-letter'')
dbaron@6472 502 that can't be specified directly
dbaron@6472 503 (based on the rules in the next section).
dbaron@6472 504 This is a problem.
dbaron@6484 505 The restrictions that apply to styling inside fragments
dbaron@6484 506 should also apply to inheritance from fragments.
dbaron@6472 507 </p>
dbaron@6472 508
dbaron@6480 509 <div class="example">
dbaron@6480 510 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6480 511 &lt;style&gt;
dbaron@6480 512 .article {
dbaron@6484 513 overflow: fragments;
dbaron@6480 514 }
dbaron@6484 515 .article::nth-fragment(1) {
dbaron@6480 516 font-size: 1.5em;
dbaron@6480 517 margin-bottom: 1em;
dbaron@6480 518 height: 4em;
dbaron@6480 519 }
dbaron@6491 520 .article::nth-fragment(2) {
dbaron@6480 521 margin-left: 5em;
dbaron@6480 522 margin-right: 2em;
dbaron@6480 523 }
dbaron@6480 524 &lt;/style&gt;
dbaron@6480 525 &lt;div class="article"&gt;
dbaron@6480 526 The &lt;code&gt;font-size&lt;/code&gt; property<i>...</i>
dbaron@6480 527 &lt;/div&gt;</pre></td><td>
dbaron@6484 528 <div class="article-font-inherit-demo one">The <code>font-size</code> property<br>specified on the fragment<br>is inherited into the</div>
dbaron@6484 529 <div class="article-font-inherit-demo two">descendants of the fragment.<br>This means that inherited<br>properties can be used<br>reliably on a fragment, as in<br>this example.</div>
dbaron@6480 530 </td></tr></table>
dbaron@6480 531 </div>
dbaron@6478 532
dbaron@6484 533 <h4 id="style-in-fragments">Styling inside fragments</h4>
dbaron@6470 534
dbaron@6470 535 <p class="issue">
dbaron@6484 536 Should this apply to fragment overflow only,
dbaron@6470 537 or also to paginated overflow,
dbaron@6470 538 or even to pagination across pages?
dbaron@6470 539 </p>
dbaron@6470 540
dbaron@6470 541 <p>
dbaron@6484 542 The ''::nth-fragment()'' pseudo-element
dbaron@6470 543 can also be used to style
dbaron@6484 544 content inside of a <i>fragment box</i>.
dbaron@6470 545 Unlike the ''::first-line'' and ''::first-letter'' pseudo-elements,
dbaron@6484 546 the ''::nth-fragment()'' pseudo-element can be applied
dbaron@6470 547 to parts of the selector other than the subject:
dbaron@6470 548 in particular, it can match ancestors of the subject.
dbaron@6470 549 However, the only CSS properties applied
dbaron@6470 550 by rules with such selectors
dbaron@6470 551 are those that apply
dbaron@6470 552 to the ''::first-letter'' pseudo-element.
dbaron@6470 553 </p>
dbaron@6470 554
dbaron@6470 555 <p>
dbaron@6470 556 To be more precise,
dbaron@6484 557 when a rule's selector has ''::nth-fragment()'' pseudo-elements
dbaron@6470 558 attached to parts of the selector other than the subject,
dbaron@6470 559 the declarations in that rule apply to
dbaron@6470 560 a fragment (or pseudo-element thereof) when:
dbaron@6470 561 </p>
dbaron@6470 562 <ol>
dbaron@6470 563 <li>
dbaron@6470 564 the declarations are for properties that apply to the
dbaron@6470 565 ''::first-letter'' pseudo-element,
dbaron@6470 566 </li>
dbaron@6470 567 <li>
dbaron@6470 568 the declarations would apply to
dbaron@6470 569 that fragment (or pseudo-element thereof)
dbaron@6484 570 had those ''::nth-fragment()'' pseudo-elements been removed,
dbaron@6470 571 with a particular association between
dbaron@6470 572 each sequence of simple selectors and the element it matched,
dbaron@6470 573 and
dbaron@6470 574 </li>
dbaron@6470 575 <li>
dbaron@6484 576 for each removed ''::nth-fragment()'' pseudo-element,
dbaron@6484 577 the fragment lives within a <i>fragment box</i>
dbaron@6470 578 of the element associated in that association
dbaron@6470 579 with the selector that the pseudo-element was attached to,
dbaron@6470 580 and whose index matches the pseudo-element.
dbaron@6470 581 </li>
dbaron@6470 582 </ol>
dbaron@6470 583
dbaron@6481 584 <div class="example">
dbaron@6481 585 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6481 586 &lt;style&gt;
dbaron@6481 587 .dark-columns {
dbaron@6484 588 overflow: fragments;
dbaron@6481 589 width: 6em;
dbaron@6481 590 height: 10em;
dbaron@6481 591 float: left;
dbaron@6481 592 margin-right: 1em;
dbaron@6481 593 font: medium/1.25 Times New
dbaron@6481 594 Roman, Times, serif;
dbaron@6481 595 }
dbaron@6484 596 .dark-columns::nth-fragment(1) {
dbaron@6481 597 background: aqua; color: black;
dbaron@6481 598 }
dbaron@6484 599 .dark-columns::nth-fragment(1) :link {
dbaron@6481 600 color: blue;
dbaron@6481 601 }
dbaron@6484 602 .dark-columns::nth-fragment(1) :visited {
dbaron@6481 603 color: purple;
dbaron@6481 604 }
dbaron@6484 605 .dark-columns::nth-fragment(2) {
dbaron@6481 606 background: navy; color: white;
dbaron@6481 607 }
dbaron@6484 608 .dark-columns::nth-fragment(2) :link {
dbaron@6481 609 color: aqua;
dbaron@6481 610 }
dbaron@6484 611 .dark-columns::nth-fragment(2) :visited {
dbaron@6481 612 color: fuchsia;
dbaron@6481 613 }
dbaron@6481 614 &lt;/style&gt;
dbaron@6481 615 &lt;div class="dark-columns"&gt;
dbaron@6481 616 <i>...</i>
dbaron@6481 617 &lt;/div&gt;</pre></td><td>
dbaron@6484 618 <div class="dark-columns-demo one">In this<br><a href="http://en.wiktionary.org/wiki/example">example</a>, the<br>text flows<br>from one<br>light-colored<br>fragment into<br>another<br>dark-colored</div>
dbaron@6484 619 <div class="dark-columns-demo two">fragment. We<br>therefore want<br>different styles<br>for <a href="http://www.w3.org/Provider/Style/IntoContext.html">hyperlinks</a><br>in the different<br>fragments.</div>
dbaron@6481 620 </td></tr></table>
dbaron@6481 621 </div>
dbaron@6481 622
dbaron@6478 623
dbaron@6470 624 <h3 id="max-lines">The 'max-lines' property</h3>
dbaron@6470 625
dbaron@6470 626 <p>
dbaron@6470 627 Authors may wish to style the opening lines of an element
dbaron@6470 628 with different styles
dbaron@6484 629 by putting those opening lines in a separate fragment.
dbaron@6470 630 However, since it may be difficult to predict the exact height
dbaron@6470 631 occupied by those lines
dbaron@6484 632 in order to restrict the first fragment to that height,
dbaron@6470 633 this specification introduces a 'max-lines' property
dbaron@6484 634 that forces a fragment to break
dbaron@6470 635 after a specified number of lines.
dbaron@6470 636 This forces a break after the given number of lines
dbaron@6470 637 contained within the element or its descendants,
dbaron@6470 638 as long as those lines are in the same block formatting context.
dbaron@6470 639 </p>
dbaron@6470 640
dbaron@6470 641 <table class=propdef>
dbaron@6470 642 <tr>
dbaron@6470 643 <th>Name:
dbaron@6470 644 <td><dfn>max-lines</dfn>
dbaron@6470 645 <tr>
dbaron@6470 646 <th><a href="#values">Value</a>:
dbaron@6470 647 <td>none | &lt;integer&gt;
dbaron@6470 648 <tr>
dbaron@6470 649 <th>Initial:
dbaron@6470 650 <td>none
dbaron@6470 651 <tr>
dbaron@6470 652 <th>Applies to:
dbaron@6484 653 <td>fragment boxes
dbaron@6470 654 <tr>
dbaron@6470 655 <th>Inherited:
dbaron@6470 656 <td>no
dbaron@6470 657 <tr>
dbaron@6482 658 <th>Animatable:
dbaron@6482 659 <td>as <a href="http://www.w3.org/TR/css3-transitions/#animatable-types">integer</a>
dbaron@6482 660 <tr>
dbaron@6470 661 <th>Percentages:
dbaron@6470 662 <td>N/A
dbaron@6470 663 <tr>
dbaron@6470 664 <th>Media:
dbaron@6470 665 <td>visual
dbaron@6470 666 <tr>
dbaron@6470 667 <th>Computed&nbsp;value:
dbaron@6470 668 <td>specified value
dbaron@6470 669 <tr>
dbaron@6470 670 <th>Canonical order:
dbaron@6470 671 <td><abbr title="follows order of property value definition">per grammar</abbr>
dbaron@6470 672 </table>
dbaron@6470 673
dbaron@6470 674 <dl>
dbaron@6470 675 <dt>none
dbaron@6470 676 <dd>
dbaron@6470 677 <p>
dbaron@6470 678 Breaks occur only as specified elsewhere.
dbaron@6470 679 </p>
dbaron@6470 680 </dd>
dbaron@6470 681
dbaron@6470 682 <dt>&lt;integer&gt;
dbaron@6470 683 <dd>
dbaron@6470 684 <p>
dbaron@6470 685 In addition to any breaks specified elsewhere,
dbaron@6470 686 a break is forced before any line that would exceed
dbaron@6470 687 the given number of lines
dbaron@6470 688 being placed inside the element
dbaron@6470 689 (excluding lines that are in
dbaron@6470 690 a different block formatting context from
dbaron@6470 691 the block formatting context to which
dbaron@6470 692 an unstyled child of the element would belong).
dbaron@6470 693 </p>
dbaron@6470 694
dbaron@6470 695 <p class="issue">
dbaron@6470 696 If there are multiple boundaries between this line
dbaron@6470 697 and the previous, where exactly (in terms of element
dbaron@6470 698 boundaries) is the break forced?
dbaron@6470 699 </p>
dbaron@6470 700
dbaron@6470 701 <p>
dbaron@6470 702 Only positive integers are accepted.
dbaron@6470 703 Zero or negative integers are a parse error.
dbaron@6470 704 </p>
dbaron@6470 705 </dd>
dbaron@6470 706 </dl>
dbaron@6470 707
dbaron@6484 708 <p class="issue">Should this apply to fragment overflow only, or also
dbaron@6470 709 to pagination?</p>
dbaron@6470 710
dbaron@6479 711 <div class="example">
dbaron@6479 712 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6479 713 &lt;style&gt;
dbaron@6479 714 .article {
dbaron@6484 715 overflow: fragments;
dbaron@6479 716 }
dbaron@6479 717 .article::first-letter {
dbaron@6479 718 font-size: 2em;
dbaron@6479 719 line-height: 0.9;
dbaron@6479 720 }
dbaron@6484 721 .article::nth-fragment(1) {
dbaron@6479 722 font-size: 1.5em;
dbaron@6479 723 max-lines: 3;
dbaron@6479 724 }
dbaron@6491 725 .article::nth-fragment(2) {
dbaron@6479 726 column-count: 2;
dbaron@6479 727 }
dbaron@6479 728 &lt;/style&gt;
dbaron@6479 729 &lt;div class="article"&gt;
dbaron@6479 730 <i>...</i>
dbaron@6479 731 &lt;/div&gt;</pre></td><td>
dbaron@6479 732 <div class="article-max-lines-demo one">The max-lines property allows<br>authors to use a larger font for the first<br>few lines of an article. Without the</div>
dbaron@6479 733 <div class="article-max-lines-demo two">max-lines property, authors<br>might have to use the<br>'height' property instead, but<br>that would leave a slight gap<br>if the author miscalculated<br>how much height a given<br>number of lines would<br>occupy (which might be</div>
dbaron@6479 734 <div class="article-max-lines-demo three">particularly hard if the author<br>didn't know what text would<br>be filling the space, exactly<br>what font would be used, or<br>exactly which platform's font<br>rendering would be used to<br>display the font).</div>
dbaron@6479 735 </td></tr></table>
dbaron@6479 736 </div>
dbaron@6478 737
dbaron@6470 738 <h2 id="conformance">
dbaron@6470 739 Conformance</h2>
dbaron@6470 740
dbaron@6470 741 <h3 id="placement">
dbaron@6470 742 Module interactions</h3>
dbaron@6470 743
dbaron@6470 744 <p>This module extends the 'overflow'
dbaron@6470 745 feature defined in [[CSS21]] section 11.1.1. It defines additional
dbaron@6470 746 overflow handling mechanisms that implementations must implement as
dbaron@6470 747 described in this module in order to conform to this module.</p>
dbaron@6470 748
dbaron@6470 749 <p>No properties in this module apply to the <code>::first-line</code> or
dbaron@6470 750 <code>::first-letter</code> pseudo-elements.</p>
dbaron@6470 751
dbaron@6470 752 <h3 id="values">
dbaron@6470 753 Values</h3>
dbaron@6470 754
dbaron@6470 755 <p>This specification follows the
dbaron@6470 756 <a href="http://www.w3.org/TR/CSS21/about.html#property-defs">CSS property
dbaron@6470 757 definition conventions</a> from [[!CSS21]]. Value types not defined in
dbaron@6470 758 this specification are defined in CSS Level 2 Revision 1 [[!CSS21]].
dbaron@6470 759 Other CSS modules may expand the definitions of these value types: for
dbaron@6470 760 example [[CSS3COLOR]], when combined with this module, expands the
dbaron@6470 761 definition of the &lt;color&gt; value type as used in this specification.</p>
dbaron@6470 762
dbaron@6470 763 <p>In addition to the property-specific values listed in their definitions,
dbaron@6470 764 all properties defined in this specification also accept the
dbaron@6470 765 <a href="http://www.w3.org/TR/CSS21/cascade.html#value-def-inherit">inherit</a>
dbaron@6470 766 keyword as their property value. For readability it has not been repeated
dbaron@6470 767 explicitly.
dbaron@6470 768
dbaron@6470 769
dbaron@6470 770 <h3 id="conventions">
dbaron@6470 771 Document conventions</h3>
dbaron@6470 772
dbaron@6470 773 <p>Conformance requirements are expressed with a combination of
dbaron@6470 774 descriptive assertions and RFC 2119 terminology. The key words “MUST”,
dbaron@6470 775 “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”,
dbaron@6470 776 “RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this
dbaron@6470 777 document are to be interpreted as described in RFC 2119.
dbaron@6470 778 However, for readability, these words do not appear in all uppercase
dbaron@6470 779 letters in this specification.
dbaron@6470 780
dbaron@6470 781 <p>All of the text of this specification is normative except sections
dbaron@6470 782 explicitly marked as non-normative, examples, and notes. [[!RFC2119]]</p>
dbaron@6470 783
dbaron@6470 784 <p>Examples in this specification are introduced with the words “for example”
dbaron@6470 785 or are set apart from the normative text with <code>class="example"</code>,
dbaron@6470 786 like this:
dbaron@6470 787
dbaron@6470 788 <div class="example">
dbaron@6470 789 <p>This is an example of an informative example.</p>
dbaron@6470 790 </div>
dbaron@6470 791
dbaron@6470 792 <p>Informative notes begin with the word “Note” and are set apart from the
dbaron@6470 793 normative text with <code>class="note"</code>, like this:
dbaron@6470 794
dbaron@6470 795 <p class="note">Note, this is an informative note.</p>
dbaron@6470 796
dbaron@6470 797 <h3 id="conformance-classes">
dbaron@6470 798 Conformance classes</h3>
dbaron@6470 799
dbaron@6483 800 <p>Conformance to CSS Overflow Module Level 3
dbaron@6470 801 is defined for three conformance classes:
dbaron@6470 802 <dl>
dbaron@6470 803 <dt><dfn title="style sheet!!as conformance class">style sheet</dfn>
dbaron@6470 804 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#style-sheet">CSS
dbaron@6470 805 style sheet</a>.
dbaron@6470 806 <dt><dfn>renderer</dfn></dt>
dbaron@6470 807 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
dbaron@6470 808 that interprets the semantics of a style sheet and renders
dbaron@6470 809 documents that use them.
dbaron@6470 810 <dt><dfn id="authoring-tool">authoring tool</dfn></dt>
dbaron@6470 811 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
dbaron@6470 812 that writes a style sheet.
dbaron@6470 813 </dl>
dbaron@6470 814
dbaron@6483 815 <p>A style sheet is conformant to CSS Overflow Module Level 3
dbaron@6470 816 if all of its statements that use syntax defined in this module are valid
dbaron@6470 817 according to the generic CSS grammar and the individual grammars of each
dbaron@6470 818 feature defined in this module.
dbaron@6470 819
dbaron@6483 820 <p>A renderer is conformant to CSS Overflow Module Level 3
dbaron@6470 821 if, in addition to interpreting the style sheet as defined by the
dbaron@6470 822 appropriate specifications, it supports all the features defined
dbaron@6483 823 by CSS Overflow Module Level 3 by parsing them correctly
dbaron@6470 824 and rendering the document accordingly. However, the inability of a
dbaron@6470 825 UA to correctly render a document due to limitations of the device
dbaron@6470 826 does not make the UA non-conformant. (For example, a UA is not
dbaron@6470 827 required to render color on a monochrome monitor.)
dbaron@6470 828
dbaron@6483 829 <p>An authoring tool is conformant to CSS Overflow Module Level 3
dbaron@6470 830 if it writes style sheets that are syntactically correct according to the
dbaron@6470 831 generic CSS grammar and the individual grammars of each feature in
dbaron@6470 832 this module, and meet all other conformance requirements of style sheets
dbaron@6470 833 as described in this module.
dbaron@6470 834
dbaron@6470 835 <h3 id="partial">
dbaron@6470 836 Partial implementations</h3>
dbaron@6470 837
dbaron@6470 838 <p>So that authors can exploit the forward-compatible parsing rules to
dbaron@6470 839 assign fallback values, CSS renderers <strong>must</strong>
dbaron@6470 840 treat as invalid (and <a href="http://www.w3.org/TR/CSS21/conform.html#ignore">ignore
dbaron@6470 841 as appropriate</a>) any at-rules, properties, property values, keywords,
dbaron@6470 842 and other syntactic constructs for which they have no usable level of
dbaron@6470 843 support. In particular, user agents <strong>must not</strong> selectively
dbaron@6470 844 ignore unsupported component values and honor supported values in a single
dbaron@6470 845 multi-value property declaration: if any value is considered invalid
dbaron@6470 846 (as unsupported values must be), CSS requires that the entire declaration
dbaron@6470 847 be ignored.</p>
dbaron@6470 848
dbaron@6470 849 <h3 id="experimental">
dbaron@6470 850 Experimental implementations</h3>
dbaron@6470 851
dbaron@6470 852 <p>To avoid clashes with future CSS features, the CSS2.1 specification
dbaron@6470 853 reserves a <a href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords">prefixed
dbaron@6470 854 syntax</a> for proprietary and experimental extensions to CSS.
dbaron@6470 855
dbaron@6470 856 <p>Prior to a specification reaching the Candidate Recommendation stage
dbaron@6470 857 in the W3C process, all implementations of a CSS feature are considered
dbaron@6470 858 experimental. The CSS Working Group recommends that implementations
dbaron@6470 859 use a vendor-prefixed syntax for such features, including those in
dbaron@6470 860 W3C Working Drafts. This avoids incompatibilities with future changes
dbaron@6470 861 in the draft.
dbaron@6470 862 </p>
dbaron@6470 863
dbaron@6470 864 <h3 id="testing">
dbaron@6470 865 Non-experimental implementations</h3>
dbaron@6470 866
dbaron@6470 867 <p>Once a specification reaches the Candidate Recommendation stage,
dbaron@6470 868 non-experimental implementations are possible, and implementors should
dbaron@6470 869 release an unprefixed implementation of any CR-level feature they
dbaron@6470 870 can demonstrate to be correctly implemented according to spec.
dbaron@6470 871
dbaron@6470 872 <p>To establish and maintain the interoperability of CSS across
dbaron@6470 873 implementations, the CSS Working Group requests that non-experimental
dbaron@6470 874 CSS renderers submit an implementation report (and, if necessary, the
dbaron@6470 875 testcases used for that implementation report) to the W3C before
dbaron@6470 876 releasing an unprefixed implementation of any CSS features. Testcases
dbaron@6470 877 submitted to W3C are subject to review and correction by the CSS
dbaron@6470 878 Working Group.
dbaron@6470 879
dbaron@6470 880 <p>Further information on submitting testcases and implementation reports
dbaron@6470 881 can be found from on the CSS Working Group's website at
dbaron@6470 882 <a href="http://www.w3.org/Style/CSS/Test/">http://www.w3.org/Style/CSS/Test/</a>.
dbaron@6470 883 Questions should be directed to the
dbaron@6470 884 <a href="http://lists.w3.org/Archives/Public/public-css-testsuite">public-css-testsuite@w3.org</a>
dbaron@6470 885 mailing list.
dbaron@6470 886
dbaron@6470 887 <h3 id="cr-exit-criteria">
dbaron@6470 888 CR exit criteria</h3>
dbaron@6470 889
dbaron@6470 890 <p class=issue>[Change or remove the following CR exit criteria if
dbaron@6470 891 the spec is not a module, but, e.g., a Note or a profile. This text was <a
dbaron@6470 892 href="http://www.w3.org/Style/CSS/Tracker/actions/44"> decided on 2008-06-04.</a>]</p>
dbaron@6470 893
dbaron@6470 894 <p>
dbaron@6470 895 For this specification to be advanced to Proposed Recommendation,
dbaron@6470 896 there must be at least two independent, interoperable implementations
dbaron@6470 897 of each feature. Each feature may be implemented by a different set of
dbaron@6470 898 products, there is no requirement that all features be implemented by
dbaron@6470 899 a single product. For the purposes of this criterion, we define the
dbaron@6470 900 following terms:
dbaron@6470 901
dbaron@6470 902 <dl>
dbaron@6470 903 <dt>independent <dd>each implementation must be developed by a
dbaron@6470 904 different party and cannot share, reuse, or derive from code
dbaron@6470 905 used by another qualifying implementation. Sections of code that
dbaron@6470 906 have no bearing on the implementation of this specification are
dbaron@6470 907 exempt from this requirement.
dbaron@6470 908
dbaron@6470 909 <dt>interoperable <dd>passing the respective test case(s) in the
dbaron@6470 910 official CSS test suite, or, if the implementation is not a Web
dbaron@6470 911 browser, an equivalent test. Every relevant test in the test
dbaron@6470 912 suite should have an equivalent test created if such a user
dbaron@6470 913 agent (UA) is to be used to claim interoperability. In addition
dbaron@6470 914 if such a UA is to be used to claim interoperability, then there
dbaron@6470 915 must one or more additional UAs which can also pass those
dbaron@6470 916 equivalent tests in the same way for the purpose of
dbaron@6470 917 interoperability. The equivalent tests must be made publicly
dbaron@6470 918 available for the purposes of peer review.
dbaron@6470 919
dbaron@6470 920 <dt>implementation <dd>a user agent which:
dbaron@6470 921
dbaron@6470 922 <ol class=inline>
dbaron@6470 923 <li>implements the specification.
dbaron@6470 924
dbaron@6470 925 <li>is available to the general public. The implementation may
dbaron@6470 926 be a shipping product or other publicly available version
dbaron@6470 927 (i.e., beta version, preview release, or “nightly build”).
dbaron@6470 928 Non-shipping product releases must have implemented the
dbaron@6470 929 feature(s) for a period of at least one month in order to
dbaron@6470 930 demonstrate stability.
dbaron@6470 931
dbaron@6470 932 <li>is not experimental (i.e., a version specifically designed
dbaron@6470 933 to pass the test suite and is not intended for normal usage
dbaron@6470 934 going forward).
dbaron@6470 935 </ol>
dbaron@6470 936 </dl>
dbaron@6470 937
dbaron@6470 938 <p>The specification will remain Candidate Recommendation for at least
dbaron@6470 939 six months.
dbaron@6470 940
dbaron@6470 941 <h2 class=no-num id="acknowledgments">
dbaron@6470 942 Acknowledgments</h2>
dbaron@6470 943
dbaron@6470 944 <p>
dbaron@6470 945 Thanks especially to the feedback from
dbaron@6470 946 H&aring;kon Wium Lie,
dbaron@6470 947 Florian Rivoal,
dbaron@6473 948 Alan Stearns,
dbaron@6470 949 and all the rest of the
dbaron@6470 950 <a href="http://lists.w3.org/Archives/Public/www-style/">www-style</a> community.
dbaron@6470 951 </p>
dbaron@6470 952
dbaron@6470 953 <h2 class=no-num id="references">
dbaron@6470 954 References</h2>
dbaron@6470 955
dbaron@6470 956 <h3 class="no-num" id="normative-references">
dbaron@6470 957 Normative references</h3>
dbaron@6470 958 <!--normative-->
dbaron@6470 959
dbaron@6470 960 <h3 class="no-num" id="other-references">
dbaron@6470 961 Other references</h3>
dbaron@6470 962 <!--informative-->
dbaron@6470 963
dbaron@6470 964 <h2 class="no-num" id="index">
dbaron@6470 965 Index</h2>
dbaron@6470 966 <!--index-->
dbaron@6470 967
dbaron@6470 968 <h2 class="no-num" id="property-index">
dbaron@6470 969 Property index</h2>
dbaron@6470 970 <!-- properties -->
dbaron@6470 971
dbaron@6470 972 </body>
dbaron@6470 973 </html>
dbaron@6470 974 <!-- Keep this comment at the end of the file
dbaron@6470 975 Local variables:
dbaron@6470 976 mode: sgml
dbaron@6470 977 sgml-declaration:"~/SGML/HTML4.decl"
dbaron@6470 978 sgml-default-doctype-name:"html"
dbaron@6470 979 sgml-minimize-attributes:t
dbaron@6470 980 sgml-nofill-elements:("pre" "style" "br")
dbaron@6470 981 sgml-live-element-indicator:t
dbaron@6470 982 sgml-omittag:nil
dbaron@6470 983 sgml-shorttag:nil
dbaron@6470 984 sgml-namecase-general:t
dbaron@6470 985 sgml-general-insert-case:lower
dbaron@6470 986 sgml-always-quote-attributes:t
dbaron@6470 987 sgml-indent-step:nil
dbaron@6470 988 sgml-indent-data:t
dbaron@6470 989 sgml-parent-document:nil
dbaron@6470 990 sgml-exposed-tags:nil
dbaron@6470 991 sgml-local-catalogs:nil
dbaron@6470 992 sgml-local-ecat-files:nil
dbaron@6470 993 End:
dbaron@6470 994 -->
dbaron@6470 995

mercurial