Tue, 27 Jan 2015 15:44:28 -0800
[css-overflow] Fix incorrect quoting of 'overflow', 'overflow-x', and 'overflow-y'.
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title>CSS Overflow Module Level 3</title>
6 <link rel=contents href="#contents">
7 <link rel=index href="#index">
8 <link rel="stylesheet" type="text/css" href="../default.css">
9 <link rel="stylesheet" type="text/css"
10 href="http://www.w3.org/StyleSheets/TR/W3C-[STATUS].css">
11 <style>
12 table.source-demo-pair {
13 width: 100%;
14 }
16 .in-cards-demo {
17 width: 13em;
18 height: 8em;
20 padding: 4px;
21 border: medium solid blue;
22 margin: 6px;
24 font: medium/1.3 Times New Roman, Times, serif;
25 white-space: nowrap;
26 }
28 .bouncy-columns-demo {
29 width: 6em;
30 height: 10em;
31 float: left;
32 margin: 1em;
33 font: medium/1.25 Times New Roman, Times, serif;
34 white-space: nowrap;
35 }
36 .bouncy-columns-demo.one {
37 background: aqua; color: black;
38 transform: rotate(-3deg);
39 }
40 .bouncy-columns-demo.two {
41 background: yellow; color: black;
42 transform: rotate(3deg);
43 }
45 .article-font-inherit-demo {
46 font: 1em/1.25 Times New Roman, Times, serif;
47 white-space: nowrap;
48 }
49 .article-font-inherit-demo.one {
50 width: 12em;
51 font-size: 1.5em;
52 margin-bottom: 1em;
53 height: 4em;
54 }
55 .article-font-inherit-demo.two {
56 width: 11em;
57 margin-left: 5em;
58 margin-right: 2em;
59 }
61 .dark-columns-demo {
62 width: 6em;
63 height: 10em;
64 float: left;
65 margin-right: 1em;
66 font: medium/1.25 Times New Roman, Times, serif;
67 white-space: nowrap;
68 }
69 .dark-columns-demo.one {
70 background: aqua; color: black;
71 }
72 .dark-columns-demo.one :link {
73 color: blue;
74 }
75 .dark-columns-demo.one :visited {
76 color: purple;
77 }
78 .dark-columns-demo.two {
79 background: navy; color: white;
80 }
81 .dark-columns-demo.two :link {
82 color: aqua;
83 }
84 .dark-columns-demo.two :visited {
85 color: fuchsia;
86 }
88 .article-max-lines-demo {
89 font: 1em/1.25 Times New Roman, Times, serif;
90 white-space: nowrap;
91 }
92 .article-max-lines-demo.one::first-letter {
93 font-size: 2em;
94 line-height: 0.9;
95 }
96 .article-max-lines-demo.one {
97 font-size: 1.5em;
98 width: 16em;
99 }
100 .article-max-lines-demo.two {
101 width: 11.5em;
102 float: left; margin-right: 1em;
103 }
104 .article-max-lines-demo.three {
105 width: 11.5em;
106 float: left;
107 }
108 </style>
109 </head>
111 <div class="head">
112 <!--logo-->
114 <h1>CSS Overflow Module Level 3</h1>
116 <h2 class="no-num no-toc">[LONGSTATUS] [DATE]</h2>
117 <dl>
118 <dt>This version:
119 <dd><a href="[VERSION]">[VERSION]</a>
121 <dt>Latest version:
122 <dd><a href="http://www.w3.org/TR/css-overflow-3/">http://www.w3.org/TR/css-overflow-3/</a>
124 <dt>Editor's draft:
125 <dd><a href="http://dev.w3.org/csswg/[SHORTNAME]/">http://dev.w3.org/csswg/[SHORTNAME]/</a>
126 (<a href="https://dvcs.w3.org/hg/csswg/log/tip/css-overflow/Overview.src.html">change log</a>,
127 <a href="https://dvcs.w3.org/hg/csswg/log/tip/css3-overflow/Overview.src.html">older change log</a>)
129 <dt>Previous version:
130 <dd><a href="http://www.w3.org/TR/2013/WD-css-overflow-3-20130418/">http://www.w3.org/TR/2013/WD-css-overflow-3-20130418/</a>
132 <dt>Editors:
133 <dd class="h-card vcard">
134 <a class="p-name fn u-url url" rel="author"
135 href="http://dbaron.org/">L. David Baron</a>,
136 <a class="p-org org" href="http://www.mozilla.org/">Mozilla</a>
138 <dt>Issue Tracking:</dt>
139 <dd>Maintained in document (only editor's draft is current)
141 <dt>Feedback:</dt>
142 <dd><a href="mailto:[email protected]?subject=%5Bcss-overflow%5D%20feedback"
143 >[email protected]</a>
144 with subject line “<kbd>[css-overflow]
145 <var>… message topic …</var></kbd>”
146 (<a rel="discussion" href="http://lists.w3.org/Archives/Public/www-style/"
147 >archives</a>)
149 <dt>Test suite:
150 <dd>none yet
151 </dl>
153 <!--copyright-->
155 <hr title="Separator for header">
156 </div>
158 <h2 class="no-num no-toc" id="abstract">Abstract</h2>
160 <p>
161 <a href="http://www.w3.org/TR/CSS/">CSS</a> is
162 a language for describing
163 the rendering of structured documents (such as HTML and XML)
164 on screen, on paper, in speech, etc.
165 This module contains the features of CSS
166 relating to new mechanisms of overflow handling in visual media (e.g., screen or paper).
167 In interactive media,
168 it describes features that allow the overflow
169 from a fixed size container
170 to be handled by pagination (displaying one page at a time).
171 It also describes features, applying to all visual media,
172 that allow the contents of an element
173 to be spread across multiple fragments,
174 allowing the contents to flow across multiple regions
175 or to have different styles for different fragments.
176 </p>
178 <h2 class="no-num no-toc" id="status">Status of this document</h2>
180 <!--status-->
182 <p>The following features are at risk: …
184 <h2 class="no-num no-toc" id="contents">
185 Table of contents</h2>
187 <!--toc-->
189 <h2 id="intro">
190 Introduction</h2>
192 <p>
193 In CSS Level 1 [[CSS1]], placing more content than would fit
194 inside an element with a specified size
195 was generally an authoring error.
196 Doing so caused the content to extend
197 outside the bounds of the element,
198 which would likely cause
199 that content to overlap with other elements.
200 </p>
202 <p>
203 CSS Level 2 [[CSS21]] introduced the 'overflow' property,
204 which allows authors to have overflow be handled by scrolling,
205 which means it is no longer an authoring error.
206 It also allows authors to specify
207 that overflow is handled by clipping,
208 which makes sense when the author's intent
209 is that the content not be shown.
210 </p>
212 <p>
213 However, scrolling is not the only way
214 to present large amounts of content,
215 and may even not be the optimal way.
216 After all, the codex replaced the scroll
217 as the common format for large written works
218 because of its advantages.
219 </p>
221 <p>
222 This specification introduces
223 a mechanism for Web pages to specify
224 that an element of a page should handle overflow
225 through pagination rather than through scrolling.
226 </p>
228 <p>
229 This specification also extends the concept of overflow
230 in another direction.
231 Instead of requiring that authors specify a single area
232 into which the content of an element must flow,
233 this specification allows authors to specify multiple fragments,
234 each with their own dimensions and styles,
235 so that the content of the element can flow from one to the next,
236 using as many as needed to place the content without overflowing.
237 </p>
239 <p>
240 In both of these cases, implementations must
241 break the content in the block-progression dimension.
242 Implementations must do this is described
243 in the CSS Fragmentation Module [[!CSS3-BREAK]].
244 </p>
246 <h2 id="overflow-concepts">Types of overflow</h2>
248 <p>
249 CSS uses the term <dfn>overflow</dfn> to describe
250 the contents of a box
251 that extend outside that one of that box's edges
252 (i.e., its <i>content edge</i>, <i>padding edge</i>,
253 <i>border edge</i>, or <i>margin edge</i>).
254 The overflow might be described as the elements or features
255 that cause this overflow,
256 the non-rectangular region occupied by these features,
257 or, more commonly,
258 as the minimal rectangle that bounds that region.
259 A box's overflow is computed based on the boxes and styles
260 of the box and of all its descendants whose containing block chain
261 <span class="issue">undefined term?</span>
262 includes the box.
263 </p>
265 <p>
266 In most cases, any of these types of overflow
267 can be computed for any box
268 from the bounds and properties of that box,
269 and from the overflow (of that type)
270 of each of its children.
271 However, this is not always the case; for example,
272 when ''transform-style: preserve-3d'' [[CSS3-TRANSFORMS]] is used on
273 some of the children, their descendants with
274 ''transform-style: preserve-3d'' must also be examined.
275 </p>
277 <h3 id="ink-overflow">Ink overflow</h3>
279 <p>
280 The <dfn>ink overflow</dfn> of a box
281 is the part of that box and its contents that
282 creates a visual effect outside of
283 the box's border box.
284 </p>
286 <p>
287 Since some effects in CSS (for example, the blurs in
288 'text-shadow' [[CSS3TEXT]] and 'box-shadow' [[CSS3BG]])
289 do not define what visual extent they cover, the extent
290 of the <i>ink overflow</i> is undefined.
291 </p>
293 <p class="issue">
294 Should we try to define it at all and just leave pieces undefined?
295 </p>
297 <p>
298 The <dfn>ink overflow region</dfn> is the non-rectangular region
299 occupied by the <i>ink overflow</i>, and the
300 <dfn>ink overflow rectangle</dfn> is
301 the minimal rectangle whose axis is aligned to the box's axes
302 and contains the <i>ink overflow region</i>.
303 Note that the <i>ink overflow rectangle</i> is a rectangle
304 in the box's coordinate system, but might be non-rectangular
305 in other coordinate systems due to transforms [[CSS3-TRANSFORMS]].
306 </p>
308 <h3 id="scrollable-overflow">Scrollable overflow</h3>
310 <p>
311 The <dfn>scrollable overflow</dfn> of a box is the
312 set of things extending outside of that box's padding edge
313 for which a scrolling mechanism needs to be provided.
314 </p>
316 <p class="issue">
317 The following definition should be rewritten to use
318 the concept of <a href="http://dev.w3.org/csswg/css-transforms/#3d-rendering-context">3D rendering context</a> [[!CSS3-TRANSFORMS]]
319 and related terms,
320 particularly once those concepts stabilize following changes
321 proposed in the CSS WG meeting on the morning of 2014-01-28.
322 </p>
324 <p>
325 Given the following definitions
326 <span class="issue">which belong in [[CSS3-TRANSFORMS]]</span>:
327 </p>
329 <dl>
330 <dt><dfn>3d-preserving child</dfn></dt>
331 <dd>
332 A child box B of a containing block C is a 3d-preserving
333 child if it has ''transform-style: preserve-3d''
334 and the user-agent is not required to flatten it
335 based on the <a href="http://www.w3.org/TR/css3-transforms/#transform-style-property">requirements</a> in [[!CSS3-TRANSFORMS]].
336 </dt>
337 <dt><dfn>non-3d-preserving child</dfn></dt>
338 <dd>
339 A child C of a box P is a non-3d-preserving-child if
340 it is not a <i>3d-preserving child</i>.
341 </dd>
342 <dt><dfn>3d-preserving descendant</dfn></dt>
343 <dd>
344 Box D is a 3d-preserving descendant of box A if A is
345 an ancestor of D, and D and all of the boxes (if any)
346 in the containing block chain from D to A
347 are <i>3d-preserving child</i> boxes.
348 </dd>
349 </dl>
351 <p>The scrollable overflow of a box is the union of the following things,
352 all adjusted for transforms <span class="issue">undefined concept!</span> into the box's coordinate space:</p>
354 <ul>
355 <li>
356 for the box and all of its <i>3d-preserving descendant</i> boxes:
357 <ul>
358 <li>the box's own padding edge (for the box itself) or border edge (for <i>3d-preserving descendant</i> boxes)</li>
359 <li>the bounds <span class="issue">undefined term!</span> of any text directly in the box</li>
360 <li><span class="issue">MORE HERE!</span>
361 </ul>
362 <li>
363 for all the <i>non-3d-preserving child</i> boxes of the
364 box and its <i>3d-preserving descendant</i> boxes,
365 the scrollable overflow of the box
366 </li>
367 </ul>
369 <p class="issue">
370 I wrote this definition off the top of my head,
371 so it can't possibly be right.
372 It's missing tons of pieces!
373 </p>
375 <p class="issue">
376 The handling of preserve-3d subtrees here is probably wrong;
377 the elements should probably count
378 only towards the overflow of the element that flattens them.
379 </p>
381 <p>
382 The <dfn>scrollable overflow region</dfn> is the non-rectangular region
383 occupied by the <i>scrollable overflow</i>, and the
384 <dfn>scrollable overflow rectangle</dfn> is
385 the minimal rectangle whose axis is aligned to the box's axes
386 and contains the <i>scrollable overflow region</i>.
387 Note that the <i>scrollable overflow rectangle</i> is a rectangle
388 in the box's coordinate system, but might be non-rectangular
389 in other coordinate systems due to transforms [[CSS3-TRANSFORMS]].
390 </p>
392 <h3 id="border-box-overflow">Border box overflow</h3>
394 <p class="issue">
395 This concept has been proposed for some uses, such as for
396 determining what the 'outline' property goes around, and
397 as the basis of a coordinate system for specifying clips and masks,
398 but it's not clear if it's needed.
399 </p>
401 <p>
402 The <dfn>border-box overflow</dfn> of a box is the
403 union of the box's border edge and the border edges of
404 the box's descendants.</p>
405 </p>
407 <p class="issue">
408 If needed, define more formally, as for scrollable overflow above.
409 (Maybe even share the definitions in an appropriate way!)
410 </p>
412 <p>
413 The <dfn>border-box overflow region</dfn> is the non-rectangular region
414 occupied by the <i>border-box overflow</i>, and the
415 <dfn>border-box overflow rectangle</dfn> is
416 the minimal rectangle whose axis is aligned to the box's axes
417 and contains the <i>border-box overflow region</i>.
418 Note that the <i>border-box overflow rectangle</i> is a rectangle
419 in the box's coordinate system, but might be non-rectangular
420 in other coordinate systems due to transforms [[CSS3-TRANSFORMS]].
421 </p>
423 <h2 id="overflow-properties">Overflow properties</h2>
425 <p>
426 The 'overflow-x' property specifies
427 the handling of overflow in the horizontal direction
428 (i.e., overflow from the left and right sides of the box),
429 and the 'overflow-y' property specifies the handling
430 of overflow in the vertical direction
431 (i.e., overflow from the top and bottom sides of the box)
432 </p>
434 <table class=propdef>
435 <tr>
436 <th>Name:
437 <td><dfn>overflow-x</dfn>, <dfn>overflow-y</dfn>
438 <tr>
439 <th><a href="#values">Value</a>:
440 <td>visible | hidden | scroll | auto | paged-x | paged-y | paged-x-controls | paged-y-controls | fragments
441 <tr>
442 <th>Initial:
443 <td>visible
444 <tr>
445 <th>Applies to:
446 <td>block containers [[!CSS21]], flex containers [[!CSS3-FLEXBOX]], and grid containers [[!CSS3-GRID-LAYOUT]]
447 <tr>
448 <th>Inherited:
449 <td>no
450 <tr>
451 <th>Percentages:
452 <td>N/A
453 <tr>
454 <th>Media:
455 <td>visual
456 <tr>
457 <th>Computed value:
458 <td>see below
459 <tr>
460 <th>Animatable:
461 <td>no
462 <tr>
463 <th>Canonical order:
464 <td><abbr title="follows order of property value definition">per grammar</abbr>
465 </table>
467 <p>
468 The 'overflow' property is a shorthand property
469 that sets the specified values of both 'overflow-x' and 'overflow-y'
470 to the value specified for 'overflow'.
471 </p>
473 <table class=propdef>
474 <tr>
475 <th>Name:
476 <td><dfn>overflow</dfn>
477 <tr>
478 <th><a href="#values">Value</a>:
479 <td>visible | hidden | scroll | auto | paged-x | paged-y | paged-x-controls | paged-y-controls | fragments
480 <tr>
481 <th>Initial:
482 <td>see individual properties
483 <tr>
484 <th>Applies to:
485 <td>block containers [[!CSS21]], flex containers [[!CSS3-FLEXBOX]], and grid containers [[!CSS3-GRID-LAYOUT]]
486 <tr>
487 <th>Inherited:
488 <td>no
489 <tr>
490 <th>Percentages:
491 <td>N/A
492 <tr>
493 <th>Media:
494 <td>visual
495 <tr>
496 <th>Computed value:
497 <td>see individual properties
498 <tr>
499 <th>Animatable:
500 <td>no
501 <tr>
502 <th>Canonical order:
503 <td><abbr title="follows order of property value definition">per grammar</abbr>
504 </table>
506 <p>The values of these properties are:</p>
508 <dl>
509 <dt><dfn>visible</dfn>
510 <dd>
511 There is no special handling of overflow, that is, it
512 may be rendered outside the block container.
513 </dd>
514 <dt><dfn>hidden</dfn>
515 <dt><dfn>scroll</dfn>
516 <dt><dfn>auto</dfn>
517 <dd>
518 These values are collectively the <dfn>scrolling values</dfn>;
519 they are defined in the section on
520 <a href="#scrolling-overflow">scrolling and hidden overflow</a>.
521 </dd>
522 <dt><dfn>paged-x</dfn>
523 <dt><dfn>paged-y</dfn>
524 <dt><dfn>paged-x-controls</dfn>
525 <dt><dfn>paged-y-controls</dfn>
526 <dt><dfn>fragments</dfn>
527 <dd>
528 These values are collectively the <dfn>fragmenting values</dfn>;
529 they are defined in the sections on
530 <a href="#paginated-overflow">paginated overflow</a> and
531 <a href="#fragment-overflow">fragment overflow</a>.
532 </dd>
533 </dl>
535 <div id="overflow-computed-values">
536 <p>The computed values of 'overflow-x' and 'overflow-y'
537 are determined from the cascaded values [[!CSS3CASCADE]]
538 based on the following rules:</p>
540 <ol>
541 <li>
542 If one or both of the cascaded values are
543 <i>fragmenting values</i>, then:
544 <ol>
545 <li>
546 If one of the cascaded values is one of the
547 <i>fragmenting values</i>
548 and the other is not,
549 then the computed values are
550 the same as the cascaded values.
551 </li>
552 <li>
553 If both of the cascaded values are <i>fragmenting values</i>, then:
554 <ol>
555 <li>
556 for horizontal writing mode [[!CSS3-WRITING-MODES]],
557 the computed value for 'overflow-y' is the cascaded value
558 and the computed value for 'overflow-x' is ''hidden'', or
559 </li>
560 <li>
561 for vertical writing mode [[!CSS3-WRITING-MODES]],
562 the computed value for 'overflow-x' is the cascaded value
563 and the computed value for 'overflow-y' is ''hidden''.
564 </li>
565 </ol>
566 </li>
567 </ol>
568 </li>
569 <li>
570 Otherwise, if one cascaded values is
571 one of the <i>scrolling values</i>
572 and the other is ''visible'',
573 then computed values are the cascaded values
574 with ''visible'' changed to ''auto''.
575 </li>
576 <li>
577 Otherwise, the computed values are as specified.
578 </li>
579 </ol>
580 </div>
582 <p class="issue">
583 Are all 4 of the ''paged-*'' values really needed?
584 </p>
586 <p>
587 When the <i>fragmenting values</i> are used,
588 the overflow from the fragments themselves
589 treats the fragmenting value as ''hidden''.
590 <span class="issue">Is this the right behavior?</span>
591 <span class="issue">Give example.</span>
592 </p>
594 <p class="issue">
595 [[CSS3-MARQUEE]] describes an 'overflow-style' property,
596 but it has not picked up implementation experience
597 that the working group is aware of.
598 Should this document treat 'overflow-style' as a defunct proposal,
599 or should this document describe the 'overflow-style' property
600 and attempt to revive it,
601 despite that implementations have implemented
602 'overflow-x' and 'overflow-y' instead?
603 </p>
605 <p class="issue">
606 There are <a href="http://lists.w3.org/Archives/Public/www-style/2012May/1197.html">discussions</a>
607 about how overflow, overflow-style, overflow-x and overflow-y
608 should work and interact with each other.
609 Until consensus on this topic is reached,
610 it is not completely clear which of these
611 should be used for
612 paged-x | paged-y | paged-x-controls | paged-y-controls | fragments
613 </p>
615 <h2 id="scrolling-overflow">Scrolling and hidden overflow</h2>
617 <p class="issue">
618 Move material from [[CSS21]] and [[CSS3BOX]] here.
619 </p>
621 <p class="issue">
622 Explain which directions allow scrolling and which don't,
623 as a function of 'direction'
624 (including propagation of 'direction' to the ICB).
625 </p>
627 <h2 id="paginated-overflow">Paginated overflow</h2>
629 <p class="issue">overflow:paginate or overflow:pages (or paged-x, paged-y, paged-x-controls, paged-y-controls as [[CSS3GCPM]] has?)</p>
631 <p class="issue">Ability to display N pages at once
632 rather than just one page at once?</p>
634 <p class="issue">
635 The current implementation of paginated overflow uses
636 the 'overflow'/'overflow-x'/'overflow-y' properties
637 rather than the 'overflow-style' property as proposed
638 in the [[CSS3GCPM]] draft
639 (which also matches the [[CSS3-MARQUEE]] proposal).
640 We should probably switch away from 'overflow-style',
641 but that's not 100% clear.
642 </p>
644 <h2 id="fragment-overflow">Fragment overflow</h2>
646 <p>
647 This section introduces and defines the meaning of
648 the new ''fragments'' value of the 'overflow' property.
649 </p>
651 <p>
652 When the computed value of 'overflow' for an element is ''fragments'',
653 and implementations would otherwise have created a box for the element,
654 then implementations must create a sequence of <dfn>fragment box</dfn>es
655 for that element.
656 (It is possible for an element with ''overflow: fragments''
657 to generate only one <i>fragment box</i>.
658 However, if an element's computed 'overflow' is not ''fragments'',
659 then its box is not a <i>fragment box</i>.)
660 Every <i>fragment box</i> is a fragmentation container,
661 and any overflow
662 that would cause that fragmentation container to fragment
663 causes another <i>fragment box</i> created as a next sibling
664 of the previous one.
665 <span class="issue">Or is it as though it's a next sibling of
666 the element? Need to figure out exactly how this interacts with
667 other box-level fixup.</span>
668 Additionally, if the <i>fragment box</i> is also
669 a multi-column box (as defined in [[!CSS3COL]]
670 <span class="issue">though it defines <i>multi-column element</i></span>)
671 any content that would lead to the creation of <i>overflow columns</i> [[!CSS3COL]]
672 instead is flown into an additional fragment box.
673 However, fragment boxes may themselves be broken
674 (due to fragmentation in a fragmentation context outside of them,
675 such as pages, columns, or other fragment boxes);
676 such breaking leads to fragments of the same fragment box
677 rather than multiple fragment boxes.
678 (This matters because fragment boxes may be styled by their index;
679 such breaking leads to multiple fragments of a fragment box
680 with a single index.
681 This design choice is so that
682 breaking a fragment box across pages does not break
683 the association of indices to particular pieces of content.)
684 <span class="issue">Should a forced break that breaks to
685 an outer fragmentation context cause a new fragment of a single
686 fragment box or a new fragment box?</span>
687 <span class="issue">Should we find a term other than
688 <i>fragment box</i> here to make this a little less confusing?</span>
689 </p>
691 <p class="issue">
692 What if we want to be able to style the pieces of an element
693 split within another type of fragmentation context?
694 These rules prevent ever using ''::nth-fragment()'' for that,
695 despite that the name seems the most logical name for such a feature.
696 </p>
698 <div class="example">
699 <table class="source-demo-pair"><tr><td><pre><!DOCTYPE HTML>
700 <title>Breaking content into
701 equal-sized cards</title>
702 <style>
703 .in-cards {
704 overflow: fragments;
706 width: 13em;
707 height: 8em;
709 padding: 4px;
710 border: medium solid blue;
711 margin: 6px;
713 font: medium/1.3 Times New
714 Roman, Times, serif;
715 }
716 </style>
717 <div class="in-cards">
718 In this example, the text in the div
719 is broken into a series of cards.
720 These cards all have the same style.
721 The presence of enough content to
722 overflow one of the cards causes
723 another one to be created. The second
724 card is created just like it's the
725 next sibling of the first.
726 </div></pre></td><td>
727 <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>
728 <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>
729 </td></tr></table>
730 </div>
732 <p class="issue">
733 We should specify that ''overflow: fragments'' does not apply
734 to at least some table parts,
735 and perhaps other elements as well.
736 We need to determine exactly which ones.
737 </p>
739 <p class="issue">
740 This specification needs to say which type of
741 fragmentation context is created
742 so that it's clear which values of the 'break-*' properties
743 cause breaks within this context.
744 We probably want ''break-*: region'' to apply.
745 </p>
747 <p class="issue">
748 This specification needs a processing model
749 that will apply in cases where the layout containing the
750 fragments has characteristics that use the intrinsic size of the fragments
751 to change the amount of space available for them,
752 such as [[CSS3-GRID-LAYOUT]].
753 There has already been some work on such a processing model
754 in [[CSS3-REGIONS]],
755 and the work done on a model there,
756 and the editors of that specification,
757 should inform what happens in this specification.
758 </p>
760 <h3 id="fragment-styling">Fragment styling</h3>
762 <h4 id="fragment-pseudo-element">The ::nth-fragment() pseudo-element</h4>
764 <p>
765 The ::nth-fragment() pseudo-element is a pseudo-element
766 that describes some of the <i>fragment box</i>es generated by an element.
767 The argument to the pseudo-element takes the same syntax
768 as the argument to the :nth-child() pseudo-class
769 defined in [[!SELECT]], and has the same meaning
770 except that the number is relative to
771 <i>fragment box</i>es generated by the element
772 instead of siblings of the element.
773 </p>
775 <p class="note">
776 Selectors that allow addressing fragments
777 by counting from the end rather than the start
778 are intentionally not provided.
779 Such selectors would interfere with determining
780 the number of fragments.
781 </p>
783 <p class="issue">
784 Depending on future discussions,
785 this ''::nth-fragment(<var>an+b</var>)'' syntax
786 may be replaced with
787 the new ''::fragment:nth(<var>an+b</var>)'' syntax.
788 </p>
790 <h4 id="style-of-fragments">Styling of fragments</h4>
792 <p class="issue">
793 Should this apply to fragment overflow only,
794 or also to paginated overflow?
795 (If it applies,
796 then stricter property restrictions would be needed
797 for paginated overflow.)
798 </p>
800 <p>
801 In the absence of rules with ''::nth-fragment()'' pseudo-elements,
802 the computed style for each <i>fragment box</i>
803 is the computed style for the element
804 for which the <i>fragment box</i> was created.
805 However, the style for a <i>fragment box</i> is also influenced
806 by rules whose selector's <i>subject</i> [[!SELECT]]
807 has an ''::nth-fragment()'' pseudo-element,
808 if the 1-based number of the <i>fragment box</i> matches
809 that ''::nth-fragment()'' pseudo-element
810 and the selector (excluding the ''::nth-fragment()'' pseudo-element)
811 matches the element generating the fragments.
812 </p>
814 <p>
815 When determining the style of the <i>fragment box</i>,
816 these rules that match the fragment pseudo-element
817 cascade together with the rules that match the element,
818 with the fragment pseudo-element adding the specificity
819 of a pseudo-class to the specificity calculation.
820 <span class="issue">Does this need to be specified in
821 the cascading module as well?</span>
822 </p>
824 <div class="example">
825 <table class="source-demo-pair"><tr><td><pre><!DOCTYPE HTML>
826 <style>
827 .bouncy-columns {
828 overflow: fragments;
829 width: 6em;
830 height: 10em;
831 float: left;
832 margin: 1em;
833 font: medium/1.25 Times New
834 Roman, Times, serif;
835 }
836 .bouncy-columns::nth-fragment(1) {
837 background: aqua; color: black;
838 transform: rotate(-3deg);
839 }
840 .bouncy-columns::nth-fragment(2) {
841 background: yellow; color: black;
842 transform: rotate(3deg);
843 }
844 </style>
845 <div class="bouncy-columns">
846 <i>...</i>
847 </div></pre></td><td>
848 <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>
849 <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>
850 <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>
851 </td></tr></table>
852 </div>
854 <p>
855 Styling an ''::nth-fragment()'' pseudo-element with the 'overflow'
856 property does take effect;
857 if a <i>fragment box</i> has a
858 computed value of 'overflow' other than ''fragments''
859 then that fragment box is the last fragment.
860 However, overriding 'overflow' on the first fragment
861 does not cause the <i>fragment box</i> not to exist;
862 whether there are fragment boxes at all is determined by
863 the computed value of overflow for the element.
864 <span class="issue">Need to reword this to refer to the
865 appropriate choice of 'overflow-x' or 'overflow-y',
866 and then point to rule about the handling of the other one
867 of 'overflow-x' or 'overflow-y'.</span>
868 </p>
870 <p>
871 Styling an ''::nth-fragment()'' pseudo-element with the 'content'
872 property has no effect;
873 the computed value of 'content' for the fragment box
874 remains the same as the computed value of content for the element.
875 </p>
877 <p>
878 Specifying ''display: none'' for a <i>fragment box</i> causes
879 the fragment box with that index not to be generated.
880 However, in terms of the indices
881 used for matching ''::nth-fragment()'' pseudo-elements
882 of later fragment boxes,
883 it still counts as though it was generated.
884 However, since it is not generated, it does not contain any content.
885 </p>
887 <p>
888 Specifying other values of 'display', 'position',
889 or 'float' is permitted, but is not allowed to change
890 the computed value of 'display-inside'.
891 (Since 'overflow', 'overflow-x', and 'overflow-y' only
892 apply to block containers, flex containers, and grid containers
893 the computed value of 'display-inside' is always
894 ''block'', ''flex'' or ''grid''.
895 <span class="issue">Need to specify exactly how this works,
896 but it depends on
897 having 'display-inside' and 'display-outside' specified.</span>
898 </p>
900 <p>
901 To match the model for other pseudo-elements
902 where the pseudo-elements live inside their corresponding element,
903 declarations in ''::nth-fragment()'' pseudo-elements override
904 declarations in rules without the pseudo-element.
905 The relative priority within such declarations is determined
906 by normal cascading order (see [[!CSS21]]).
907 </p>
909 <p>
910 Styles specified on ''::nth-fragment()'' pseudo-elements
911 do affect inheritance to content within the <i>fragment box</i>.
912 In other words, the content within the <i>fragment box</i> must
913 inherit from the fragment box's style (i.e., the pseudo-element style)
914 rather than directly from the element.
915 This means that elements split between fragment boxes may
916 have different styles for different parts of the element.
917 </p>
919 <p class="issue">
920 This inheritance rule allows specifying styles indirectly
921 (by using explicit ''inherit'' or using default inheritance
922 on properties that don't apply to '':first-letter'')
923 that can't be specified directly
924 (based on the rules in the next section).
925 This is a problem.
926 The restrictions that apply to styling inside fragments
927 should also apply to inheritance from fragments.
928 </p>
930 <div class="example">
931 <table class="source-demo-pair"><tr><td><pre><!DOCTYPE HTML>
932 <style>
933 .article {
934 overflow: fragments;
935 }
936 .article::nth-fragment(1) {
937 font-size: 1.5em;
938 margin-bottom: 1em;
939 height: 4em;
940 }
941 .article::nth-fragment(2) {
942 margin-left: 5em;
943 margin-right: 2em;
944 }
945 </style>
946 <div class="article">
947 The <code>font-size</code> property<i>...</i>
948 </div></pre></td><td>
949 <div class="article-font-inherit-demo one">The <code>font-size</code> property<br>specified on the fragment<br>is inherited into the</div>
950 <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>
951 </td></tr></table>
952 </div>
954 <h4 id="style-in-fragments">Styling inside fragments</h4>
956 <p class="issue">
957 Should this apply to fragment overflow only,
958 or also to paginated overflow,
959 or even to pagination across pages?
960 </p>
962 <p>
963 The ''::nth-fragment()'' pseudo-element
964 can also be used to style
965 content inside of a <i>fragment box</i>.
966 Unlike the ''::first-line'' and ''::first-letter'' pseudo-elements,
967 the ''::nth-fragment()'' pseudo-element can be applied
968 to parts of the selector other than the subject:
969 in particular, it can match ancestors of the subject.
970 However, the only CSS properties applied
971 by rules with such selectors
972 are those that apply
973 to the ''::first-letter'' pseudo-element.
974 </p>
976 <p>
977 To be more precise,
978 when a rule's selector has ''::nth-fragment()'' pseudo-elements
979 attached to parts of the selector other than the subject,
980 the declarations in that rule apply to
981 a fragment (or pseudo-element thereof) when:
982 </p>
983 <ol>
984 <li>
985 the declarations are for properties that apply to the
986 ''::first-letter'' pseudo-element,
987 </li>
988 <li>
989 the declarations would apply to
990 that fragment (or pseudo-element thereof)
991 had those ''::nth-fragment()'' pseudo-elements been removed,
992 with a particular association between
993 each sequence of simple selectors and the element it matched,
994 and
995 </li>
996 <li>
997 for each removed ''::nth-fragment()'' pseudo-element,
998 the fragment lives within a <i>fragment box</i>
999 of the element associated in that association
1000 with the selector that the pseudo-element was attached to,
1001 and whose index matches the pseudo-element.
1002 </li>
1003 </ol>
1005 <div class="example">
1006 <table class="source-demo-pair"><tr><td><pre><!DOCTYPE HTML>
1007 <style>
1008 .dark-columns {
1009 overflow: fragments;
1010 width: 6em;
1011 height: 10em;
1012 float: left;
1013 margin-right: 1em;
1014 font: medium/1.25 Times New
1015 Roman, Times, serif;
1016 }
1017 .dark-columns::nth-fragment(1) {
1018 background: aqua; color: black;
1019 }
1020 .dark-columns::nth-fragment(1) :link {
1021 color: blue;
1022 }
1023 .dark-columns::nth-fragment(1) :visited {
1024 color: purple;
1025 }
1026 .dark-columns::nth-fragment(2) {
1027 background: navy; color: white;
1028 }
1029 .dark-columns::nth-fragment(2) :link {
1030 color: aqua;
1031 }
1032 .dark-columns::nth-fragment(2) :visited {
1033 color: fuchsia;
1034 }
1035 </style>
1036 <div class="dark-columns">
1037 <i>...</i>
1038 </div></pre></td><td>
1039 <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>
1040 <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>
1041 </td></tr></table>
1042 </div>
1045 <h3 id="max-lines">The 'max-lines' property</h3>
1047 <p>
1048 Authors may wish to style the opening lines of an element
1049 with different styles
1050 by putting those opening lines in a separate fragment.
1051 However, since it may be difficult to predict the exact height
1052 occupied by those lines
1053 in order to restrict the first fragment to that height,
1054 this specification introduces a 'max-lines' property
1055 that forces a fragment to break
1056 after a specified number of lines.
1057 This forces a break after the given number of lines
1058 contained within the element or its descendants,
1059 as long as those lines are in the same block formatting context.
1060 </p>
1062 <table class=propdef>
1063 <tr>
1064 <th>Name:
1065 <td><dfn>max-lines</dfn>
1066 <tr>
1067 <th><a href="#values">Value</a>:
1068 <td>none | <integer>
1069 <tr>
1070 <th>Initial:
1071 <td>none
1072 <tr>
1073 <th>Applies to:
1074 <td>fragment boxes
1075 <tr>
1076 <th>Inherited:
1077 <td>no
1078 <tr>
1079 <th>Animatable:
1080 <td>as <a href="http://www.w3.org/TR/css3-transitions/#animatable-types">integer</a>
1081 <tr>
1082 <th>Percentages:
1083 <td>N/A
1084 <tr>
1085 <th>Media:
1086 <td>visual
1087 <tr>
1088 <th>Computed value:
1089 <td>specified value
1090 <tr>
1091 <th>Canonical order:
1092 <td><abbr title="follows order of property value definition">per grammar</abbr>
1093 </table>
1095 <dl>
1096 <dt>none
1097 <dd>
1098 <p>
1099 Breaks occur only as specified elsewhere.
1100 </p>
1101 </dd>
1103 <dt><integer>
1104 <dd>
1105 <p>
1106 In addition to any breaks specified elsewhere,
1107 a break is forced before any line that would exceed
1108 the given number of lines
1109 being placed inside the element
1110 (excluding lines that are in
1111 a different block formatting context from
1112 the block formatting context to which
1113 an unstyled child of the element would belong).
1114 </p>
1116 <p class="issue">
1117 If there are multiple boundaries between this line
1118 and the previous, where exactly (in terms of element
1119 boundaries) is the break forced?
1120 </p>
1122 <p>
1123 Only positive integers are accepted.
1124 Zero or negative integers are a parse error.
1125 </p>
1126 </dd>
1127 </dl>
1129 <p class="issue">Should this apply to fragment overflow only, or also
1130 to pagination?</p>
1132 <div class="example">
1133 <table class="source-demo-pair"><tr><td><pre><!DOCTYPE HTML>
1134 <style>
1135 .article {
1136 overflow: fragments;
1137 }
1138 .article::first-letter {
1139 font-size: 2em;
1140 line-height: 0.9;
1141 }
1142 .article::nth-fragment(1) {
1143 font-size: 1.5em;
1144 max-lines: 3;
1145 }
1146 .article::nth-fragment(2) {
1147 column-count: 2;
1148 }
1149 </style>
1150 <div class="article">
1151 <i>...</i>
1152 </div></pre></td><td>
1153 <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>
1154 <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>
1155 <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>
1156 </td></tr></table>
1157 </div>
1159 <h2 id="static-media">Overflow in static media</h2>
1161 <p class="issue">
1162 This specification should define useful behavior
1163 for all values of 'overflow'
1164 in static media (such as print).
1165 Current implementation behavior is quite poor and
1166 produces unexpected results when authors have not considered
1167 what will happen when
1168 the content they produce for interactive media
1169 is printed.
1170 </p>
1172 <h2 id="conformance">
1173 Conformance</h2>
1175 <h3 id="placement">
1176 Module interactions</h3>
1178 <p>This module extends the 'overflow'
1179 feature defined in [[CSS21]] section 11.1.1. It defines additional
1180 overflow handling mechanisms that implementations must implement as
1181 described in this module in order to conform to this module.</p>
1183 <p>No properties in this module apply to the <code>::first-line</code> or
1184 <code>::first-letter</code> pseudo-elements.</p>
1186 <h3 id="values">
1187 Values</h3>
1189 <p>This specification follows the
1190 <a href="http://www.w3.org/TR/CSS21/about.html#property-defs">CSS property
1191 definition conventions</a> from [[!CSS21]]. Value types not defined in
1192 this specification are defined in CSS Level 2 Revision 1 [[!CSS21]].
1193 Other CSS modules may expand the definitions of these value types: for
1194 example [[CSS3COLOR]], when combined with this module, expands the
1195 definition of the <color> value type as used in this specification.</p>
1197 <p>In addition to the property-specific values listed in their definitions,
1198 all properties defined in this specification also accept the
1199 <a href="http://www.w3.org/TR/CSS21/cascade.html#value-def-inherit">inherit</a>
1200 keyword as their property value. For readability it has not been repeated
1201 explicitly.
1204 <h3 id="conventions">
1205 Document conventions</h3>
1207 <p>Conformance requirements are expressed with a combination of
1208 descriptive assertions and RFC 2119 terminology. The key words âMUSTâ,
1209 âMUST NOTâ, âREQUIREDâ, âSHALLâ, âSHALL NOTâ, âSHOULDâ, âSHOULD NOTâ,
1210 âRECOMMENDEDâ, âMAYâ, and âOPTIONALâ in the normative parts of this
1211 document are to be interpreted as described in RFC 2119.
1212 However, for readability, these words do not appear in all uppercase
1213 letters in this specification.
1215 <p>All of the text of this specification is normative except sections
1216 explicitly marked as non-normative, examples, and notes. [[!RFC2119]]</p>
1218 <p>Examples in this specification are introduced with the words âfor exampleâ
1219 or are set apart from the normative text with <code>class="example"</code>,
1220 like this:
1222 <div class="example">
1223 <p>This is an example of an informative example.</p>
1224 </div>
1226 <p>Informative notes begin with the word âNoteâ and are set apart from the
1227 normative text with <code>class="note"</code>, like this:
1229 <p class="note">Note, this is an informative note.</p>
1231 <h3 id="conformance-classes">
1232 Conformance classes</h3>
1234 <p>Conformance to CSS Overflow Module Level 3
1235 is defined for three conformance classes:
1236 <dl>
1237 <dt><dfn title="style sheet!!as conformance class">style sheet</dfn>
1238 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#style-sheet">CSS
1239 style sheet</a>.
1240 <dt><dfn>renderer</dfn></dt>
1241 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
1242 that interprets the semantics of a style sheet and renders
1243 documents that use them.
1244 <dt><dfn id="authoring-tool">authoring tool</dfn></dt>
1245 <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
1246 that writes a style sheet.
1247 </dl>
1249 <p>A style sheet is conformant to CSS Overflow Module Level 3
1250 if all of its statements that use syntax defined in this module are valid
1251 according to the generic CSS grammar and the individual grammars of each
1252 feature defined in this module.
1254 <p>A renderer is conformant to CSS Overflow Module Level 3
1255 if, in addition to interpreting the style sheet as defined by the
1256 appropriate specifications, it supports all the features defined
1257 by CSS Overflow Module Level 3 by parsing them correctly
1258 and rendering the document accordingly. However, the inability of a
1259 UA to correctly render a document due to limitations of the device
1260 does not make the UA non-conformant. (For example, a UA is not
1261 required to render color on a monochrome monitor.)
1263 <p>An authoring tool is conformant to CSS Overflow Module Level 3
1264 if it writes style sheets that are syntactically correct according to the
1265 generic CSS grammar and the individual grammars of each feature in
1266 this module, and meet all other conformance requirements of style sheets
1267 as described in this module.
1269 <h3 id="partial">
1270 Partial implementations</h3>
1272 <p>So that authors can exploit the forward-compatible parsing rules to
1273 assign fallback values, CSS renderers <strong>must</strong>
1274 treat as invalid (and <a href="http://www.w3.org/TR/CSS21/conform.html#ignore">ignore
1275 as appropriate</a>) any at-rules, properties, property values, keywords,
1276 and other syntactic constructs for which they have no usable level of
1277 support. In particular, user agents <strong>must not</strong> selectively
1278 ignore unsupported component values and honor supported values in a single
1279 multi-value property declaration: if any value is considered invalid
1280 (as unsupported values must be), CSS requires that the entire declaration
1281 be ignored.</p>
1283 <h3 id="experimental">
1284 Experimental implementations</h3>
1286 <p>To avoid clashes with future CSS features, the CSS2.1 specification
1287 reserves a <a href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords">prefixed
1288 syntax</a> for proprietary and experimental extensions to CSS.
1290 <p>Prior to a specification reaching the Candidate Recommendation stage
1291 in the W3C process, all implementations of a CSS feature are considered
1292 experimental. The CSS Working Group recommends that implementations
1293 use a vendor-prefixed syntax for such features, including those in
1294 W3C Working Drafts. This avoids incompatibilities with future changes
1295 in the draft.
1296 </p>
1298 <h3 id="testing">
1299 Non-experimental implementations</h3>
1301 <p>Once a specification reaches the Candidate Recommendation stage,
1302 non-experimental implementations are possible, and implementors should
1303 release an unprefixed implementation of any CR-level feature they
1304 can demonstrate to be correctly implemented according to spec.
1306 <p>To establish and maintain the interoperability of CSS across
1307 implementations, the CSS Working Group requests that non-experimental
1308 CSS renderers submit an implementation report (and, if necessary, the
1309 testcases used for that implementation report) to the W3C before
1310 releasing an unprefixed implementation of any CSS features. Testcases
1311 submitted to W3C are subject to review and correction by the CSS
1312 Working Group.
1314 <p>Further information on submitting testcases and implementation reports
1315 can be found from on the CSS Working Group's website at
1316 <a href="http://www.w3.org/Style/CSS/Test/">http://www.w3.org/Style/CSS/Test/</a>.
1317 Questions should be directed to the
1318 <a href="http://lists.w3.org/Archives/Public/public-css-testsuite">[email protected]</a>
1319 mailing list.
1321 <h3 id="cr-exit-criteria">
1322 CR exit criteria</h3>
1324 <p class=issue>[Change or remove the following CR exit criteria if
1325 the spec is not a module, but, e.g., a Note or a profile. This text was <a
1326 href="http://www.w3.org/Style/CSS/Tracker/actions/44"> decided on 2008-06-04.</a>]</p>
1328 <p>
1329 For this specification to be advanced to Proposed Recommendation,
1330 there must be at least two independent, interoperable implementations
1331 of each feature. Each feature may be implemented by a different set of
1332 products, there is no requirement that all features be implemented by
1333 a single product. For the purposes of this criterion, we define the
1334 following terms:
1336 <dl>
1337 <dt>independent <dd>each implementation must be developed by a
1338 different party and cannot share, reuse, or derive from code
1339 used by another qualifying implementation. Sections of code that
1340 have no bearing on the implementation of this specification are
1341 exempt from this requirement.
1343 <dt>interoperable <dd>passing the respective test case(s) in the
1344 official CSS test suite, or, if the implementation is not a Web
1345 browser, an equivalent test. Every relevant test in the test
1346 suite should have an equivalent test created if such a user
1347 agent (UA) is to be used to claim interoperability. In addition
1348 if such a UA is to be used to claim interoperability, then there
1349 must one or more additional UAs which can also pass those
1350 equivalent tests in the same way for the purpose of
1351 interoperability. The equivalent tests must be made publicly
1352 available for the purposes of peer review.
1354 <dt>implementation <dd>a user agent which:
1356 <ol class=inline>
1357 <li>implements the specification.
1359 <li>is available to the general public. The implementation may
1360 be a shipping product or other publicly available version
1361 (i.e., beta version, preview release, or ânightly buildâ).
1362 Non-shipping product releases must have implemented the
1363 feature(s) for a period of at least one month in order to
1364 demonstrate stability.
1366 <li>is not experimental (i.e., a version specifically designed
1367 to pass the test suite and is not intended for normal usage
1368 going forward).
1369 </ol>
1370 </dl>
1372 <p>The specification will remain Candidate Recommendation for at least
1373 six months.
1375 <h2 class=no-num id="acknowledgments">
1376 Acknowledgments</h2>
1378 <p>
1379 Thanks especially to the feedback from
1380 Rossen Atanassov,
1381 Bert Bos,
1382 Tantek Ãelik,
1383 John Daggett,
1384 fantasai,
1385 Daniel Glazman,
1386 Vincent Hardy,
1387 Håkon Wium Lie,
1388 Peter Linss,
1389 Robert O'Callahan,
1390 Florian Rivoal,
1391 Alan Stearns,
1392 Steve Zilles,
1393 and all the rest of the
1394 <a href="http://lists.w3.org/Archives/Public/www-style/">www-style</a> community.
1395 </p>
1397 <h2 class=no-num id="references">
1398 References</h2>
1400 <h3 class="no-num" id="normative-references">
1401 Normative references</h3>
1402 <!--normative-->
1404 <h3 class="no-num" id="other-references">
1405 Other references</h3>
1406 <!--informative-->
1408 <h2 class="no-num" id="index">
1409 Index</h2>
1410 <!--index-->
1412 <h2 class="no-num" id="property-index">
1413 Property index</h2>
1414 <!-- properties -->
1416 </body>
1417 </html>
1418 <!-- Keep this comment at the end of the file
1419 Local variables:
1420 mode: sgml
1421 sgml-declaration:"~/SGML/HTML4.decl"
1422 sgml-default-doctype-name:"html"
1423 sgml-minimize-attributes:t
1424 sgml-nofill-elements:("pre" "style" "br")
1425 sgml-live-element-indicator:t
1426 sgml-omittag:nil
1427 sgml-shorttag:nil
1428 sgml-namecase-general:t
1429 sgml-general-insert-case:lower
1430 sgml-always-quote-attributes:t
1431 sgml-indent-step:nil
1432 sgml-indent-data:t
1433 sgml-parent-document:nil
1434 sgml-exposed-tags:nil
1435 sgml-local-catalogs:nil
1436 sgml-local-ecat-files:nil
1437 End:
1438 -->