css3-overflow/Overview.src.html

Thu, 16 Aug 2012 14:32:39 -0700

author
L. David Baron <dbaron@dbaron.org>
date
Thu, 16 Aug 2012 14:32:39 -0700
changeset 6484
4f00e14a11d4
parent 6483
ce35838cba90
child 6485
d71ab862ce20
permissions
-rw-r--r--

Rename to :nth-fragment and overflow:fragments (and follow with renames to terminology) based on discussion at face-to-face on 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@6470 262 then implementations must create at least one box for that element.
dbaron@6484 263 Each box created for the element is called a <dfn>fragment box</dfn>
dbaron@6470 264 for that element.
dbaron@6484 265 (If an element with ''overflow: fragments'' generates only one box,
dbaron@6484 266 that box is a <i>fragment box</i>.
dbaron@6484 267 However, if an element's computed 'overflow' is not ''fragments'',
dbaron@6484 268 then its box is not a <i>fragment box</i>.)
dbaron@6484 269 Every <i>fragment box</i> is a fragmentation container,
dbaron@6484 270 and for each <i>fragment box</i> which ends with a fragmentation break,
dbaron@6471 271 (which could happen
dbaron@6471 272 because breakable content overflows in the block dimension
dbaron@6471 273 or because of a forced break),
dbaron@6484 274 there must be another <i>fragment box</i> created as a next sibling
dbaron@6470 275 of the previous one.
dbaron@6470 276 <span class="issue">Or is it as though it's a next sibling of
dbaron@6470 277 the element? Need to figure out exactly how this interacts with
dbaron@6470 278 other box-level fixup.</span>
dbaron@6470 279 (Breakable content might overflow in the box dimension either
dbaron@6484 280 because of a specified size on the <i>fragment box</i>
dbaron@6484 281 or because the <i>fragment box</i> is within a fragmentation context
dbaron@6470 282 in which it is being broken.
dbaron@6484 283 In other words, a single <i>fragment box</i> is never broken
dbaron@6470 284 across columns or pages;
dbaron@6470 285 the pieces that are in separate columns or pages
dbaron@6484 286 are always distinct <i>fragment box</i>es.)
dbaron@6470 287 </p>
dbaron@6470 288
dbaron@6470 289 <p class="issue">
dbaron@6484 290 We also want ''::nth-fragment()'' pseudo-elements
dbaron@6470 291 to be able to apply to the pieces of an element
dbaron@6470 292 split within a fragmentation context.
dbaron@6470 293 Should we require that authors who want to use
dbaron@6484 294 ''::nth-fragment()'' in this way specify ''overflow:fragments''
dbaron@6470 295 (even if they don't specify a constrained height),
dbaron@6470 296 or should it work automatically for all elements
dbaron@6484 297 even if they don't have ''overflow: fragments''?
dbaron@6470 298 </p>
dbaron@6470 299
dbaron@6475 300 <div class="example">
dbaron@6477 301 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6475 302 &lt;title&gt;Breaking content into
dbaron@6475 303 equal-sized cards&lt;/title&gt;
dbaron@6475 304 &lt;style&gt;
dbaron@6475 305 .in-cards {
dbaron@6484 306 overflow: fragments;
dbaron@6475 307
dbaron@6475 308 width: 13em;
dbaron@6475 309 height: 8em;
dbaron@6475 310
dbaron@6475 311 padding: 4px;
dbaron@6475 312 border: medium solid blue;
dbaron@6475 313 margin: 6px;
dbaron@6475 314
dbaron@6475 315 font: medium/1.3 Times New
dbaron@6475 316 Roman, Times, serif;
dbaron@6475 317 }
dbaron@6475 318 &lt;/style&gt;
dbaron@6475 319 &lt;div class="in-cards"&gt;
dbaron@6475 320 In this example, the text in the div
dbaron@6475 321 is broken into a series of cards.
dbaron@6475 322 These cards all have the same style.
dbaron@6475 323 The presence of enough content to
dbaron@6475 324 overflow one of the cards causes
dbaron@6475 325 another one to be created. The second
dbaron@6475 326 card is created just like it's the
dbaron@6475 327 next sibling of the first.
dbaron@6477 328 &lt;/div&gt;</pre></td><td>
dbaron@6475 329 <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 330 <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 331 </td></tr></table>
dbaron@6475 332 </div>
dbaron@6475 333
dbaron@6484 334 <h3 id="fragment-styling">Fragment styling</h3>
dbaron@6470 335
dbaron@6484 336 <h4 id="fragment-pseudo-element">The ::nth-fragment() pseudo-element</h4>
dbaron@6470 337
dbaron@6470 338 <p>
dbaron@6484 339 The ::nth-fragment() pseudo-element is a pseudo-element
dbaron@6484 340 that describes some of the <i>fragment box</i>es generated by an element.
dbaron@6470 341 The argument to the pseudo-element takes the same syntax
dbaron@6470 342 as the argument to the :nth-child() pseudo-class
dbaron@6470 343 defined in [[!SELECT]], and has the same meaning
dbaron@6470 344 except that the number is relative to
dbaron@6484 345 <i>fragment box</i>es generated by the element
dbaron@6470 346 instead of siblings of the element.
dbaron@6470 347 </p>
dbaron@6470 348
dbaron@6470 349 <p class="note">
dbaron@6484 350 Selectors that allow addressing fragments
dbaron@6470 351 by counting from the end rather than the start
dbaron@6470 352 are intentionally not provided.
dbaron@6470 353 Such selectors would interfere with determining
dbaron@6484 354 the number of fragments.
dbaron@6470 355 </p>
dbaron@6470 356
dbaron@6484 357 <h4 id="style-of-fragments">Styling of fragments</h4>
dbaron@6470 358
dbaron@6470 359 <p class="issue">
dbaron@6484 360 Should this apply to fragment overflow only,
dbaron@6470 361 or also to paginated overflow?
dbaron@6470 362 (If it applies,
dbaron@6470 363 then stricter property restrictions would be needed
dbaron@6470 364 for paginated overflow.)
dbaron@6470 365 </p>
dbaron@6470 366
dbaron@6470 367 <p>
dbaron@6484 368 In the absence of rules with ''::nth-fragment()'' pseudo-elements,
dbaron@6484 369 the computed style for each <i>fragment box</i>
dbaron@6470 370 is the computed style for the element
dbaron@6484 371 for which the <i>fragment box</i> was created.
dbaron@6484 372 However, the style for a <i>fragment box</i> is also influenced
dbaron@6470 373 by rules whose selector's <i>subject</i> [[!SELECT]]
dbaron@6484 374 has an ''::nth-fragment()'' pseudo-element,
dbaron@6484 375 if the 1-based number of the <i>fragment box</i> matches
dbaron@6484 376 that ''::nth-fragment()'' pseudo-element
dbaron@6484 377 and the selector (excluding the ''::nth-fragment()'' pseudo-element)
dbaron@6484 378 matches the element generating the fragments.
dbaron@6470 379 </p>
dbaron@6470 380
dbaron@6477 381 <div class="example">
dbaron@6477 382 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6477 383 &lt;style&gt;
dbaron@6477 384 .bouncy-columns {
dbaron@6484 385 overflow: fragments;
dbaron@6477 386 width: 6em;
dbaron@6477 387 height: 10em;
dbaron@6477 388 float: left;
dbaron@6477 389 margin: 1em;
dbaron@6477 390 font: medium/1.25 Times New
dbaron@6477 391 Roman, Times, serif;
dbaron@6477 392 }
dbaron@6484 393 .bouncy-columns::nth-fragment(1) {
dbaron@6477 394 background: aqua; color: black;
dbaron@6477 395 transform: rotate(-3deg);
dbaron@6477 396 }
dbaron@6484 397 .bouncy-columns::nth-fragment(2) {
dbaron@6477 398 background: yellow; color: black;
dbaron@6477 399 transform: rotate(3deg);
dbaron@6477 400 }
dbaron@6477 401 &lt;/style&gt;
dbaron@6477 402 &lt;div class="bouncy-columns"&gt;
dbaron@6477 403 <i>...</i>
dbaron@6477 404 &lt;/div&gt;</pre></td><td>
dbaron@6477 405 <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 406 <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 407 <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 408 </td></tr></table>
dbaron@6477 409 </div>
dbaron@6477 410
dbaron@6470 411 <p>
dbaron@6484 412 Styling an ''::nth-fragment()'' pseudo-element with the 'overflow'
dbaron@6470 413 property has no effect;
dbaron@6484 414 the computed value of 'overflow' for the fragment box
dbaron@6470 415 remains the same as the computed value of overflow for the element.
dbaron@6470 416 </p>
dbaron@6470 417
dbaron@6470 418 <p>
dbaron@6484 419 Specifying ''display: none'' for a <i>fragment box</i> causes
dbaron@6484 420 the fragment box with that index not to be generated.
dbaron@6470 421 However, in terms of the indices
dbaron@6484 422 used for matching ''::nth-fragment()'' pseudo-elements
dbaron@6484 423 of later fragment boxes,
dbaron@6470 424 it still counts as though it was generated.
dbaron@6470 425 However, since it is not generated, it does not contain any content.
dbaron@6470 426 </p>
dbaron@6470 427
dbaron@6470 428 <p class="issue">
dbaron@6470 429 Would it make more sense to forbid ''display:none''?
dbaron@6470 430 Or perhaps to forbid 'display', 'position', 'float',
dbaron@6470 431 and similar (in addition to 'overflow')?
dbaron@6470 432 </p>
dbaron@6470 433
dbaron@6470 434 <p>
dbaron@6470 435 To match the model for other pseudo-elements
dbaron@6470 436 where the pseudo-elements live inside their corresponding element,
dbaron@6484 437 declarations in ''::nth-fragment()'' pseudo-elements override
dbaron@6470 438 declarations in rules without the pseudo-element.
dbaron@6470 439 The relative priority within such declarations is determined
dbaron@6470 440 by normal cascading order (see [[!CSS21]]).
dbaron@6470 441 </p>
dbaron@6470 442
dbaron@6470 443 <p>
dbaron@6484 444 Styles specified on ''::nth-fragment()'' pseudo-elements
dbaron@6484 445 do affect inheritance to content within the <i>fragment box</i>.
dbaron@6484 446 In other words, the content within the <i>fragment box</i> must
dbaron@6484 447 inherit from the fragment box's style (i.e., the pseudo-element style)
dbaron@6470 448 rather than directly from the element.
dbaron@6484 449 This means that elements split between fragment boxes may
dbaron@6470 450 have different styles for different parts of the element.
dbaron@6470 451 </p>
dbaron@6470 452
dbaron@6472 453 <p class="issue">
dbaron@6472 454 This inheritance rule allows specifying styles indirectly
dbaron@6472 455 (by using explicit ''inherit'' or using default inheritance
dbaron@6472 456 on properties that don't apply to '':first-letter'')
dbaron@6472 457 that can't be specified directly
dbaron@6472 458 (based on the rules in the next section).
dbaron@6472 459 This is a problem.
dbaron@6484 460 The restrictions that apply to styling inside fragments
dbaron@6484 461 should also apply to inheritance from fragments.
dbaron@6472 462 </p>
dbaron@6472 463
dbaron@6480 464 <div class="example">
dbaron@6480 465 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6480 466 &lt;style&gt;
dbaron@6480 467 .article {
dbaron@6484 468 overflow: fragments;
dbaron@6480 469 }
dbaron@6484 470 .article::nth-fragment(1) {
dbaron@6480 471 font-size: 1.5em;
dbaron@6480 472 margin-bottom: 1em;
dbaron@6480 473 height: 4em;
dbaron@6480 474 }
dbaron@6484 475 .article::nth-fragment(n+2) {
dbaron@6480 476 /* 2 and up */
dbaron@6480 477 margin-left: 5em;
dbaron@6480 478 margin-right: 2em;
dbaron@6480 479 }
dbaron@6480 480 &lt;/style&gt;
dbaron@6480 481 &lt;div class="article"&gt;
dbaron@6480 482 The &lt;code&gt;font-size&lt;/code&gt; property<i>...</i>
dbaron@6480 483 &lt;/div&gt;</pre></td><td>
dbaron@6484 484 <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 485 <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 486 </td></tr></table>
dbaron@6480 487 </div>
dbaron@6478 488
dbaron@6484 489 <h4 id="style-in-fragments">Styling inside fragments</h4>
dbaron@6470 490
dbaron@6470 491 <p class="issue">
dbaron@6484 492 Should this apply to fragment overflow only,
dbaron@6470 493 or also to paginated overflow,
dbaron@6470 494 or even to pagination across pages?
dbaron@6470 495 </p>
dbaron@6470 496
dbaron@6470 497 <p>
dbaron@6484 498 The ''::nth-fragment()'' pseudo-element
dbaron@6470 499 can also be used to style
dbaron@6484 500 content inside of a <i>fragment box</i>.
dbaron@6470 501 Unlike the ''::first-line'' and ''::first-letter'' pseudo-elements,
dbaron@6484 502 the ''::nth-fragment()'' pseudo-element can be applied
dbaron@6470 503 to parts of the selector other than the subject:
dbaron@6470 504 in particular, it can match ancestors of the subject.
dbaron@6470 505 However, the only CSS properties applied
dbaron@6470 506 by rules with such selectors
dbaron@6470 507 are those that apply
dbaron@6470 508 to the ''::first-letter'' pseudo-element.
dbaron@6470 509 </p>
dbaron@6470 510
dbaron@6470 511 <p>
dbaron@6470 512 To be more precise,
dbaron@6484 513 when a rule's selector has ''::nth-fragment()'' pseudo-elements
dbaron@6470 514 attached to parts of the selector other than the subject,
dbaron@6470 515 the declarations in that rule apply to
dbaron@6470 516 a fragment (or pseudo-element thereof) when:
dbaron@6470 517 </p>
dbaron@6470 518 <ol>
dbaron@6470 519 <li>
dbaron@6470 520 the declarations are for properties that apply to the
dbaron@6470 521 ''::first-letter'' pseudo-element,
dbaron@6470 522 </li>
dbaron@6470 523 <li>
dbaron@6470 524 the declarations would apply to
dbaron@6470 525 that fragment (or pseudo-element thereof)
dbaron@6484 526 had those ''::nth-fragment()'' pseudo-elements been removed,
dbaron@6470 527 with a particular association between
dbaron@6470 528 each sequence of simple selectors and the element it matched,
dbaron@6470 529 and
dbaron@6470 530 </li>
dbaron@6470 531 <li>
dbaron@6484 532 for each removed ''::nth-fragment()'' pseudo-element,
dbaron@6484 533 the fragment lives within a <i>fragment box</i>
dbaron@6470 534 of the element associated in that association
dbaron@6470 535 with the selector that the pseudo-element was attached to,
dbaron@6470 536 and whose index matches the pseudo-element.
dbaron@6470 537 </li>
dbaron@6470 538 </ol>
dbaron@6470 539
dbaron@6481 540 <div class="example">
dbaron@6481 541 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6481 542 &lt;style&gt;
dbaron@6481 543 .dark-columns {
dbaron@6484 544 overflow: fragments;
dbaron@6481 545 width: 6em;
dbaron@6481 546 height: 10em;
dbaron@6481 547 float: left;
dbaron@6481 548 margin-right: 1em;
dbaron@6481 549 font: medium/1.25 Times New
dbaron@6481 550 Roman, Times, serif;
dbaron@6481 551 }
dbaron@6484 552 .dark-columns::nth-fragment(1) {
dbaron@6481 553 background: aqua; color: black;
dbaron@6481 554 }
dbaron@6484 555 .dark-columns::nth-fragment(1) :link {
dbaron@6481 556 color: blue;
dbaron@6481 557 }
dbaron@6484 558 .dark-columns::nth-fragment(1) :visited {
dbaron@6481 559 color: purple;
dbaron@6481 560 }
dbaron@6484 561 .dark-columns::nth-fragment(2) {
dbaron@6481 562 background: navy; color: white;
dbaron@6481 563 }
dbaron@6484 564 .dark-columns::nth-fragment(2) :link {
dbaron@6481 565 color: aqua;
dbaron@6481 566 }
dbaron@6484 567 .dark-columns::nth-fragment(2) :visited {
dbaron@6481 568 color: fuchsia;
dbaron@6481 569 }
dbaron@6481 570 &lt;/style&gt;
dbaron@6481 571 &lt;div class="dark-columns"&gt;
dbaron@6481 572 <i>...</i>
dbaron@6481 573 &lt;/div&gt;</pre></td><td>
dbaron@6484 574 <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 575 <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 576 </td></tr></table>
dbaron@6481 577 </div>
dbaron@6481 578
dbaron@6478 579
dbaron@6470 580 <h3 id="max-lines">The 'max-lines' property</h3>
dbaron@6470 581
dbaron@6470 582 <p>
dbaron@6470 583 Authors may wish to style the opening lines of an element
dbaron@6470 584 with different styles
dbaron@6484 585 by putting those opening lines in a separate fragment.
dbaron@6470 586 However, since it may be difficult to predict the exact height
dbaron@6470 587 occupied by those lines
dbaron@6484 588 in order to restrict the first fragment to that height,
dbaron@6470 589 this specification introduces a 'max-lines' property
dbaron@6484 590 that forces a fragment to break
dbaron@6470 591 after a specified number of lines.
dbaron@6470 592 This forces a break after the given number of lines
dbaron@6470 593 contained within the element or its descendants,
dbaron@6470 594 as long as those lines are in the same block formatting context.
dbaron@6470 595 </p>
dbaron@6470 596
dbaron@6470 597 <table class=propdef>
dbaron@6470 598 <tr>
dbaron@6470 599 <th>Name:
dbaron@6470 600 <td><dfn>max-lines</dfn>
dbaron@6470 601 <tr>
dbaron@6470 602 <th><a href="#values">Value</a>:
dbaron@6470 603 <td>none | &lt;integer&gt;
dbaron@6470 604 <tr>
dbaron@6470 605 <th>Initial:
dbaron@6470 606 <td>none
dbaron@6470 607 <tr>
dbaron@6470 608 <th>Applies to:
dbaron@6484 609 <td>fragment boxes
dbaron@6470 610 <tr>
dbaron@6470 611 <th>Inherited:
dbaron@6470 612 <td>no
dbaron@6470 613 <tr>
dbaron@6482 614 <th>Animatable:
dbaron@6482 615 <td>as <a href="http://www.w3.org/TR/css3-transitions/#animatable-types">integer</a>
dbaron@6482 616 <tr>
dbaron@6470 617 <th>Percentages:
dbaron@6470 618 <td>N/A
dbaron@6470 619 <tr>
dbaron@6470 620 <th>Media:
dbaron@6470 621 <td>visual
dbaron@6470 622 <tr>
dbaron@6470 623 <th>Computed&nbsp;value:
dbaron@6470 624 <td>specified value
dbaron@6470 625 <tr>
dbaron@6470 626 <th>Canonical order:
dbaron@6470 627 <td><abbr title="follows order of property value definition">per grammar</abbr>
dbaron@6470 628 </table>
dbaron@6470 629
dbaron@6470 630 <dl>
dbaron@6470 631 <dt>none
dbaron@6470 632 <dd>
dbaron@6470 633 <p>
dbaron@6470 634 Breaks occur only as specified elsewhere.
dbaron@6470 635 </p>
dbaron@6470 636 </dd>
dbaron@6470 637
dbaron@6470 638 <dt>&lt;integer&gt;
dbaron@6470 639 <dd>
dbaron@6470 640 <p>
dbaron@6470 641 In addition to any breaks specified elsewhere,
dbaron@6470 642 a break is forced before any line that would exceed
dbaron@6470 643 the given number of lines
dbaron@6470 644 being placed inside the element
dbaron@6470 645 (excluding lines that are in
dbaron@6470 646 a different block formatting context from
dbaron@6470 647 the block formatting context to which
dbaron@6470 648 an unstyled child of the element would belong).
dbaron@6470 649 </p>
dbaron@6470 650
dbaron@6470 651 <p class="issue">
dbaron@6470 652 If there are multiple boundaries between this line
dbaron@6470 653 and the previous, where exactly (in terms of element
dbaron@6470 654 boundaries) is the break forced?
dbaron@6470 655 </p>
dbaron@6470 656
dbaron@6470 657 <p>
dbaron@6470 658 Only positive integers are accepted.
dbaron@6470 659 Zero or negative integers are a parse error.
dbaron@6470 660 </p>
dbaron@6470 661 </dd>
dbaron@6470 662 </dl>
dbaron@6470 663
dbaron@6484 664 <p class="issue">Should this apply to fragment overflow only, or also
dbaron@6470 665 to pagination?</p>
dbaron@6470 666
dbaron@6479 667 <div class="example">
dbaron@6479 668 <table class="source-demo-pair"><tr><td><pre>&lt;!DOCTYPE HTML&gt;
dbaron@6479 669 &lt;style&gt;
dbaron@6479 670 .article {
dbaron@6484 671 overflow: fragments;
dbaron@6479 672 }
dbaron@6479 673 .article::first-letter {
dbaron@6479 674 font-size: 2em;
dbaron@6479 675 line-height: 0.9;
dbaron@6479 676 }
dbaron@6484 677 .article::nth-fragment(1) {
dbaron@6479 678 font-size: 1.5em;
dbaron@6479 679 max-lines: 3;
dbaron@6479 680 }
dbaron@6484 681 .article::nth-fragment(n+2) {
dbaron@6479 682 /* 2 and up */
dbaron@6479 683 column-count: 2;
dbaron@6479 684 }
dbaron@6479 685 &lt;/style&gt;
dbaron@6479 686 &lt;div class="article"&gt;
dbaron@6479 687 <i>...</i>
dbaron@6479 688 &lt;/div&gt;</pre></td><td>
dbaron@6479 689 <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 690 <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 691 <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 692 </td></tr></table>
dbaron@6479 693 </div>
dbaron@6478 694
dbaron@6470 695 <h2 id="conformance">
dbaron@6470 696 Conformance</h2>
dbaron@6470 697
dbaron@6470 698 <h3 id="placement">
dbaron@6470 699 Module interactions</h3>
dbaron@6470 700
dbaron@6470 701 <p>This module extends the 'overflow'
dbaron@6470 702 feature defined in [[CSS21]] section 11.1.1. It defines additional
dbaron@6470 703 overflow handling mechanisms that implementations must implement as
dbaron@6470 704 described in this module in order to conform to this module.</p>
dbaron@6470 705
dbaron@6470 706 <p>No properties in this module apply to the <code>::first-line</code> or
dbaron@6470 707 <code>::first-letter</code> pseudo-elements.</p>
dbaron@6470 708
dbaron@6470 709 <h3 id="values">
dbaron@6470 710 Values</h3>
dbaron@6470 711
dbaron@6470 712 <p>This specification follows the
dbaron@6470 713 <a href="http://www.w3.org/TR/CSS21/about.html#property-defs">CSS property
dbaron@6470 714 definition conventions</a> from [[!CSS21]]. Value types not defined in
dbaron@6470 715 this specification are defined in CSS Level 2 Revision 1 [[!CSS21]].
dbaron@6470 716 Other CSS modules may expand the definitions of these value types: for
dbaron@6470 717 example [[CSS3COLOR]], when combined with this module, expands the
dbaron@6470 718 definition of the &lt;color&gt; value type as used in this specification.</p>
dbaron@6470 719
dbaron@6470 720 <p>In addition to the property-specific values listed in their definitions,
dbaron@6470 721 all properties defined in this specification also accept the
dbaron@6470 722 <a href="http://www.w3.org/TR/CSS21/cascade.html#value-def-inherit">inherit</a>
dbaron@6470 723 keyword as their property value. For readability it has not been repeated
dbaron@6470 724 explicitly.
dbaron@6470 725
dbaron@6470 726
dbaron@6470 727 <h3 id="conventions">
dbaron@6470 728 Document conventions</h3>
dbaron@6470 729
dbaron@6470 730 <p>Conformance requirements are expressed with a combination of
dbaron@6470 731 descriptive assertions and RFC 2119 terminology. The key words “MUST”,
dbaron@6470 732 “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”,
dbaron@6470 733 “RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this
dbaron@6470 734 document are to be interpreted as described in RFC 2119.
dbaron@6470 735 However, for readability, these words do not appear in all uppercase
dbaron@6470 736 letters in this specification.
dbaron@6470 737
dbaron@6470 738 <p>All of the text of this specification is normative except sections
dbaron@6470 739 explicitly marked as non-normative, examples, and notes. [[!RFC2119]]</p>
dbaron@6470 740
dbaron@6470 741 <p>Examples in this specification are introduced with the words “for example”
dbaron@6470 742 or are set apart from the normative text with <code>class="example"</code>,
dbaron@6470 743 like this:
dbaron@6470 744
dbaron@6470 745 <div class="example">
dbaron@6470 746 <p>This is an example of an informative example.</p>
dbaron@6470 747 </div>
dbaron@6470 748
dbaron@6470 749 <p>Informative notes begin with the word “Note” and are set apart from the
dbaron@6470 750 normative text with <code>class="note"</code>, like this:
dbaron@6470 751
dbaron@6470 752 <p class="note">Note, this is an informative note.</p>
dbaron@6470 753
dbaron@6470 754 <h3 id="conformance-classes">
dbaron@6470 755 Conformance classes</h3>
dbaron@6470 756
dbaron@6483 757 <p>Conformance to CSS Overflow Module Level 3
dbaron@6470 758 is defined for three conformance classes:
dbaron@6470 759 <dl>
dbaron@6470 760 <dt><dfn title="style sheet!!as conformance class">style sheet</dfn>
dbaron@6470 761 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#style-sheet">CSS
dbaron@6470 762 style sheet</a>.
dbaron@6470 763 <dt><dfn>renderer</dfn></dt>
dbaron@6470 764 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
dbaron@6470 765 that interprets the semantics of a style sheet and renders
dbaron@6470 766 documents that use them.
dbaron@6470 767 <dt><dfn id="authoring-tool">authoring tool</dfn></dt>
dbaron@6470 768 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
dbaron@6470 769 that writes a style sheet.
dbaron@6470 770 </dl>
dbaron@6470 771
dbaron@6483 772 <p>A style sheet is conformant to CSS Overflow Module Level 3
dbaron@6470 773 if all of its statements that use syntax defined in this module are valid
dbaron@6470 774 according to the generic CSS grammar and the individual grammars of each
dbaron@6470 775 feature defined in this module.
dbaron@6470 776
dbaron@6483 777 <p>A renderer is conformant to CSS Overflow Module Level 3
dbaron@6470 778 if, in addition to interpreting the style sheet as defined by the
dbaron@6470 779 appropriate specifications, it supports all the features defined
dbaron@6483 780 by CSS Overflow Module Level 3 by parsing them correctly
dbaron@6470 781 and rendering the document accordingly. However, the inability of a
dbaron@6470 782 UA to correctly render a document due to limitations of the device
dbaron@6470 783 does not make the UA non-conformant. (For example, a UA is not
dbaron@6470 784 required to render color on a monochrome monitor.)
dbaron@6470 785
dbaron@6483 786 <p>An authoring tool is conformant to CSS Overflow Module Level 3
dbaron@6470 787 if it writes style sheets that are syntactically correct according to the
dbaron@6470 788 generic CSS grammar and the individual grammars of each feature in
dbaron@6470 789 this module, and meet all other conformance requirements of style sheets
dbaron@6470 790 as described in this module.
dbaron@6470 791
dbaron@6470 792 <h3 id="partial">
dbaron@6470 793 Partial implementations</h3>
dbaron@6470 794
dbaron@6470 795 <p>So that authors can exploit the forward-compatible parsing rules to
dbaron@6470 796 assign fallback values, CSS renderers <strong>must</strong>
dbaron@6470 797 treat as invalid (and <a href="http://www.w3.org/TR/CSS21/conform.html#ignore">ignore
dbaron@6470 798 as appropriate</a>) any at-rules, properties, property values, keywords,
dbaron@6470 799 and other syntactic constructs for which they have no usable level of
dbaron@6470 800 support. In particular, user agents <strong>must not</strong> selectively
dbaron@6470 801 ignore unsupported component values and honor supported values in a single
dbaron@6470 802 multi-value property declaration: if any value is considered invalid
dbaron@6470 803 (as unsupported values must be), CSS requires that the entire declaration
dbaron@6470 804 be ignored.</p>
dbaron@6470 805
dbaron@6470 806 <h3 id="experimental">
dbaron@6470 807 Experimental implementations</h3>
dbaron@6470 808
dbaron@6470 809 <p>To avoid clashes with future CSS features, the CSS2.1 specification
dbaron@6470 810 reserves a <a href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords">prefixed
dbaron@6470 811 syntax</a> for proprietary and experimental extensions to CSS.
dbaron@6470 812
dbaron@6470 813 <p>Prior to a specification reaching the Candidate Recommendation stage
dbaron@6470 814 in the W3C process, all implementations of a CSS feature are considered
dbaron@6470 815 experimental. The CSS Working Group recommends that implementations
dbaron@6470 816 use a vendor-prefixed syntax for such features, including those in
dbaron@6470 817 W3C Working Drafts. This avoids incompatibilities with future changes
dbaron@6470 818 in the draft.
dbaron@6470 819 </p>
dbaron@6470 820
dbaron@6470 821 <h3 id="testing">
dbaron@6470 822 Non-experimental implementations</h3>
dbaron@6470 823
dbaron@6470 824 <p>Once a specification reaches the Candidate Recommendation stage,
dbaron@6470 825 non-experimental implementations are possible, and implementors should
dbaron@6470 826 release an unprefixed implementation of any CR-level feature they
dbaron@6470 827 can demonstrate to be correctly implemented according to spec.
dbaron@6470 828
dbaron@6470 829 <p>To establish and maintain the interoperability of CSS across
dbaron@6470 830 implementations, the CSS Working Group requests that non-experimental
dbaron@6470 831 CSS renderers submit an implementation report (and, if necessary, the
dbaron@6470 832 testcases used for that implementation report) to the W3C before
dbaron@6470 833 releasing an unprefixed implementation of any CSS features. Testcases
dbaron@6470 834 submitted to W3C are subject to review and correction by the CSS
dbaron@6470 835 Working Group.
dbaron@6470 836
dbaron@6470 837 <p>Further information on submitting testcases and implementation reports
dbaron@6470 838 can be found from on the CSS Working Group's website at
dbaron@6470 839 <a href="http://www.w3.org/Style/CSS/Test/">http://www.w3.org/Style/CSS/Test/</a>.
dbaron@6470 840 Questions should be directed to the
dbaron@6470 841 <a href="http://lists.w3.org/Archives/Public/public-css-testsuite">public-css-testsuite@w3.org</a>
dbaron@6470 842 mailing list.
dbaron@6470 843
dbaron@6470 844 <h3 id="cr-exit-criteria">
dbaron@6470 845 CR exit criteria</h3>
dbaron@6470 846
dbaron@6470 847 <p class=issue>[Change or remove the following CR exit criteria if
dbaron@6470 848 the spec is not a module, but, e.g., a Note or a profile. This text was <a
dbaron@6470 849 href="http://www.w3.org/Style/CSS/Tracker/actions/44"> decided on 2008-06-04.</a>]</p>
dbaron@6470 850
dbaron@6470 851 <p>
dbaron@6470 852 For this specification to be advanced to Proposed Recommendation,
dbaron@6470 853 there must be at least two independent, interoperable implementations
dbaron@6470 854 of each feature. Each feature may be implemented by a different set of
dbaron@6470 855 products, there is no requirement that all features be implemented by
dbaron@6470 856 a single product. For the purposes of this criterion, we define the
dbaron@6470 857 following terms:
dbaron@6470 858
dbaron@6470 859 <dl>
dbaron@6470 860 <dt>independent <dd>each implementation must be developed by a
dbaron@6470 861 different party and cannot share, reuse, or derive from code
dbaron@6470 862 used by another qualifying implementation. Sections of code that
dbaron@6470 863 have no bearing on the implementation of this specification are
dbaron@6470 864 exempt from this requirement.
dbaron@6470 865
dbaron@6470 866 <dt>interoperable <dd>passing the respective test case(s) in the
dbaron@6470 867 official CSS test suite, or, if the implementation is not a Web
dbaron@6470 868 browser, an equivalent test. Every relevant test in the test
dbaron@6470 869 suite should have an equivalent test created if such a user
dbaron@6470 870 agent (UA) is to be used to claim interoperability. In addition
dbaron@6470 871 if such a UA is to be used to claim interoperability, then there
dbaron@6470 872 must one or more additional UAs which can also pass those
dbaron@6470 873 equivalent tests in the same way for the purpose of
dbaron@6470 874 interoperability. The equivalent tests must be made publicly
dbaron@6470 875 available for the purposes of peer review.
dbaron@6470 876
dbaron@6470 877 <dt>implementation <dd>a user agent which:
dbaron@6470 878
dbaron@6470 879 <ol class=inline>
dbaron@6470 880 <li>implements the specification.
dbaron@6470 881
dbaron@6470 882 <li>is available to the general public. The implementation may
dbaron@6470 883 be a shipping product or other publicly available version
dbaron@6470 884 (i.e., beta version, preview release, or “nightly build”).
dbaron@6470 885 Non-shipping product releases must have implemented the
dbaron@6470 886 feature(s) for a period of at least one month in order to
dbaron@6470 887 demonstrate stability.
dbaron@6470 888
dbaron@6470 889 <li>is not experimental (i.e., a version specifically designed
dbaron@6470 890 to pass the test suite and is not intended for normal usage
dbaron@6470 891 going forward).
dbaron@6470 892 </ol>
dbaron@6470 893 </dl>
dbaron@6470 894
dbaron@6470 895 <p>The specification will remain Candidate Recommendation for at least
dbaron@6470 896 six months.
dbaron@6470 897
dbaron@6470 898 <h2 class=no-num id="acknowledgments">
dbaron@6470 899 Acknowledgments</h2>
dbaron@6470 900
dbaron@6470 901 <p>
dbaron@6470 902 Thanks especially to the feedback from
dbaron@6470 903 H&aring;kon Wium Lie,
dbaron@6470 904 Florian Rivoal,
dbaron@6473 905 Alan Stearns,
dbaron@6470 906 and all the rest of the
dbaron@6470 907 <a href="http://lists.w3.org/Archives/Public/www-style/">www-style</a> community.
dbaron@6470 908 </p>
dbaron@6470 909
dbaron@6470 910 <h2 class=no-num id="references">
dbaron@6470 911 References</h2>
dbaron@6470 912
dbaron@6470 913 <h3 class="no-num" id="normative-references">
dbaron@6470 914 Normative references</h3>
dbaron@6470 915 <!--normative-->
dbaron@6470 916
dbaron@6470 917 <h3 class="no-num" id="other-references">
dbaron@6470 918 Other references</h3>
dbaron@6470 919 <!--informative-->
dbaron@6470 920
dbaron@6470 921 <h2 class="no-num" id="index">
dbaron@6470 922 Index</h2>
dbaron@6470 923 <!--index-->
dbaron@6470 924
dbaron@6470 925 <h2 class="no-num" id="property-index">
dbaron@6470 926 Property index</h2>
dbaron@6470 927 <!-- properties -->
dbaron@6470 928
dbaron@6470 929 </body>
dbaron@6470 930 </html>
dbaron@6470 931 <!-- Keep this comment at the end of the file
dbaron@6470 932 Local variables:
dbaron@6470 933 mode: sgml
dbaron@6470 934 sgml-declaration:"~/SGML/HTML4.decl"
dbaron@6470 935 sgml-default-doctype-name:"html"
dbaron@6470 936 sgml-minimize-attributes:t
dbaron@6470 937 sgml-nofill-elements:("pre" "style" "br")
dbaron@6470 938 sgml-live-element-indicator:t
dbaron@6470 939 sgml-omittag:nil
dbaron@6470 940 sgml-shorttag:nil
dbaron@6470 941 sgml-namecase-general:t
dbaron@6470 942 sgml-general-insert-case:lower
dbaron@6470 943 sgml-always-quote-attributes:t
dbaron@6470 944 sgml-indent-step:nil
dbaron@6470 945 sgml-indent-data:t
dbaron@6470 946 sgml-parent-document:nil
dbaron@6470 947 sgml-exposed-tags:nil
dbaron@6470 948 sgml-local-catalogs:nil
dbaron@6470 949 sgml-local-ecat-files:nil
dbaron@6470 950 End:
dbaron@6470 951 -->
dbaron@6470 952

mercurial