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