css3-exclusions/Overview.html

Thu, 12 Apr 2012 12:57:08 -0700

author
Vincent Hardy <vhardy@adobe.com>
date
Thu, 12 Apr 2012 12:57:08 -0700
changeset 5468
757d9e99cd55
parent 5466
fb0270eb9aa2
child 5488
d3306d846020
permissions
-rw-r--r--

Added note about animated images, as per https://www.w3.org/Style/CSS/Tracker/actions/441

rossen@3655 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
vhardy@2780 2 "http://www.w3.org/TR/html4/strict.dtd">
vhardy@2780 3
rossen@3643 4 <html lang=en>
rossen@3643 5 <head profile="http://www.w3.org/2006/03/hcard"><meta
rossen@3643 6 content="text/html; charset=utf-8" http-equiv=Content-Type>
vhardy@2780 7
vhardy@4057 8 <title>CSS Exclusions and Shapes Module Level 3</title>
vhardy@4680 9 <link href="../default.css" rel=stylesheet type="text/css">
rossen@3643 10
rossen@3643 11 <style type="text/css">
vhardy@3732 12
vhardy@3732 13 /* Alternate stylesheet fonts are here because in some browsers (Opera 11.5) */
vhardy@3732 14 /* The fonts are not applied if only loaded from the alternate stylesheet */
vhardy@4045 15
vhardy@4045 16 /* License font the following two fonts: fonts/Droid-Serif-fontfacekit/Google Android License.txt */
vhardy@4045 17 @import url(fonts/Droid-Serif-fontfacekit/stylesheet.css);
vhardy@4045 18 @import url(fonts/Droid-Sans-Mono-fontfacekit/stylesheet.css);
vhardy@3732 19
rossen@3643 20 .singleImgExample {
rossen@3643 21 display: block;
rossen@3643 22 margin: auto;
rossen@3643 23 }
rossen@3643 24
rossen@3643 25 .example-table {
rossen@3643 26 table-layout: fixed;
rossen@3643 27 width: 100%;
rossen@3643 28 }
rossen@3643 29
rossen@3643 30 .example-table tr td img {
rossen@3643 31 width: 90%;
rossen@3643 32 }
rossen@4463 33
rossen@4463 34 @media screen and (min-width: 68em){
rossen@4463 35 .issue-marker {
rossen@4463 36 position: absolute;
rossen@4463 37 width: 20ex;
rossen@4463 38 margin-left: -22ex;
rossen@4463 39 text-align: right;
rossen@4463 40 margin-bottom: 1em;
rossen@4463 41 }
rossen@4463 42
rossen@4463 43 div.issue-marker .issue-marker {
rossen@4463 44 position: static;
rossen@4463 45 width: auto;
rossen@4463 46 margin-left: 0;
rossen@4463 47 text-align: right;
rossen@4463 48 }
rossen@4463 49
rossen@4463 50 div.issue-marker {
rossen@4463 51 position: absolute;
rossen@4463 52 width: 20ex;
rossen@4463 53 margin-left: -22ex;
rossen@4463 54 }
vhardy@3659 55 }
vhardy@3659 56
rossen@4463 57 @media screen and (max-width: 68em){
rossen@4463 58 .issue-marker {
rossen@4463 59 margin-bottom: 1em;
rossen@4463 60 }
rossen@4463 61
rossen@4463 62 .issue-marker a:link {
rossen@4463 63 padding-left: 0.5em;
rossen@4463 64 }
rossen@4463 65 }
rossen@4463 66
rossen@4463 67 .issue-marker {
rossen@4463 68 background:#eee;
rossen@4463 69 border:1px solid #ddd;
rossen@4463 70 font-size: 1em;
rossen@4463 71 }
rossen@4463 72
rossen@4463 73 .issue-marker.wrapper {
rossen@4463 74 background: none;
rossen@4463 75 border: none;
rossen@4463 76 }
rossen@4463 77
rossen@4463 78 .issue-marker a:link {
rossen@4463 79 color: #c00;
rossen@4463 80 background: none;
rossen@4463 81 font-weight: normal;
rossen@4463 82 padding-right: 0.5em;
rossen@4463 83 }
rossen@4463 84
rossen@4463 85 .issue-details {
rossen@4463 86 padding:0.5em;
rossen@4463 87 font-size: 0.8em;
rossen@4463 88 line-height: 1.5;
vhardy@3659 89 }
rossen@4463 90
rossen@4463 91 .issue-details p{
rossen@4463 92 padding:0;
rossen@4463 93 margin:0;
rossen@4463 94 }
rossen@4463 95
rossen@4463 96 .issue-details .status{
rossen@4463 97 background:#333;
rossen@4463 98 color:white;
rossen@4463 99 float:left;
rossen@4463 100 padding:0.15em 0.8em;
rossen@4463 101 font-size:0.8em;
rossen@4463 102 margin-right:0.8em;
rossen@4463 103 text-transform:uppercase;
rossen@4463 104 }
rossen@4463 105
rossen@3643 106 </style>
bert@4112 107 <link href="http://www.w3.org/StyleSheets/TR/W3C-ED.css" rel=stylesheet
bert@4112 108 type="text/css">
vhardy@4680 109 <link href="../alternate-spec-style.css" id=st rel=stylesheet
vhardy@4045 110 title="alternate spec styles" type="text/css">
vhardy@2780 111
vhardy@2780 112 <body>
vhardy@4680 113 <div class=head id=div-head>
vhardy@4680 114 <p><a href="http://www.w3.org/"><img alt=W3C height=53 id=mobile-logo
vhardy@4680 115 src="http://www.w3.org/2008/site/images/logo-w3c-mobile-lg" width=90></a>
vhardy@4680 116 <!--begin-logo-->
vhardy@4680 117
vhardy@4473 118 <p><a href="http://www.w3.org/"><img alt=W3C height=48
vhardy@4680 119 src="http://www.w3.org/Icons/w3c_home" width=72></a> <!--end-logo--></p>
vhardy@2780 120
bert@4112 121 <h1 id=css-exclusions-module>CSS Exclusions and Shapes Module Level 3</h1>
bert@4112 122
vhardy@5457 123 <h2 class="no-num no-toc" id=longstatus-date>Editor's Draft 12 April 2012</h2>
vhardy@2780 124
vhardy@2780 125 <dl>
vhardy@2780 126 <dt>This version:
vhardy@2780 127
vhardy@2780 128 <dd><a
bert@4112 129 href="http://dev.w3.org/csswg/css3-exclusions/">http://dev.w3.org/csswg/css3-exclusions/</a></dd>
vhardy@5457 130 <!--<dd><a href="http://www.w3.org/TR/2012/ED-css3-exclusions-20120412/">http://www.w3.org/TR/2012/WD-css3-exclusions-20120412/</a></dd>-->
vhardy@2780 131
vhardy@2780 132 <dt>Latest version:
vhardy@2780 133
vhardy@2780 134 <dd><a
bert@4112 135 href="http://www.w3.org/TR/css3-exclusions/">http://www.w3.org/TR/css3-exclusions/</a>
vhardy@2780 136
rossen@4263 137 <dt>Editor's Draft:
rossen@4263 138
rossen@4263 139 <dd><a
rossen@4263 140 href="http://dev.w3.org/csswg/css3-exclusions/">http://dev.w3.org/csswg/css3-exclusions/</a>
rossen@4263 141
rossen@4263 142
vhardy@2780 143 <dt>Previous version:
vhardy@2780 144
rossen@3643 145 <dd>None
vhardy@2780 146
vhardy@2780 147 <dt>Editors:
vhardy@2780 148
vhardy@2780 149 <dd class=vcard><span class=fn>Vincent Hardy</span>, <span
vhardy@2780 150 class=org>Adobe Systems, Inc.</span>, <span
vhardy@2780 151 class=email>vhardy@adobe.com</span>
vhardy@2780 152
rossen@3643 153 <dd class=vcard><span class=fn>Rossen Atanassov</span>, <span
rossen@3643 154 class=org>Microsoft Corporation</span>, <span
rossen@3643 155 class=email>ratan@microsoft.com</span>
rossen@3762 156
rossen@4263 157 <dt>Issues List:
rossen@3762 158
rossen@3762 159 <dd><a
vhardy@4680 160 href="https://www.w3.org/Bugs/Public/buglist.cgi?query_format=advanced&product=CSS&component=Exclusions&resolution=---&cmdtype=doit">in
vhardy@4680 161 Bugzilla</a>
rossen@4263 162
rossen@4263 163 <dt>Discussion:
rossen@4263 164
rossen@4263 165 <dd><a
rossen@4263 166 href="http://lists.w3.org/Archives/Public/www-style/">www-style@w3.org</a>
vhardy@4680 167 with subject line "<code>[css3-exclusions] message topic</code>"
vhardy@2780 168 </dl>
vhardy@2780 169 <!--begin-copyright-->
vhardy@4473 170 <p class=copyright><a
vhardy@2780 171 href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright"
vhardy@5132 172 rel=license>Copyright</a> &copy; 2012 <a href="http://www.w3.org/"><abbr
vhardy@5132 173 title="World Wide Web Consortium">W3C</abbr></a><sup>&reg;</sup> (<a
vhardy@5132 174 href="http://www.csail.mit.edu/"><abbr
vhardy@5132 175 title="Massachusetts Institute of Technology">MIT</abbr></a>, <a
vhardy@5132 176 href="http://www.ercim.eu/"><abbr
vhardy@5132 177 title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
rossen@3643 178 <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a
vhardy@2780 179 href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
vhardy@2780 180 <a
vhardy@2780 181 href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>
vhardy@2780 182 and <a
vhardy@2780 183 href="http://www.w3.org/Consortium/Legal/copyright-documents">document
vhardy@2780 184 use</a> rules apply.</p>
vhardy@2780 185 <!--end-copyright-->
vhardy@2780 186 <hr title="Separator for header">
vhardy@2780 187 </div>
vhardy@2780 188
vhardy@2780 189 <h2 class="no-num no-toc" id=abstract>Abstract</h2>
vhardy@2780 190
vhardy@5457 191 <p> CSS Exclusions define arbitrary areas around which <a
vhardy@5457 192 href="http://www.w3.org/TR/CSS2/visuren.html#inline-boxes">inline
vhardy@5457 193 content</a> (<a href="#CSS21"
vhardy@5457 194 rel=biblioentry>[CSS21]<!--{{!CSS21}}--></a>) content can flow. CSS
vhardy@5457 195 Exclusions can be defined on any CSS block-level elements. CSS Exclusions
vhardy@5457 196 extend the notion of content wrapping previously limited to floats.
vhardy@5214 197
vhardy@5214 198 <p>CSS Shapes control the geometric shapes used for wrapping inline flow
vhardy@5214 199 content outside or inside an element. CSS Shapes can be applied to any
vhardy@5214 200 element. A circle shape on a float will cause inline content to wrap
vhardy@5214 201 around the circle shape instead of the float's bounding box.
vhardy@5214 202
vhardy@5214 203 <p>Combining CSS Exclusions and CSS Shapes allows sophisticated layouts,
vhardy@5214 204 allowing interactions between shapes in complex positioning schemes.
vhardy@2780 205
vhardy@2780 206 <h2 class="no-num no-toc" id=status>Status of this document</h2>
vhardy@2780 207 <!--begin-status-->
vhardy@2780 208
vhardy@4473 209 <p>This is a public copy of the editors' draft. It is provided for
vhardy@4473 210 discussion only and may change at any moment. Its publication here does
vhardy@4473 211 not imply endorsement of its contents by W3C. Don't cite this document
vhardy@4473 212 other than as work in progress.
vhardy@4473 213
vhardy@4473 214 <p>The (<a
vhardy@2780 215 href="http://lists.w3.org/Archives/Public/www-style/">archived</a>) public
vhardy@2780 216 mailing list <a
vhardy@2781 217 href="mailto:www-style@w3.org?Subject=%5Bcss3-exclusions%5D%20PUT%20SUBJECT%20HERE">
vhardy@2780 218 www-style@w3.org</a> (see <a
vhardy@2780 219 href="http://www.w3.org/Mail/Request">instructions</a>) is preferred for
vhardy@2780 220 discussion of this specification. When sending e-mail, please put the text
vhardy@2781 221 &#8220;css3-exclusions&#8221; in the subject, preferably like this:
vhardy@2781 222 &#8220;[<!---->css3-exclusions<!---->] <em>&hellip;summary of
vhardy@2780 223 comment&hellip;</em>&#8221;
vhardy@2780 224
vhardy@4473 225 <p>This document was produced by the <a href="/Style/CSS/members">CSS
vhardy@4473 226 Working Group</a> (part of the <a href="/Style/">Style Activity</a>).
vhardy@4473 227
vhardy@4473 228 <p>This document was produced by a group operating under the <a
vhardy@2780 229 href="/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent
vhardy@2780 230 Policy</a>. W3C maintains a <a href="/2004/01/pp-impl/32061/status"
vhardy@2780 231 rel=disclosure>public list of any patent disclosures</a> made in
vhardy@2780 232 connection with the deliverables of the group; that page also includes
vhardy@2780 233 instructions for disclosing a patent. An individual who has actual
vhardy@2780 234 knowledge of a patent which the individual believes contains <a
vhardy@2780 235 href="/Consortium/Patent-Policy-20040205/#def-essential">Essential
vhardy@2780 236 Claim(s)</a> must disclose the information in accordance with <a
vhardy@2780 237 href="/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the
vhardy@2780 238 W3C Patent Policy</a>.</p>
vhardy@2780 239 <!--end-status-->
vhardy@4057 240
vhardy@4473 241 <p>This is the First Public Working Draft of the CSS Exclusions and Shapes
vhardy@4473 242 Level 3 Module.
vhardy@2780 243
vhardy@2780 244 <h2 class="no-num no-toc" id=contents>Table of contents</h2>
vhardy@2780 245 <!--begin-toc-->
vhardy@2780 246
vhardy@2780 247 <ul class=toc>
vhardy@4473 248 <li><a href="#intro"><span class=secno>1. </span>Introduction</a>
vhardy@4473 249
vhardy@4473 250 <li><a href="#definitions"><span class=secno>2. </span>Definitions</a>
vhardy@4473 251
vhardy@4473 252 <li><a href="#exclusions"><span class=secno>3. </span>Exclusions</a>
rossen@3643 253 <ul class=toc>
vhardy@4473 254 <li><a href="#declaring-exclusions"><span class=secno>3.1.
vhardy@4473 255 </span>Declaring exclusions</a>
vhardy@2780 256 <ul class=toc>
vhardy@4473 257 <li><a href="#wrap-flow-property"><span class=secno>3.1.1. </span>The
vhardy@4473 258 &lsquo;<code class=property>wrap-flow</code>&rsquo; property</a>
rossen@3643 259 </ul>
vhardy@2780 260
vhardy@4473 261 <li><a href="#scope-and-effect-of-exclusions"><span class=secno>3.2.
vhardy@5412 262 </span>Scope and effect of exclusions</a>
rossen@3643 263 <ul class=toc>
vhardy@4473 264 <li><a href="#wrap-margin-property"><span class=secno>3.2.1.
vhardy@4473 265 </span>The &lsquo;<code class=property>wrap-margin</code>&rsquo;
vhardy@5412 266 property</a>
vhardy@4473 267
vhardy@4473 268 <li><a href="#wrap-padding-property"><span class=secno>3.2.2.
vhardy@4473 269 </span>The &lsquo;<code class=property>wrap-padding</code>&rsquo;
vhardy@4473 270 Property</a>
rossen@3643 271 </ul>
vhardy@2780 272
vhardy@4473 273 <li><a href="#propagation-of-exclusions"><span class=secno>3.3.
rossen@3643 274 </span>Propagation of Exclusions</a>
rossen@3643 275 <ul class=toc>
vhardy@4473 276 <li><a href="#wrap-through-property"><span class=secno>3.3.1.
vhardy@4473 277 </span>The &lsquo;<code class=property>wrap-through</code>&rsquo;
vhardy@4473 278 Property</a>
vhardy@4473 279
vhardy@4473 280 <li><a href="#wrap-shorthand-property"><span class=secno>3.3.2.
vhardy@4473 281 </span>The &lsquo;<code class=property>wrap</code>&rsquo; Shorthand
vhardy@4473 282 Property</a>
rossen@3643 283 </ul>
vhardy@2780 284
vhardy@4473 285 <li><a href="#exclusions-order"><span class=secno>3.4. </span>Exclusions
vhardy@4473 286 order</a>
vhardy@4473 287
vhardy@4473 288 <li><a href="#exclusions-processing-model"><span class=secno>3.5.
vhardy@4473 289 </span>Processing model</a>
vhardy@4473 290 <ul class=toc>
vhardy@5412 291 <li><a href="#exclusions-processing-model-description"><span
vhardy@5412 292 class=secno>3.5.1. </span>Description</a>
vhardy@5412 293
vhardy@5412 294 <li><a
vhardy@5412 295 href="#step-1-resolve-exclusion-boxes-belonging-to-each-wrapping-context"><span
vhardy@5412 296 class=secno>3.5.2. </span>Step 1: resolve exclusion boxes belonging
vhardy@5412 297 to each wrapping context</a>
vhardy@5412 298
vhardy@5412 299 <li><a
vhardy@5412 300 href="#step-2-resolve wrapping-contexts-layout-containing-blocks"><span
vhardy@5412 301 class=secno>3.5.3. </span>Step 2: resolve wrapping contexts and
vhardy@5412 302 layout containing blocks</a>
vhardy@5412 303
vhardy@5412 304 <li><a href="#step-2-A-resolve-exclusions-position-and-size"><span
vhardy@5412 305 class=secno>3.5.4. </span>Step 2-A: resolve exclusions position and
vhardy@5412 306 size</a>
vhardy@5412 307
vhardy@5412 308 <li><a
vhardy@5412 309 href="#step-2-B-layout-containing-block-applying-wrapping"><span
vhardy@5412 310 class=secno>3.5.5. </span>Step 2-B: layout containing block applying
vhardy@5412 311 wrapping</a>
vhardy@5412 312
vhardy@4473 313 <li><a href="#exclusions-processing-model-example"><span
vhardy@5412 314 class=secno>3.5.6. </span>Example</a>
vhardy@5118 315 <ul class=toc>
vhardy@5118 316 <li><a href="#step-1-resolve-exclusion-boxes-belonging"><span
vhardy@5412 317 class=secno>3.5.6.1. </span>Step 1: resolve exclusion boxes
vhardy@5118 318 belonging to each wrapping context</a>
vhardy@5118 319
vhardy@5118 320 <li><a href="#step-2-resolve-wrapping-contexts-and-lay"><span
vhardy@5412 321 class=secno>3.5.6.2. </span>Step 2: resolve wrapping contexts and
vhardy@5118 322 layout containing blocks</a>
vhardy@5118 323 <ul class=toc>
vhardy@5412 324 <li><a href="#resolving-rwc-1"><span class=secno>3.5.6.2.1.
vhardy@5125 325 </span>Resolving RWC-1</a>
vhardy@5125 326
vhardy@5412 327 <li><a href="#resolving-rwc-2"><span class=secno>3.5.6.2.2.
vhardy@5125 328 </span>Resolving RWC-2</a>
vhardy@5118 329 </ul>
vhardy@5118 330 </ul>
vhardy@4473 331 </ul>
vhardy@5412 332
vhardy@5412 333 <li><a href="#floats-and-exclusions"><span class=secno>3.6.
vhardy@5412 334 </span>Floats and exclusions</a>
vhardy@5412 335 <ul class=toc>
vhardy@5412 336 <li><a href="#floats-and-exclusions-similarities"><span
vhardy@5412 337 class=secno>3.6.1. </span>Similarities</a>
vhardy@5412 338
vhardy@5412 339 <li><a href="#floats-and-exclusions-differences"><span
vhardy@5412 340 class=secno>3.6.2. </span>Differences</a>
vhardy@5412 341
vhardy@5412 342 <li><a href="#floats-and-exclusions-interoperability"><span
vhardy@5412 343 class=secno>3.6.3. </span>Interoperability</a>
vhardy@5412 344 <ul class=toc>
vhardy@5412 345 <li><a href="#effect-of-floats-on-exclusions"><span
vhardy@5412 346 class=secno>3.6.3.1. </span>Effect of floats on exclusions</a>
vhardy@5412 347
vhardy@5412 348 <li><a href="#effect-of-exclusions-on-floats"><span
vhardy@5412 349 class=secno>3.6.3.2. </span>Effect of exclusions on floats</a>
vhardy@5412 350 </ul>
vhardy@5412 351 </ul>
rossen@3643 352 </ul>
vhardy@2780 353
vhardy@4473 354 <li><a href="#shapes"><span class=secno>4. </span>Shapes</a>
rossen@3643 355 <ul class=toc>
vhardy@5412 356 <li><a href="#relation-to-box-model-and-float-behavior"><span
vhardy@5412 357 class=secno>4.1. </span>Relation to the box model and float
vhardy@5412 358 behavior</a>
vhardy@5412 359
vhardy@5412 360 <li><a href="#shapes-from-svg-syntax"><span class=secno>4.2.
vhardy@4473 361 </span>Shapes from SVG Syntax</a>
rossen@3643 362 <ul class=toc>
vhardy@5412 363 <li><a href="#supported-svg-shapes"><span class=secno>4.2.1.
vhardy@4473 364 </span>Supported SVG Shapes</a>
vhardy@4473 365
vhardy@5412 366 <li><a href="#referencing-svg-shapes"><span class=secno>4.2.2.
vhardy@4473 367 </span>Referencing SVG shapes</a>
rossen@3643 368 </ul>
vhardy@2780 369
vhardy@5412 370 <li><a href="#shapes-from-image"><span class=secno>4.3. </span>Shapes
vhardy@4473 371 from Image</a>
vhardy@4473 372
vhardy@5412 373 <li><a href="#declaring-shapes"><span class=secno>4.4. </span>Declaring
rossen@3643 374 Shapes</a>
rossen@3643 375 <ul class=toc>
vhardy@5412 376 <li><a href="#shape-outside-property"><span class=secno>4.4.1.
vhardy@4473 377 </span>The &lsquo;<code class=property>shape-outside</code>&rsquo;
vhardy@4473 378 Property</a>
vhardy@4473 379
vhardy@5412 380 <li><a href="#shape-inside-property"><span class=secno>4.4.2.
vhardy@4473 381 </span>The &lsquo;<code class=property>shape-inside</code>&rsquo;
vhardy@4473 382 Property</a>
vhardy@4473 383
vhardy@5412 384 <li><a href="#shape-image-threshold-property"><span class=secno>4.4.3.
rossen@3643 385 </span>The &lsquo;<code
rossen@3643 386 class=property>shape-image-threshold</code>&rsquo; Property</a>
vhardy@2780 387 </ul>
vhardy@2780 388 </ul>
vhardy@2780 389
vhardy@4473 390 <li><a href="#conformance"><span class=secno>5. </span>Conformance</a>
rossen@3643 391 <ul class=toc>
vhardy@4473 392 <li><a href="#conventions"><span class=secno>5.1. </span>Document
vhardy@4473 393 Conventions</a>
vhardy@4473 394
vhardy@4473 395 <li><a href="#conformance-classes"><span class=secno>5.2.
vhardy@4473 396 </span>Conformance Classes</a>
vhardy@4473 397
vhardy@4473 398 <li><a href="#partial"><span class=secno>5.3. </span> Partial
vhardy@4473 399 Implementations</a>
vhardy@4473 400
vhardy@4473 401 <li><a href="#experimental"><span class=secno>5.4. </span> Experimental
vhardy@4473 402 Implementations</a>
vhardy@4473 403
vhardy@4473 404 <li><a href="#testing"><span class=secno>5.5. </span> Non-Experimental
vhardy@4473 405 Implementations</a>
vhardy@4473 406
vhardy@4473 407 <li><a href="#cr-exit-criteria"><span class=secno>5.6. </span> CR Exit
vhardy@4473 408 Criteria</a>
vhardy@2780 409 </ul>
vhardy@2780 410
vhardy@4473 411 <li class=no-num><a href="#acknowledgments">Acknowledgments</a>
vhardy@4473 412
vhardy@4473 413 <li class=no-num><a href="#references">References</a>
rossen@3643 414 <ul class=toc>
vhardy@4473 415 <li class=no-num><a href="#normative-references">Normative
vhardy@3659 416 references</a>
vhardy@4473 417
vhardy@4473 418 <li class=no-num><a href="#other-references">Other references</a>
rossen@3643 419 </ul>
rossen@3643 420
vhardy@4473 421 <li class=no-num><a href="#index">Index</a>
vhardy@4473 422
vhardy@4473 423 <li class=no-num><a href="#property-index">Property index</a>
vhardy@5412 424
vhardy@5412 425 <li class=no-num><a href="#change-log">Change Log</a>
vhardy@5412 426 <ul class=toc>
vhardy@5412 427 <li><a href="#since-december-13th-2011"><span class=secno>5.7.
vhardy@5412 428 </span>Since December 13th 2011</a>
vhardy@5412 429 </ul>
vhardy@2780 430 </ul>
vhardy@2780 431 <!--end-toc-->
vhardy@2780 432
rossen@3643 433 <h2 id=intro><span class=secno>1. </span>Introduction</h2>
vhardy@2780 434
vhardy@4473 435 <p><em>This section is not normative.</em>
vhardy@4473 436
vhardy@4473 437 <p> The exclusions section of this specification defines features that
vhardy@4473 438 allow inline flow content to wrap around outside the <a
vhardy@4473 439 href="#exclusion-area">exclusion area</a> of elements.
vhardy@4473 440
vhardy@4473 441 <p> The shapes section of the specification defines properties to control
vhardy@4473 442 the geometry of an element's <a href="#exclusion-area">exclusion area</a>
vhardy@4473 443 as well as the geometry used for wrapping an element's inline flow
vhardy@4473 444 content.
vhardy@2780 445
vhardy@3659 446 <h2 id=definitions><span class=secno>2. </span>Definitions</h2>
vhardy@2780 447
vhardy@5125 448 <p><dfn id=exclusion-box>Exclusion box</dfn>
vhardy@5125 449
vhardy@5214 450 <p> A <a href="http://www.w3.org/TR/css3-box/">box</a> (<a href="#CSS3BOX"
vhardy@5214 451 rel=biblioentry>[CSS3BOX]<!--{{!CSS3BOX}}--></a>) that defines an <a
vhardy@5214 452 href="#exclusion-area">exclusion area</a> for other boxes. The &lsquo;<a
vhardy@5214 453 href="#wrap-flow"><code class=property>wrap-flow</code></a>&rsquo;
vhardy@5214 454 property is used to make an element's generated box an exclusion box. An
vhardy@5214 455 exclusion box contributes its <a href="#exclusion-area">exclusion area</a>
vhardy@5214 456 to its <a
rossen@3716 457 href="http://www.w3.org/TR/CSS2/visudet.html#containing-block-details">
vhardy@5412 458 containing block's</a> <a href="#wrapping-context">wrapping context</a>.
vhardy@5412 459 An element with a &lsquo;<code class=property>float</code>&rsquo; computed
vhardy@5412 460 value other than &lsquo;<code class=property>none</code>&rsquo; does not
vhardy@5412 461 become an exclusion.
rossen@3716 462
vhardy@4473 463 <p><dfn id=exclusion-area>Exclusion area</dfn>
vhardy@4045 464
rossen@4463 465 <div class=issue-marker data-bug_id=15087 data-bug_status=NEW> <a
rossen@4463 466 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15087">Bug-15087</a>
rossen@4463 467 <div class=issue-details>
vhardy@4473 468 <p class=short-desc>Interaction of floats and exclusions (Howcome's
vhardy@4473 469 questions)</p>
rossen@4463 470 </div>
rossen@4463 471 </div>
vhardy@4045 472
vhardy@4473 473 <p> The area used for excluding inline flow content around an exclusion
vhardy@4473 474 element. The exclusion area is equivalent to the <a
vhardy@5412 475 href="http://www.w3.org/TR/CSS2/box.html#box-dimensions"> border box</a>.
vhardy@5412 476 This specification's &lsquo;<a href="#shape-outside"><code
vhardy@5214 477 class=property>shape-outside</code></a>&rsquo; property can be used to
vhardy@5214 478 define arbitrary, non-rectangular exclusion areas.
rossen@3716 479
vhardy@5412 480 <p><dfn id=float-area>Float area</dfn>
vhardy@5412 481
vhardy@5412 482 <p> The area used for excluding inline flow content around a float element.
vhardy@5412 483 By default, the float area is the <a
vhardy@5412 484 href="http://www.w3.org/TR/CSS2/box.html#box-dimensions">margin box</a>.
vhardy@5412 485 This specification's &lsquo;<a href="#shape-outside"><code
vhardy@5412 486 class=property>shape-outside</code></a>&rsquo; property can be used to
vhardy@5412 487 define arbitrary, non-rectangular float areas.
vhardy@5412 488
vhardy@4473 489 <p><dfn id=wrapping-context>Wrapping context</dfn>
vhardy@4045 490
rossen@4463 491 <div class=issue-marker data-bug_id=15086 data-bug_status=NEW> <a
rossen@4463 492 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15086">Bug-15086</a>
rossen@4463 493 <div class=issue-details>
vhardy@4473 494 <p class=short-desc>should the wrapping context be generic and include
vhardy@4473 495 floats?</p>
rossen@4463 496 </div>
rossen@4463 497 </div>
vhardy@4045 498
vhardy@5214 499 <p> The wrapping context of a box is a collection of &lsquo;<a
vhardy@4680 500 href="#exclusion-area"><code class=css>exclusion areas</code></a>&rsquo;.
vhardy@5412 501 During layout, a box wraps its inline flow content in the area that
vhardy@4680 502 corresponds to the subtraction of its wrapping context from its own <a
vhardy@4680 503 href="#content-area">content area</a>.
vhardy@4473 504
vhardy@5125 505 <p> A box inherits its <a
vhardy@3659 506 href="http://www.w3.org/TR/CSS2/visudet.html#containing-block-details">containing
vhardy@3707 507 block's</a> wrapping context unless it specifically resets it using the
vhardy@3707 508 &lsquo;<a href="#wrap-through"><code
vhardy@3707 509 class=property>wrap-through</code></a>&rsquo; property.
vhardy@3707 510
vhardy@4473 511 <p><dfn id=content-area>Content area</dfn>
vhardy@4473 512
vhardy@5125 513 <p> The area used for layout of the inline flow content of a box. By
vhardy@4473 514 default the area is equivalent to the <a
vhardy@4473 515 href="http://www.w3.org/TR/CSS2/box.html#box-dimensions">content box</a>.
vhardy@4473 516 This specification's &lsquo;<a href="#shape-inside"><code
vhardy@3659 517 class=property>shape-inside</code></a>&rsquo; property can define
vhardy@3659 518 arbitrary, non-rectangular content areas.
rossen@3655 519
vhardy@4473 520 <p><dfn id=outside-and-inside title=outside-inside>Outside and inside</dfn>
vhardy@4473 521
vhardy@4473 522
vhardy@4473 523 <p> In this specification, &lsquo;<code
vhardy@4473 524 class=property>outside</code>&rsquo; refers to DOM content that is not a
vhardy@4473 525 descendant of an element while &lsquo;<code
rossen@3716 526 class=property>inside</code>&rsquo; refers to the element's descendants.
vhardy@2780 527
vhardy@3659 528 <h2 id=exclusions><span class=secno>3. </span>Exclusions</h2>
vhardy@2780 529
vhardy@4473 530 <p> Exclusion elements define exclusion areas that contribute to their
vhardy@5412 531 containing block's <a href="#wrapping-context">wrapping context</a>. As a
vhardy@5412 532 consequence, exclusions impact the layout of their containing block's
vhardy@5412 533 descendants.
vhardy@4473 534
vhardy@4473 535 <p>
vhardy@4473 536
vhardy@4473 537 <p> Elements layout their inline content in their <a
vhardy@5412 538 href="#content-area">content area</a> and wrap around the areas in their
vhardy@4473 539 associated wrapping context. If the element is itself an exclusion, it
vhardy@4473 540 does not wrap around its own exclusion shape and the impact of other
vhardy@4473 541 exclusions on other exclusions is controlled by the &lsquo;<code
vhardy@4473 542 class=property>z-index</code>&rsquo; property as explained in the <a
vhardy@4473 543 href="#exclusions-order">exclusions order</a> section.
vhardy@4473 544
vhardy@5412 545 <p> The <a href="#shapes">shape properties</a> can be used to change the
vhardy@5412 546 shape of <a href="#exclusion-area">exclusion areas</a>.
vhardy@3659 547
vhardy@3659 548 <h3 id=declaring-exclusions><span class=secno>3.1. </span>Declaring
vhardy@3659 549 exclusions</h3>
vhardy@3659 550
vhardy@4473 551 <p> An element becomes an exclusion when its &lsquo;<a
vhardy@4473 552 href="#wrap-flow"><code class=property>wrap-flow</code></a>&rsquo;
vhardy@4473 553 property has a computed value other than &lsquo;<code
vhardy@4473 554 class=property>auto</code>&rsquo;.
vhardy@2780 555
vhardy@3659 556 <h4 id=wrap-flow-property><span class=secno>3.1.1. </span>The &lsquo;<a
rossen@3643 557 href="#wrap-flow"><code class=property>wrap-flow</code></a>&rsquo;
vhardy@3659 558 property</h4>
vhardy@2780 559
vhardy@2780 560 <table class=propdef>
vhardy@2780 561 <tbody>
vhardy@2780 562 <tr>
vhardy@2780 563 <th>Name:
vhardy@2780 564
rossen@3643 565 <td><dfn id=wrap-flow title="'wrap-flow'">wrap-flow</dfn>
vhardy@2780 566
vhardy@2780 567 <tr>
vhardy@2780 568 <th>Value:
vhardy@2780 569
rossen@3884 570 <td><var>auto</var> | <var>both</var> | <var>start</var> |
rossen@3884 571 <var>end</var> | <var>maximum</var> | <var>clear</var>
vhardy@2780 572
vhardy@2780 573 <tr>
vhardy@2780 574 <th>Initial:
vhardy@2780 575
rossen@3643 576 <td>auto
vhardy@2780 577
vhardy@2780 578 <tr>
vhardy@2780 579 <th>Applies to:
vhardy@2780 580
vhardy@5412 581 <td>block-level elements. Does not apply to elements with a &lsquo;<code
vhardy@5412 582 class=property>float</code>&rsquo; computed value other than <code
vhardy@5412 583 class=css>none</code>
rossen@3643 584
rossen@3643 585 <tr>
rossen@3643 586 <th>Inherited:
rossen@3643 587
rossen@3643 588 <td>no
rossen@3643 589
rossen@3643 590 <tr>
rossen@3643 591 <th>Percentages:
rossen@3643 592
rossen@3643 593 <td>N/A
rossen@3643 594
rossen@3643 595 <tr>
rossen@3643 596 <th>Media:
rossen@3643 597
rossen@3643 598 <td>visual
rossen@3643 599
rossen@3643 600 <tr>
rossen@3643 601 <th>Computed&nbsp;value:
rossen@3643 602
vhardy@5412 603 <td>as specified
rossen@3643 604 </table>
rossen@3643 605
vhardy@4473 606 <p>The values of this property have the following meanings:
rossen@3643 607
rossen@3643 608 <dl>
rossen@3643 609 <dt><dfn id=auto title="'wrap-flow'!!'auto'">auto</dfn>
rossen@3643 610
vhardy@5214 611 <dd> No exclusion is created. Inline flow content interacts with the
vhardy@5214 612 element as usual.
vhardy@3659 613
vhardy@3659 614 <dt><dfn id=both title="'wrap-flow'!!'both'">both</dfn>
vhardy@3659 615
vhardy@3659 616 <dd> Inline flow content can flow on all sides of the exclusion.
vhardy@3659 617
rossen@3884 618 <dt><dfn id=start title="'wrap-flow'!!'start'">start</dfn>
rossen@3884 619
vhardy@5214 620 <dd> Inline flow content can flow before the start edge of the exclusion
vhardy@5214 621 area but must leave the area after the end edge of the exclusion empty.
rossen@3884 622
rossen@3884 623 <dt><dfn id=end title="'wrap-flow'!!'end'">end</dfn>
rossen@3884 624
vhardy@5214 625 <dd> Inline flow content can flow after the end edge of the exclusion area
vhardy@5214 626 but must leave the area before the start edge of the exclusion empty.
vhardy@3659 627
vhardy@3659 628 <dt><dfn id=maximum title="'wrap-flow'!!'maximum'">maximum</dfn>
vhardy@3659 629
vhardy@5214 630 <dd> Inline flow content can flow on the edge of the exclusion with the
vhardy@5214 631 largest available space for the given line, and must leave the other edge
rossen@3884 632 of the exclusion empty.
vhardy@3659 633
vhardy@3659 634 <dt><dfn id=clear title="'wrap-flow'!!'clear'">clear</dfn>
vhardy@3659 635
vhardy@5214 636 <dd> Inline flow content can only flow on top and bottom edges of the
vhardy@5214 637 exclusion and must leave the areas before the start and after the end
vhardy@5214 638 edges of the exclusion empty.
rossen@3643 639 </dl>
rossen@3643 640
vhardy@5412 641 <p> If the property's computed value is &lsquo;<code
vhardy@5412 642 class=property>auto</code>&rsquo;, the element does not become an
vhardy@5412 643 <span>exclusion</span>.
vhardy@5412 644
vhardy@5412 645 <p> Otherwise, a computed &lsquo;<a href="#wrap-flow"><code
vhardy@5412 646 class=property>wrap-flow</code></a>&rsquo; property value of &lsquo;<code
vhardy@4473 647 class=property>both</code>&rsquo;, &lsquo;<code
rossen@3884 648 class=property>start</code>&rsquo;, &lsquo;<code
rossen@3884 649 class=property>end</code>&rsquo;, &lsquo;<code
vhardy@3659 650 class=property>maximum</code>&rsquo; or &lsquo;<code
vhardy@3659 651 class=property>clear</code>&rsquo; on an element makes that element an
vhardy@3659 652 <span>exclusion element. It's <span>exclusion shape</span> is contributed
vhardy@5412 653 to its containing block's <a href="#wrapping-context">wrapping
vhardy@5412 654 context</a>, causing the containing block's descendants to wrap around its
vhardy@5412 655 exclusion area. </span>
vhardy@3707 656
vhardy@4057 657 <div class=figure> <img
vhardy@4057 658 alt="General illustration showing how exclusions combine"
vhardy@4057 659 src="images/exclusions-illustration.png" width="70%">
vhardy@4473 660 <p class=caption>Combining exclusions</p>
vhardy@3707 661 </div>
vhardy@3707 662
vhardy@4473 663 <p> The above figure illustrates how exclusions are combined. The outermost
vhardy@4473 664 box represents an element's content box. The A, B, C and D darker gray
vhardy@4473 665 boxes represent exclusions in the element's wrapping context. A, B, C and
vhardy@4473 666 D have their respective &lsquo;<a href="#wrap-flow"><code
rossen@4463 667 class=property>wrap-flow</code></a>&rsquo; set to &lsquo;<code
rossen@4463 668 class=property>both</code>&rsquo;, &lsquo;<code
rossen@4463 669 class=property>start</code>&rsquo;, &lsquo;<code
rossen@4463 670 class=property>end</code>&rsquo; and &lsquo;<code
rossen@4463 671 class=property>clear</code>&rsquo; respectively. The lighter gray areas
rossen@4463 672 show the additional areas that are excluded for inline layout as a result
rossen@4463 673 of the &lsquo;<a href="#wrap-flow"><code
rossen@4463 674 class=property>wrap-flow</code></a>&rsquo; value. For example, the area to
rossen@4463 675 the right of &lsquo;<code class=property>B</code>&rsquo; cannot be used
rossen@4463 676 for inline layout because the &lsquo;<a href="#wrap-flow"><code
rossen@4463 677 class=property>wrap-flow</code></a>&rsquo; for &lsquo;<code
rossen@4463 678 class=property>B</code>&rsquo; is &lsquo;<code
rossen@4463 679 class=property>start</code>&rsquo;.
rossen@4463 680
vhardy@4473 681 <p> The background &lsquo;<code class=property>blue</code>&rsquo; area
vhardy@5457 682 shows what areas are available for the element's inline content layout.
vhardy@5457 683 All areas represented with a light or dark shade of gray are not available
vhardy@5457 684 for inline content layout.
rossen@4463 685
rossen@4463 686 <div class=issue-marker data-bug_id=15088 data-bug_status=FIXED> <a
rossen@4463 687 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15088">Bug-15088</a>
rossen@4463 688 <div class=issue-details>
vhardy@4473 689 <p class=short-desc>Add an example with auto-height content and z-index
vhardy@4473 690 for exclusions order.</p>
rossen@4463 691 </div>
vhardy@3707 692 </div>
rossen@3643 693
rossen@4463 694 <div class=issue-marker data-bug_id=15084 data-bug_status=NEW> <a
rossen@4463 695 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15084">Bug-15084</a>
rossen@4463 696 <div class=issue-details>
vhardy@4473 697 <p class=short-desc>Fluidity of the layout with respect to different
vhardy@4473 698 amounts of content</p>
rossen@4463 699 </div>
rossen@4463 700 </div>
vhardy@4045 701
rossen@3643 702 <div class=example>
vhardy@4473 703 <p> The &lsquo;<a href="#wrap-flow"><code
vhardy@4473 704 class=property>wrap-flow</code></a>&rsquo; property values applied to an
vhardy@4473 705 absolutely positioned element.</p>
vhardy@3659 706 <code class=html></code>
vhardy@3659 707 <pre>
vhardy@5412 708
vhardy@5412 709 &lt;div id="grid"&gt;
vhardy@5412 710 &lt;div id="exclusion"&gt;Donec metus …&lt;/div&gt;
vhardy@5412 711 &lt;div id="content"&gt;Lorem ipsum…&lt;/div&gt;
vhardy@5412 712 &lt;/div&gt;
vhardy@5412 713
rossen@3643 714 &lt;style type="text/css"&gt;
vhardy@5412 715 #grid {
vhardy@5412 716 width: 100em;
vhardy@5412 717 height: 100em;
vhardy@5412 718 display: grid;
vhardy@5412 719 grid-columns: 50% 20% 20%;
vhardy@5412 720 grid-rows: 40% 20% 40%;
vhardy@5412 721 }
vhardy@5412 722
vhardy@5412 723 #exclusion {
vhardy@5412 724 grid-row: 2;
vhardy@5412 725 grid-column: 2;
vhardy@5412 726 wrap-flow: &lt;see below&gt;
vhardy@5412 727 }
vhardy@5412 728
vhardy@5412 729 #content {
vhardy@5412 730 grid-row: 1;
vhardy@5412 731 grid-row-span: 3;
vhardy@5412 732 grid-column: 1;
vhardy@5412 733 grid-column-span: 3;
vhardy@5412 734 }
rossen@3643 735 &lt;/style&gt;
vhardy@3659 736 </pre>
rossen@3643 737
rossen@3643 738 <table class=example-table>
rossen@3643 739 <tbody>
rossen@3643 740 <tr>
rossen@3643 741 <td><code class=html>#exclusion{ wrap-flow: auto; }</code>
rossen@3643 742
rossen@3643 743 <td><code class=html>#exclusion{ wrap-flow: both; }</code>
rossen@3643 744
rossen@3643 745 <tr>
rossen@3643 746 <td><img alt="Example rendering for wrap-side: auto"
rossen@3643 747 src="images/exclusion_wrap_side_auto.png">
rossen@3643 748
rossen@3643 749 <td><img alt="Example rendering for wrap-side: both"
rossen@3643 750 src="images/exclusion_wrap_side_both.png">
rossen@3643 751
rossen@3643 752 <tr>
rossen@3884 753 <td><code class=html>#exclusion{ wrap-flow: start; }</code>
rossen@3884 754
rossen@3884 755 <td><code class=html>#exclusion{ wrap-flow: end; }</code>
rossen@3643 756
rossen@3643 757 <tr>
rossen@3884 758 <td><img alt="Example rendering for wrap-side: start"
rossen@3643 759 src="images/exclusion_wrap_side_left.png">
rossen@3643 760
rossen@3884 761 <td><img alt="Example rendering for wrap-side: end"
rossen@3643 762 src="images/exclusion_wrap_side_right.png">
rossen@3643 763
rossen@3643 764 <tr>
rossen@3643 765 <td><code class=html>#exclusion{ wrap-flow: maximum; }</code>
rossen@3643 766
rossen@3700 767 <td><code class=html>#exclusion{ wrap-flow: maximum; }</code>
rossen@3643 768
rossen@3643 769 <tr>
rossen@3643 770 <td><img alt="Example rendering for wrap-side: maximum"
rossen@3700 771 src="images/exclusion_wrap_side_maximum_L.png">
rossen@3643 772
rossen@3700 773 <td><img alt="Example rendering for wrap-side: maximum"
rossen@3700 774 src="images/exclusion_wrap_side_maximum_R.png">
rossen@3700 775
rossen@3700 776 <tr>
rossen@3700 777 <td><code class=html>#exclusion{ wrap-flow: clear; }</code>
rossen@3700 778
rossen@3700 779 <td><code class=html>&nbsp;</code>
rossen@3700 780
rossen@3700 781 <tr>
rossen@3643 782 <td><img alt="Example rendering for wrap-side: clear"
rossen@3643 783 src="images/exclusion_wrap_side_clear.png">
rossen@3700 784
rossen@3700 785 <td>&nbsp;
rossen@3643 786 </table>
rossen@3643 787 </div>
rossen@3643 788 <!-- End section "wrap-flow Property" -->
rossen@3643 789 <!-- End section "Declaring Exclusions" -->
rossen@3643 790
vhardy@3659 791 <h3 id=scope-and-effect-of-exclusions><span class=secno>3.2. </span>Scope
vhardy@5412 792 and effect of exclusions</h3>
vhardy@5412 793
vhardy@5412 794 <p> An <span>exclusion</span> affects the inline flow content descended
vhardy@5412 795 from the exclusion's containing blocks (defined in <a
rossen@3655 796 href="http://www.w3.org/TR/CSS2/visudet.html#containing-block-details">
rossen@3655 797 CSS 2.1 10.1</a>) and that of all descendant elements of the same
rossen@3655 798 containing block. All inline flow content inside the containing block of
rossen@3655 799 the exclusions is affected. To stop the effect of exclusions defined
vhardy@5412 800 outside an element, the &lsquo;<a href="#wrap-through"><code
rossen@3643 801 class=property>wrap-through</code></a>&rsquo; property can be used (see
vhardy@5412 802 the <a href="#propagation-of-exclusions">propagation of exclusions</a>
vhardy@5412 803 section below).
vhardy@5412 804
vhardy@5412 805 <p> For exclusions with &lsquo;<code
vhardy@5412 806 class=css>position:fixed</code>&rsquo;, the containing block is that of
vhardy@5412 807 the root element.
rossen@3643 808
vhardy@3659 809 <h4 id=wrap-margin-property><span class=secno>3.2.1. </span>The &lsquo;<a
rossen@3643 810 href="#wrap-margin"><code class=property>wrap-margin</code></a>&rsquo;
vhardy@5412 811 property</h4>
rossen@3643 812
vhardy@4473 813 <p> The &lsquo;<a href="#wrap-margin"><code
vhardy@4473 814 class=property>wrap-margin</code></a>&rsquo; property can be used to
vhardy@4473 815 offset the inline flow content wrapping on the outside of exclusions.
vhardy@4473 816 Offsets created by the &lsquo;<a href="#wrap-margin"><code
vhardy@4473 817 class=property>wrap-margin</code></a>&rsquo; property are offset from the
vhardy@4473 818 outside of the exclusion. This property takes on positive values only.
rossen@3643 819
rossen@3643 820 <table class=propdef>
rossen@3643 821 <tbody>
rossen@3643 822 <tr>
rossen@3643 823 <th>Name:
rossen@3643 824
rossen@3643 825 <td><dfn id=wrap-margin title="'wrap-margin'">wrap-margin</dfn>
rossen@3643 826
rossen@3643 827 <tr>
rossen@3643 828 <th>Value:
rossen@3643 829
rossen@3643 830 <td><var>&lt;length&gt;</var>
rossen@3643 831
rossen@3643 832 <tr>
rossen@3643 833 <th>Initial:
rossen@3643 834
rossen@3643 835 <td>0
rossen@3643 836
rossen@3643 837 <tr>
rossen@3643 838 <th>Applies to:
rossen@3643 839
vhardy@5412 840 <td><span>exclusion</span> elements
rossen@3643 841
rossen@3643 842 <tr>
rossen@3643 843 <th>Inherited:
rossen@3643 844
rossen@3643 845 <td>no
rossen@3643 846
rossen@3643 847 <tr>
rossen@3643 848 <th>Percentages:
rossen@3643 849
rossen@3643 850 <td>N/A
rossen@3643 851
rossen@3643 852 <tr>
rossen@3643 853 <th>Media:
rossen@3643 854
rossen@3643 855 <td>visual
rossen@3643 856
rossen@3643 857 <tr>
rossen@3643 858 <th>Computed&nbsp;value:
rossen@3643 859
rossen@3643 860 <td>the absolute length
rossen@3643 861 </table>
rossen@3643 862 <!-- End secion "wrap-margin property" -->
rossen@3643 863
vhardy@3659 864 <h4 id=wrap-padding-property><span class=secno>3.2.2. </span>The &lsquo;<a
rossen@3643 865 href="#wrap-padding"><code class=property>wrap-padding</code></a>&rsquo;
rossen@3643 866 Property</h4>
rossen@3643 867
vhardy@4473 868 <p> The &lsquo;<a href="#wrap-padding"><code
vhardy@4473 869 class=property>wrap-padding</code></a>&rsquo; property can be used to
vhardy@5412 870 offset the inline flow content wrapping on the inside of elements. Offsets
vhardy@5412 871 created by the &lsquo;<a href="#wrap-padding"><code
vhardy@4473 872 class=property>wrap-padding</code></a>&rsquo; property are offset from the
vhardy@4473 873 <a href="#content-area">content area</a> of the element. This property
vhardy@4473 874 takes on positive values only.
rossen@3643 875
rossen@3643 876 <table class=propdef>
rossen@3643 877 <tbody>
rossen@3643 878 <tr>
rossen@3643 879 <th>Name:
rossen@3643 880
rossen@3643 881 <td><dfn id=wrap-padding title="'wrap-padding'">wrap-padding</dfn>
rossen@3643 882
rossen@3643 883 <tr>
rossen@3643 884 <th>Value:
rossen@3643 885
rossen@3643 886 <td><var>&lt;length&gt;</var>
rossen@3643 887
rossen@3643 888 <tr>
rossen@3643 889 <th>Initial:
rossen@3643 890
rossen@3643 891 <td>0
rossen@3643 892
rossen@3643 893 <tr>
rossen@3643 894 <th>Applies to:
rossen@3643 895
vhardy@5412 896 <td><span>exclusion</span> elements
rossen@3643 897
rossen@3643 898 <tr>
rossen@3643 899 <th>Inherited:
rossen@3643 900
rossen@3643 901 <td>no
rossen@3643 902
rossen@3643 903 <tr>
rossen@3643 904 <th>Percentages:
rossen@3643 905
rossen@3643 906 <td>N/A
rossen@3643 907
rossen@3643 908 <tr>
rossen@3643 909 <th>Media:
rossen@3643 910
rossen@3643 911 <td>visual
rossen@3643 912
rossen@3643 913 <tr>
rossen@3643 914 <th>Computed&nbsp;value:
rossen@3643 915
rossen@3643 916 <td>the absolute length
rossen@3643 917 </table>
rossen@3643 918 <!-- End section "wrap-padding property" -->
vhardy@3731 919
vhardy@3731 920 <div class=note>Note that the &lsquo;<a href="#wrap-padding"><code
vhardy@3731 921 class=property>wrap-padding</code></a>&rsquo; property affects layout of
vhardy@3731 922 content inside the element it applies to while the &lsquo;<a
vhardy@3731 923 href="#wrap-margin"><code class=property>wrap-margin</code></a>&rsquo;
vhardy@3731 924 property affects layout of content outside the element.</div>
vhardy@3731 925 <!-- End section "Scope and Effect of Exclusions" -->
rossen@3643 926
vhardy@3659 927 <h3 id=propagation-of-exclusions><span class=secno>3.3. </span>Propagation
rossen@3643 928 of Exclusions</h3>
rossen@3643 929
vhardy@4473 930 <p> By default, an element inherits its parent <a
vhardy@4473 931 href="#wrapping-context">wrapping context</a>. In other words it is
vhardy@4473 932 subject to the exclusions defined <a href="#outside-and-inside"
vhardy@4473 933 title=outside-inside>outside the element. </a>
vhardy@4473 934
vhardy@4473 935 <p>Setting the &lsquo;<a href="#wrap-through"><code
vhardy@4473 936 class=property>wrap-through</code></a>&rsquo; property to &lsquo;<code
vhardy@4473 937 class=property>none</code>&rsquo; prevents an element from inheriting its
vhardy@4473 938 parent wrapping context. In other words, exclusions defined &lsquo;<code
vhardy@4473 939 class=property>outside</code>&rsquo; the element, have not effect on the
vhardy@4473 940 element's children layout.
rossen@3643 941
vhardy@3659 942 <div class=note> Exclusions defined by an element's descendants still
vhardy@3659 943 contribute to their containing block's <a
vhardy@3659 944 href="#wrapping-context">wrapping context</a>. If that containing block is
vhardy@3659 945 a child of an element with &lsquo;<a href="#wrap-through"><code
vhardy@3659 946 class=property>wrap-through</code></a>&rsquo; set to none, or the element
vhardy@3659 947 itself, then exclusion still have an effect on the children of that
vhardy@3659 948 containing block element.</div>
vhardy@3659 949
vhardy@3659 950 <h4 id=wrap-through-property><span class=secno>3.3.1. </span>The &lsquo;<a
rossen@3643 951 href="#wrap-through"><code class=property>wrap-through</code></a>&rsquo;
rossen@3643 952 Property</h4>
rossen@3643 953
rossen@4463 954 <div class=issue-marker data-bug_id=15085 data-bug_status=NEW> <a
rossen@4463 955 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15085">Bug-15085</a>
rossen@4463 956 <div class=issue-details>
vhardy@4473 957 <p class=short-desc>do we need wrap-through?</p>
rossen@4463 958 </div>
rossen@4463 959 </div>
vhardy@4045 960
rossen@3643 961 <table class=propdef>
rossen@3643 962 <tbody>
rossen@3643 963 <tr>
rossen@3643 964 <th>Name:
rossen@3643 965
rossen@3643 966 <td><dfn id=wrap-through title="'wrap-through'">wrap-through</dfn>
rossen@3643 967
rossen@3643 968 <tr>
rossen@3643 969 <th>Value:
rossen@3643 970
vhardy@3707 971 <td><a href="#wrap0"><var>wrap</var></a> | <var>none</var>
rossen@3643 972
rossen@3643 973 <tr>
rossen@3643 974 <th>Initial:
rossen@3643 975
rossen@3643 976 <td>wrap
rossen@3643 977
rossen@3643 978 <tr>
rossen@3643 979 <th>Applies to:
rossen@3643 980
rossen@3643 981 <td>block-level elements
vhardy@2780 982
vhardy@2780 983 <tr>
vhardy@2780 984 <th>Inherited:
vhardy@2780 985
vhardy@2780 986 <td>no
vhardy@2780 987
vhardy@2780 988 <tr>
vhardy@2780 989 <th>Percentages:
vhardy@2780 990
vhardy@2780 991 <td>N/A
vhardy@2780 992
vhardy@2780 993 <tr>
vhardy@2780 994 <th>Media:
vhardy@2780 995
vhardy@2780 996 <td>visual
vhardy@2780 997
vhardy@2780 998 <tr>
vhardy@2780 999 <th>Computed&nbsp;value:
vhardy@2780 1000
vhardy@2780 1001 <td>as specified
vhardy@2780 1002 </table>
vhardy@2780 1003
vhardy@4473 1004 <p>The values of this property have the following meanings:
vhardy@2780 1005
rossen@3643 1006 <dl>
rossen@3643 1007 <dt><dfn id=wrap title="'wrap-through'!!'wrap'">wrap</dfn>
vhardy@2780 1008
vhardy@3659 1009 <dd> The element inherits its parent node's <a
vhardy@3659 1010 href="#wrapping-context">wrapping context</a>. Its descendant inline
vhardy@3659 1011 content wraps around exclusions defined <a href="#outside-and-inside"
vhardy@3659 1012 title=outside-inside>outside</a> the element.
rossen@3643 1013 </dl>
vhardy@2780 1014
rossen@3643 1015 <dl>
rossen@3643 1016 <dt><dfn id=none title="'wrap-through'!!'none'">none</dfn>
vhardy@2780 1017
vhardy@3659 1018 <dd> The element does not inherit its parent node's <a
vhardy@3659 1019 href="#wrapping-context">wrapping context</a>. Its descendants are only
vhardy@3659 1020 subject to exclusion shapes defined <a href="#outside-and-inside"
vhardy@3659 1021 title=outside-inside>inside</a> the element.
rossen@3643 1022 </dl>
vhardy@2780 1023
vhardy@2780 1024 <div class=example>
vhardy@4473 1025 <p> Using the &lsquo;<a href="#wrap-through"><code
vhardy@4473 1026 class=property>wrap-through</code></a>&rsquo; property to control the
vhardy@4473 1027 effect of exclusions.</p>
vhardy@2780 1028
rossen@3643 1029 <pre><code class=html>
vhardy@5412 1030
vhardy@5412 1031 &lt;style type="text/css"&gt;
vhardy@5412 1032 #grid {
vhardy@5412 1033 display: grid;
vhardy@5412 1034 grid-columns: 25% 50% 25%;
vhardy@5412 1035 grid-rows: 25% 25% 25% 25%;
vhardy@5412 1036 }
vhardy@5412 1037
vhardy@5412 1038 #exclusion {
vhardy@5412 1039 grid-row: 2;
vhardy@5412 1040 grid-row-span: 2;
vhardy@5412 1041 grid-column: 2;
vhardy@5412 1042 wrap-flow: &lt;see below&gt;
vhardy@5412 1043 }
vhardy@5412 1044
vhardy@5412 1045 #rowA, #rowB {
vhardy@5412 1046 grid-row-span: 2;
vhardy@5412 1047 grid-column: 1;
vhardy@5412 1048 grid-column-span: 3;
vhardy@5412 1049 }
vhardy@5412 1050
vhardy@5412 1051 #rowA {
vhardy@5412 1052 grid-row: 1;
vhardy@5412 1053 }
vhardy@5412 1054
vhardy@5412 1055 #rowB {
vhardy@5412 1056 grid-row: 3;
vhardy@5412 1057 }
vhardy@5412 1058 &lt;/style&gt;
vhardy@5412 1059
rossen@3643 1060 &lt;style type="text/css"&gt;
rossen@3643 1061 .exclusion {
rossen@3643 1062 wrap-flow: both;
rossen@3643 1063 position: absolute;
vhardy@5412 1064 left: 20%;
vhardy@5412 1065 top: 20%;
vhardy@5412 1066 width: 50%;
vhardy@5412 1067 height: 50%;
rossen@3643 1068 background-color: rgba(220, 230, 242, 0.5);
rossen@3643 1069 }
rossen@3643 1070 &lt;/style&gt;
vhardy@2780 1071
vhardy@5412 1072 &lt;div id="grid"&gt;
rossen@3643 1073 &lt;div class=”exclusion”&gt;&lt;/div&gt;
vhardy@5412 1074 &lt;div id="rowA" style=”wrap-through: wrap;”&gt; Lorem ipsum dolor sit amet...&lt;/div&gt;
vhardy@5412 1075 &lt;div id="rowB" style=”wrap-through: none;”&gt; Lorem ipsum dolor sit amet...&lt;/div&gt;
rossen@3643 1076 &lt;/div&gt;
rossen@3643 1077 </code></pre>
rossen@3643 1078 <img alt="Example rendering of wrap-through: wrap | none"
vhardy@3707 1079 class=singleImgExample src="images/exclusion_wrap_through.png"
rossen@3716 1080 style="max-width:40%"></div>
rossen@3643 1081 <!-- End section "wrap-through property" -->
vhardy@3707 1082
vhardy@3707 1083 <h4 id=wrap-shorthand-property><span class=secno>3.3.2. </span>The
vhardy@3707 1084 &lsquo;<a href="#wrap0"><code class=property>wrap</code></a>&rsquo;
vhardy@3707 1085 Shorthand Property</h4>
vhardy@3707 1086
vhardy@3707 1087 <table class=propdef>
vhardy@3707 1088 <tbody>
vhardy@3707 1089 <tr>
vhardy@3707 1090 <th>Name:
vhardy@3707 1091
vhardy@3707 1092 <td><dfn id=wrap0 title="'wrap'">wrap</dfn>
vhardy@3707 1093
vhardy@3707 1094 <tr>
vhardy@3707 1095 <th>Value:
vhardy@3707 1096
vhardy@3707 1097 <td><var>&lt;wrap-flow&gt;</var> || <var>&lt;wrap-margin&gt;</var> [ /
vhardy@3707 1098 <var>&lt;wrap-padding&gt;</var>]
vhardy@3707 1099
vhardy@3707 1100 <tr>
vhardy@3707 1101 <th>Initial:
vhardy@3707 1102
vhardy@3707 1103 <td>see individual properties
vhardy@3707 1104
vhardy@3707 1105 <tr>
vhardy@3707 1106 <th>Applies to:
vhardy@3707 1107
vhardy@3707 1108 <td>block-level elements
vhardy@3707 1109
vhardy@3707 1110 <tr>
vhardy@3707 1111 <th>Inherited:
vhardy@3707 1112
vhardy@3707 1113 <td>no
vhardy@3707 1114
vhardy@3707 1115 <tr>
vhardy@3707 1116 <th>Percentages:
vhardy@3707 1117
vhardy@3707 1118 <td>N/A
vhardy@3707 1119
vhardy@3707 1120 <tr>
vhardy@3707 1121 <th>Media:
vhardy@3707 1122
vhardy@3707 1123 <td>visual
vhardy@3707 1124
vhardy@3707 1125 <tr>
vhardy@3707 1126 <th>Computed&nbsp;value:
vhardy@3707 1127
vhardy@3707 1128 <td>see individual properties
vhardy@3707 1129 </table>
vhardy@3707 1130
vhardy@4473 1131 <p> The &lsquo;<a href="#wrap0"><code class=property>wrap</code></a>&rsquo;
vhardy@4473 1132 property is a shorthand property for setting the exclusions properties at
vhardy@4473 1133 the same place in the style sheet.</p>
rossen@3643 1134 <!-- End section "wrap shorthand property" -->
rossen@3643 1135 <!-- End section "Propagation of Exclusions" -->
vhardy@2780 1136
vhardy@3659 1137 <h3 id=exclusions-order><span class=secno>3.4. </span>Exclusions order</h3>
vhardy@2780 1138
vhardy@4473 1139 <p> Exclusions follow the painting order (See <a href="#CSS21"
rossen@3701 1140 rel=biblioentry>[CSS21]<!--{{!CSS21}}--></a> Appendix E). Exclusions are
rossen@3701 1141 applied in reverse to the document order in which they are defined. The
rossen@3701 1142 last exclusion appears on top of all other exclusion, thus it affects the
rossen@3701 1143 inline flow content of all other preceding exclusions or elements
rossen@3701 1144 descendant of the same containing block. To change the ordering of
rossen@3716 1145 exclusions with &lsquo;<code class=property>position</code>&rsquo;
rossen@3716 1146 property computed to a value other than &lsquo;<code
rossen@3716 1147 class=property>static</code>&rsquo;, &lsquo;<code
rossen@3716 1148 class=property>z-index</code>&rsquo; can be used. Exclusions with
rossen@3716 1149 &lsquo;<code class=property>position</code>&rsquo; property computed to
rossen@3716 1150 &lsquo;<code class=property>static</code>&rsquo; are not affected by the
rossen@3716 1151 &lsquo;<code class=property>z-index</code>&rsquo; property, thus follow
rossen@3716 1152 the painting order.
vhardy@3659 1153
vhardy@2780 1154 <div class=example>
vhardy@4473 1155 <p>Ordering of exclusions.</p>
vhardy@2780 1156
rossen@3643 1157 <pre><code class=html>
rossen@3643 1158 &lt;style type="text/css"&gt;
rossen@3643 1159 .exclusion {
rossen@3643 1160 wrap-flow: both;
rossen@3643 1161 position: absolute;
rossen@3643 1162 width: 50%;
rossen@4361 1163 height: auto;
rossen@3643 1164 }
rossen@3643 1165 &lt;/style&gt;
rossen@3643 1166
rossen@3643 1167 &lt;div class=”exclusion” style=”top: 0px; left: 0px;”&gt;
rossen@3643 1168 Lorem ipsum dolor sit amet...
rossen@3643 1169 &lt;/div&gt;
rossen@3643 1170 &lt;div id="orderedExclusion" class=”exclusion” style=”top: 25%; left: 25%;”&gt;
rossen@3643 1171 Lorem ipsum dolor sit amet...
rossen@3643 1172 &lt;/div&gt;
rossen@3643 1173 &lt;div class=”exclusion” style=”top: 50%; left: 50%;”&gt;
rossen@3643 1174 Lorem ipsum dolor sit amet...
rossen@3643 1175 &lt;/div&gt;
rossen@3643 1176 </code></pre>
rossen@3643 1177
rossen@3643 1178 <table class=example-table>
rossen@3643 1179 <tbody>
rossen@3643 1180 <tr>
rossen@3643 1181 <td style="width:50%"><code class=html>#orderedExclusion{ z-index:
rossen@3643 1182 auto; }</code>
rossen@3643 1183
rossen@3643 1184 <td style="width:50%"><code class=html>#orderedExclusion{ z-index: 1;
rossen@3643 1185 }</code>
rossen@3643 1186
rossen@3643 1187 <tr>
rossen@3643 1188 <td><img alt="Example rendering of default exclusion ordering."
rossen@3643 1189 class=singleImgExample src="images/exclusion_ordering.png">
rossen@3643 1190
rossen@3643 1191 <td><img alt="Example rendering of default exclusion ordering."
rossen@3643 1192 class=singleImgExample src="images/exclusion_ordering_z_order.png">
rossen@3643 1193 </table>
vhardy@2780 1194 </div>
rossen@3643 1195 <!-- End section "Order of Exclusions" -->
rossen@3643 1196
rossen@4463 1197 <div class=issue-marker data-bug_id=15183 data-bug_status=NEW> <a
rossen@4463 1198 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15183">Bug-15183</a>
rossen@4463 1199 <div class=issue-details>
vhardy@4473 1200 <p class=short-desc>Is the CSS exclusions processing model incorrect?</p>
rossen@4463 1201 </div>
rossen@4463 1202 </div>
rossen@4463 1203
rossen@4463 1204 <div class=issue-marker data-bug_id=15083 data-bug_status=NEW> <a
rossen@4463 1205 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15083">Bug-15083</a>
rossen@4463 1206 <div class=issue-details>
vhardy@4473 1207 <p class=short-desc>Concerns over Error accumulation vs. performance</p>
rossen@4463 1208 </div>
rossen@4463 1209 </div>
vhardy@4045 1210
vhardy@4473 1211 <p class=issue> The rules for exclusions order and exclusions on absolutely
vhardy@4473 1212 positioned elements (particularly those with static position) build this
vhardy@4473 1213 exclusions model on top of the absolute positioning model in CSS Level 2,
vhardy@4473 1214 rather than on top of floats, the existing exclusion model in CSS Level 1
vhardy@4473 1215 and 2. The CSS Working Group has not reached consensus on whether it
vhardy@4473 1216 intends to base the new exclusions features in this specification on top
vhardy@4473 1217 of absolute positioning (as these sections of this specification do) or on
vhardy@4473 1218 top of floats.
vhardy@4473 1219
vhardy@4473 1220 <p class=note> This module does not depend on any particular positioning
vhardy@4473 1221 scheme.
vhardy@4473 1222
vhardy@4473 1223 <h3 id=exclusions-processing-model><span class=secno>3.5. </span>Processing
vhardy@4473 1224 model</h3>
vhardy@4473 1225
vhardy@5412 1226 <h4 id=exclusions-processing-model-description><span class=secno>3.5.1.
vhardy@5412 1227 </span>Description</h4>
vhardy@5412 1228
vhardy@5412 1229 <p>Applying exclusions is a two-step process:
vhardy@5412 1230
vhardy@5412 1231 <ul>
vhardy@5412 1232 <li><strong>Step 1</strong>: resolve exclusion boxes belonging to each
vhardy@5412 1233 wrapping context
vhardy@5412 1234
vhardy@5412 1235 <li><strong>Step 2</strong>: resolve wrapping contexts and layout each
vhardy@5412 1236 containing block in turn:
vhardy@5412 1237 <ul>
vhardy@5412 1238 <li><strong>Step 2-A</strong>: resolve the position and size of
vhardy@5412 1239 exclusions
vhardy@5412 1240
vhardy@5412 1241 <li><strong>Step 2-B</strong>: layout containing block, wrapping around
vhardy@5412 1242 exclusion areas
vhardy@5412 1243 </ul>
vhardy@5412 1244 </ul>
vhardy@5412 1245
vhardy@5412 1246 <h4
vhardy@5412 1247 id=step-1-resolve-exclusion-boxes-belonging-to-each-wrapping-context><span
vhardy@5412 1248 class=secno>3.5.2. </span>Step 1: resolve exclusion boxes belonging to
vhardy@5412 1249 each wrapping context</h4>
vhardy@5412 1250
vhardy@5412 1251 <p>In this step, the user agent determines which <a
vhardy@5412 1252 href="http://www.w3.org/TR/CSS2/visudet.html#containing-block-details">containing
vhardy@5412 1253 block</a> each <a href="#exclusion-area">exclusion area</a> belongs to.
vhardy@5412 1254 This is a simple step, based on the definition of containing blocks and
vhardy@5412 1255 elements with a computed value for &lsquo;<a href="#wrap-flow"><code
vhardy@5412 1256 class=property>wrap-flow</code></a>&rsquo; that is not <code
vhardy@5459 1257 class=css>none</code>.
vhardy@5412 1258
vhardy@5412 1259 <h4 id="step-2-resolve wrapping-contexts-layout-containing-blocks"><span
vhardy@5412 1260 class=secno>3.5.3. </span>Step 2: resolve wrapping contexts and layout
vhardy@5412 1261 containing blocks</h4>
vhardy@5412 1262
vhardy@5412 1263 <p>In this step, starting from the top of the rendering tree, the the agent
vhardy@5412 1264 processes each containing block in two sub-steps.
vhardy@5412 1265
vhardy@5412 1266 <h4 id=step-2-A-resolve-exclusions-position-and-size><span
vhardy@5412 1267 class=secno>3.5.4. </span>Step 2-A: resolve exclusions position and size</h4>
vhardy@5412 1268
vhardy@5412 1269 <p>Resolving the position and size of exclusions in the wrapping context
vhardy@5412 1270 may or may not require a layout. For example, if an exclusion is
vhardy@5412 1271 absolutely positioned and sized, there is no need to perform a layout to
vhardy@5412 1272 resolve its position and size. In other situations, laying out the
vhardy@5412 1273 containing block's content is required.
vhardy@5412 1274
vhardy@5412 1275 <p>When a layout is required, it is carried out without applying any
vhardy@5412 1276 exclusion area. In other words, the containing block is laid out without a
vhardy@5412 1277 wrapping context.
vhardy@5412 1278
vhardy@5412 1279 <p>Step 2-A yields a position and size for all exclusion areas in the
vhardy@5412 1280 wrapping context.
vhardy@5412 1281
vhardy@5412 1282 <p>Scrolling is ignored in this step when resolving the position and size
vhardy@5412 1283 of &lsquo;<code class=css>position:fixed</code>&rsquo;
vhardy@5412 1284 <span>exclusions</span>.
vhardy@5412 1285
vhardy@5412 1286 <h4 id=step-2-B-layout-containing-block-applying-wrapping><span
vhardy@5412 1287 class=secno>3.5.5. </span>Step 2-B: layout containing block applying
vhardy@5412 1288 wrapping</h4>
vhardy@5412 1289
vhardy@5459 1290 <p>Finally, the content of the containing block is laid out, with the
vhardy@5459 1291 inline content wrapping around the wrapping content's exclusion areas.
vhardy@5412 1292
vhardy@5412 1293 <h4 id=exclusions-processing-model-example><span class=secno>3.5.6.
vhardy@4473 1294 </span>Example</h4>
vhardy@4473 1295
vhardy@4473 1296 <p>This section illustrates the exclusions processing model with an
vhardy@4473 1297 example. It is meant to be simple. Yet, it contains enough complexity to
vhardy@4473 1298 address the issues of layout dependencies and re-layout.
vhardy@4473 1299
vhardy@4473 1300 <p>The code snippet in the following example has two exclusions affecting
vhardy@5125 1301 the document's inline content.
vhardy@4473 1302
vhardy@4473 1303 <div class=example>
vhardy@4473 1304 <pre class="code idl">
vhardy@4473 1305 &lt;html&gt;
vhardy@4473 1306 &lt;body&gt;
vhardy@4473 1307 &lt;div id="d1" style="width:100%;height:auto;position:relative"&gt;
vhardy@5118 1308 Lorem ipsusm ...
vhardy@5459 1309 &lt;p id="e1" style="wrap-flow: both;position:absolute; left:50%; top:50%;
vhardy@4473 1310 width:40%;height:40%; margin-left:-20%;" &gt;&lt/p&gt;
vhardy@4473 1311 &lt;/div&gt;
vhardy@4473 1312 &lt;div id="d2" style="width:100%;height:auto;position:static"&gt;
vhardy@5118 1313 Lorem ipsusm ...
vhardy@5459 1314 &lt;p id="e2" style="wrap-flow: both;position:absolute; right:5ex; top:1em;
vhardy@4473 1315 width:12ex;height:10em; margin-left:-20%;" &gt;&lt/p&gt;
vhardy@4473 1316 &lt;/div&gt;
vhardy@4473 1317 &lt;/body&gt;
vhardy@4473 1318 &lt;/html&gt;
vhardy@4473 1319 </pre>
vhardy@4473 1320 </div>
vhardy@4473 1321
vhardy@5118 1322 <p>The following figures illustrate:
vhardy@5118 1323
vhardy@5118 1324 <ul>
vhardy@5118 1325 <li>the document's DOM tree
vhardy@5118 1326
vhardy@5125 1327 <li>the layout tree of generated block boxes
vhardy@5118 1328 </ul>
vhardy@4473 1329
vhardy@4473 1330 <div class=figure> <img src="images/processing-model-example-dom.svg"
vhardy@4473 1331 width=200>
vhardy@5118 1332 <p class=caption>DOM tree</p>
vhardy@4473 1333 </div>
vhardy@4473 1334
vhardy@4473 1335 <div class=figure> <img
vhardy@4473 1336 src="images/processing-model-example-layout-tree.svg" width=250>
vhardy@5125 1337 <p class=caption>Layout tree of generated block boxes</p>
vhardy@4473 1338 </div>
vhardy@4473 1339
vhardy@5412 1340 <h5 id=step-1-resolve-exclusion-boxes-belonging><span class=secno>3.5.6.1.
vhardy@5412 1341 </span>Step 1: resolve exclusion boxes belonging to each wrapping context</h5>
vhardy@5412 1342
vhardy@4473 1343 <p>The figures illustrate how the boxes corresponding to the element
vhardy@4473 1344 sometimes have a different containment hierarchy in the layout tree than
vhardy@5118 1345 in the DOM tree. For example, the box generated by <code
vhardy@5118 1346 class=idl>e1</code> is positioned in its containing block's box, which is
vhardy@5118 1347 the <code class=idl>d1-block</code> box, because <code class=idl>e1</code>
vhardy@5118 1348 is absolutely positioned and <code class=idl>d1</code> is relatively
vhardy@4473 1349 positioned. However, while <code class=idl>e2</code> is also absolutely
vhardy@4473 1350 positioned, its containing block is the initial containing block (ICB).
vhardy@4473 1351 See the section 10.1 of the CSS 2.1 specification (<a href="#CSS21"
vhardy@4473 1352 rel=biblioentry>[CSS21]<!--{{!CSS21}}--></a>) for details.
vhardy@4473 1353
vhardy@4473 1354 <p>As a result of the computation of containing blocks for the tree, the
vhardy@5118 1355 boxes belonging to the wrapping contexts of all the elements can be
vhardy@5125 1356 determined:
vhardy@4473 1357
vhardy@4473 1358 <ul>
vhardy@4473 1359 <li>The wrapping context for the html element contains the <code
vhardy@5118 1360 class=idl>e2</code> box: WC-1 (Wrapping Context 1)
vhardy@4473 1361
vhardy@4473 1362 <li>The wrapping context for the body element inherits the html element's
vhardy@5118 1363 wrapping context: WC-1
vhardy@4473 1364
vhardy@4473 1365 <li>The wrapping context for <code class=idl>d1</code> inherits the body
vhardy@5118 1366 element's wrapping context and adds the <code class=idl>e1</code> box to
vhardy@5118 1367 it. So the wrapping context is made of both the <code class=idl>e1</code>
vhardy@5118 1368 box and the <code class=idl>e2</code> box: WC-2
vhardy@4473 1369
vhardy@4473 1370 <li>The wrapping context for <code class=idl>d2</code> inherits the body
vhardy@5118 1371 element's wrapping context: WC-1
vhardy@4473 1372 </ul>
vhardy@4473 1373
vhardy@5412 1374 <h5 id=step-2-resolve-wrapping-contexts-and-lay><span class=secno>3.5.6.2.
vhardy@5118 1375 </span>Step 2: resolve wrapping contexts and layout containing blocks</h5>
vhardy@5118 1376
vhardy@5118 1377 <p>In this step, each containing block is processed in turn. For each
vhardy@5118 1378 containing block, we (conceptually) go through two phases:
vhardy@5118 1379
vhardy@5118 1380 <ol>
vhardy@5132 1381 <li>resolve the wrapping context: resolve the position and size of its
vhardy@5132 1382 exclusions
vhardy@5118 1383
vhardy@5118 1384 <li>layout the containing block
vhardy@5118 1385 </ol>
vhardy@5118 1386
vhardy@5118 1387 <p>In our example, this breaks down to:
vhardy@5118 1388
vhardy@5118 1389 <ol>
vhardy@5125 1390 <li>resolve the position and size of the exclusions belonging to WC-1:
vhardy@5125 1391 RWC-1 (Resolved Wrapping Context 1).
vhardy@5118 1392
vhardy@5118 1393 <li>layout the initial containing block (i.e., layout its content):
vhardy@5118 1394 <ol>
vhardy@5118 1395 <li>resolve the html element's wrapping context: RWC-1
vhardy@5118 1396
vhardy@5118 1397 <li>layout the html element:
vhardy@5118 1398 <ol>
vhardy@5118 1399 <li>resolve the body element's wrapping context: RWC-1
vhardy@5118 1400
vhardy@5118 1401 <li>layout the body element:
vhardy@5118 1402 <ol>
vhardy@5118 1403 <li>resolve the d1 element's wrapping context: RWC-2
vhardy@5118 1404
vhardy@5118 1405 <li>layout the d1 element
vhardy@5118 1406
vhardy@5118 1407 <li>resolve the d2 element's wrapping context: RWC-1
vhardy@5118 1408
vhardy@5118 1409 <li>layout the d2 element
vhardy@5118 1410 </ol>
vhardy@5118 1411 </ol>
vhardy@5118 1412 </ol>
vhardy@5118 1413 </ol>
vhardy@5118 1414
vhardy@5412 1415 <h6 id=resolving-rwc-1><span class=secno>3.5.6.2.1. </span>Resolving RWC-1</h6>
vhardy@5125 1416
vhardy@5125 1417 <p>The top-most wrapping context in the layout tree contains the <code
vhardy@5125 1418 class=idl>e2</code> exclusion. Its position and size needs to be resolved.
vhardy@5118 1419 In general, computing an exclusion's position and size may or may not
vhardy@5118 1420 require laying out other content. In our example, no content needs to be
vhardy@5125 1421 laid out to resolve the <code class=idl>e2</code> exclusion's position
vhardy@5125 1422 because it is absolutely positioned and its size can be resolved without
vhardy@5125 1423 layout either. At this point, RWC-1 is resolved and can be used when
vhardy@5125 1424 laying inline content out.
vhardy@5125 1425
vhardy@5412 1426 <h6 id=resolving-rwc-2><span class=secno>3.5.6.2.2. </span>Resolving RWC-2</h6>
vhardy@5118 1427
vhardy@5459 1428 <p>The process is similar: the position of the <code class=idl>e1</code>
vhardy@5459 1429 exclusion needs to be resolved. Again, resolving the exclusion's position
vhardy@5459 1430 and size may require processing the containing block (d1 here). It is the
vhardy@5459 1431 case here because the size and position of <code class=idl>e1</code>
vhardy@5459 1432 depend on resolving the percentage lengths. The percentages are relative
vhardy@5459 1433 to the size of <code class=idl>d1</code>&lsquo;<code class=css>s box. As a
vhardy@5459 1434 result, in order to resolve a size for <code
vhardy@5459 1435 class=idl>d1</code></code>&rsquo;s box, a first layout of <code
vhardy@5459 1436 class=idl>d1</code> is done without any wrapping context (i.e., no
vhardy@5459 1437 exclusions applied). The layout yields a position and size for <code
vhardy@5459 1438 class=idl>e1</code>&lsquo;<code class=css>s box. </code>
vhardy@5118 1439
vhardy@5118 1440 <p>At this point, RWC-2 is resolved because the position and size of both
vhardy@5125 1441 e1 and e2 are resolved.
vhardy@5118 1442
vhardy@5118 1443 <p class=note>The important aspect of the above processing example is that
vhardy@5125 1444 once an element&rsquo;s wrapping context is resolved (by resolving its
vhardy@5118 1445 exclusions' position and size), the position and size of the exclusions
vhardy@5125 1446 are not re-processed if the element's size changes between the layout that
vhardy@5412 1447 may be done without considering any wrapping context (as for RWC-2) and
vhardy@5412 1448 the layout done with the resolved wrapping context. This is what breaks
vhardy@5412 1449 the possible circular dependency between the resolution of wrapping
vhardy@5412 1450 contexts and the layout of containing blocks.
vhardy@5412 1451
vhardy@5412 1452 <h3 id=floats-and-exclusions><span class=secno>3.6. </span>Floats and
vhardy@5412 1453 exclusions</h3>
vhardy@5412 1454
vhardy@5412 1455 <h4 id=floats-and-exclusions-similarities><span class=secno>3.6.1.
vhardy@5412 1456 </span>Similarities</h4>
vhardy@5412 1457
vhardy@5412 1458 <p>This section is non-normative.
vhardy@5412 1459
vhardy@5412 1460 <p>There are similarities between floats an exclusions in that inline
vhardy@5412 1461 content wraps around floats and also wraps around exclusion areas.
vhardy@5412 1462 However, there are very significant differences.
vhardy@5412 1463
vhardy@5412 1464 <h4 id=floats-and-exclusions-differences><span class=secno>3.6.2.
vhardy@5412 1465 </span>Differences</h4>
vhardy@5412 1466
vhardy@5412 1467 <p>This section is non-normative.
vhardy@5412 1468
vhardy@5412 1469 <ul>
vhardy@5412 1470 <li><strong>scope</strong>. While floats apply to content that follows in
vhardy@5412 1471 the document, exclusions apply to content in their containing block.
vhardy@5412 1472
vhardy@5412 1473 <li><strong>positioning</strong>. Floats are part of the inline flow and
vhardy@5412 1474 &lsquo;<code class=property>float</code>&rsquo; on the line box. Authors
vhardy@5412 1475 can control how the floats move on the line box, to the right or to the
vhardy@5412 1476 left. By contrast, exclusions can be positioned using any positioning
vhardy@5412 1477 scheme such as grid layout (<a href="#CSS3-GRID-LAYOUT"
vhardy@5412 1478 rel=biblioentry>[CSS3-GRID-LAYOUT]<!--{{CSS3-GRID-LAYOUT}}--></a>),
vhardy@5412 1479 flexible box (<a href="#CSS3-FLEXBOX"
vhardy@5412 1480 rel=biblioentry>[CSS3-FLEXBOX]<!--{{CSS3-FLEXBOX}}--></a>) or any other
vhardy@5412 1481 CSS positioning scheme.
vhardy@5412 1482
vhardy@5412 1483 <li><strong>separation of concerns</strong>. Making an element a float
vhardy@5412 1484 determines both its positioning scheme and its effect on inline content.
vhardy@5412 1485 Making an element an exclusion only determines its impact on inline
vhardy@5412 1486 content and does not impose constraints on its positioning method.
vhardy@5412 1487 </ul>
vhardy@5412 1488
vhardy@5412 1489 <h4 id=floats-and-exclusions-interoperability><span class=secno>3.6.3.
vhardy@5412 1490 </span>Interoperability</h4>
vhardy@5412 1491
vhardy@5412 1492 <h5 id=effect-of-floats-on-exclusions><span class=secno>3.6.3.1.
vhardy@5412 1493 </span>Effect of floats on exclusions</h5>
vhardy@5412 1494
vhardy@5412 1495 <p>Floats have an effect on the positioning of exclusions and the layout of
vhardy@5412 1496 their inline content. For example, if an exclusion is an inline-box which
vhardy@5412 1497 happens to be on the same line as a float, its' position, as computed in
vhardy@5412 1498 <a href=step-2-A-resolve-exclusions-position-and-size>Step 2-A</a> will be
vhardy@5412 1499 impacted by the float, as is any other inline content.
vhardy@5412 1500
vhardy@5412 1501 <h5 id=effect-of-exclusions-on-floats><span class=secno>3.6.3.2.
vhardy@5412 1502 </span>Effect of exclusions on floats</h5>
vhardy@5412 1503
vhardy@5412 1504 <p>Exclusions have an effect on the positioning of floats as they have an
vhardy@5412 1505 effect on inline content. Therefore, in <a
vhardy@5412 1506 href=step-2-B-layout-containing-block-applying-wrapping>Step 2-B</a>,
vhardy@5412 1507 floats will avoid <a href="#exclusion-area">exclusion areas</a>.</p>
rossen@3643 1508 <!-- End section "Exclusions" -->
rossen@3643 1509
vhardy@3659 1510 <h2 id=shapes><span class=secno>4. </span>Shapes</h2>
rossen@3643 1511
rossen@4463 1512 <div class=issue-marker data-bug_id=15091 data-bug_status=NEW> <a
vhardy@4045 1513 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15091">Bug-15091</a><br>
rossen@4463 1514
rossen@4463 1515 <div class=issue-details>
vhardy@4473 1516 <p class=short-desc>Simplify the syntax for shapes</p>
rossen@4463 1517 </div>
vhardy@4045 1518 </div>
vhardy@4045 1519
vhardy@4473 1520 <p> Shapes define arbitrary geometric contours around which or into which
vhardy@4473 1521 inline flow content flows. There are two different types of shapes –
vhardy@4473 1522 &lsquo;<code class=property>outside</code>&rsquo; and &lsquo;<code
vhardy@3659 1523 class=property>inside</code>&rsquo;. The outside shape defines the <a
vhardy@5125 1524 href="#exclusion-area">exclusion area</a> for an <span>exclusion
vhardy@5412 1525 element</span> or the <a href="#float-area">float area</a> for a float.
vhardy@5412 1526 The inside shape defines an element's <span>content shape</span> and the
vhardy@5412 1527 element's inline content will flow within that shape.
vhardy@5412 1528
vhardy@5412 1529 <p class=note>It is important to note that while outside shapes only apply
vhardy@5412 1530 to <span>exclusions</span> and floats, inside shapes apply to all
vhardy@5412 1531 block-level elements.
vhardy@5412 1532
vhardy@5412 1533 <h3 id=relation-to-box-model-and-float-behavior><span class=secno>4.1.
vhardy@5412 1534 </span>Relation to the box model and float behavior</h3>
vhardy@5412 1535
vhardy@5412 1536 <p> While the boundaries used for wrapping inline flow content outside and
vhardy@5412 1537 inside an element can be defined using shapes, the actual box model does
vhardy@5412 1538 not change. If the element has specified margins, borders or paddings they
vhardy@5412 1539 will be computed and rendered according to the <a href="#CSS3BOX"
vhardy@5412 1540 rel=biblioentry>[CSS3BOX]<!--{{!CSS3BOX}}--></a> module.
vhardy@5412 1541
vhardy@5412 1542 <p> However, floats are an exception. If a float has an outside shape, its
vhardy@5412 1543 positioning is resolved as <a
vhardy@5412 1544 href="http://www.w3.org/TR/CSS2/visuren.html#float-position">defined</a>
vhardy@5412 1545 in <a href="#CSS21" rel=biblioentry>[CSS21]<!--{{!CSS21}}--></a> but using
vhardy@5412 1546 the outside shape's bounding box is used in lieu of the float's margin
vhardy@5412 1547 box.
rossen@3643 1548
rossen@3643 1549 <div class=example>
vhardy@4473 1550 <p>CSS &lsquo;<code class=property>shape</code>&rsquo; and CSS box model
vhardy@4473 1551 relation.</p>
rossen@3643 1552
rossen@3643 1553 <pre><code class=html>
rossen@3643 1554 &lt;style type="text/css"&gt;
rossen@3643 1555 .exclusion {
rossen@3643 1556 wrap-flow: both;
rossen@3643 1557 position: absolute;
rossen@3762 1558 shape-outside: circle(50%, 50%, 50%);
vhardy@3659 1559 border: 1px solid red;
rossen@3643 1560 }
rossen@3643 1561 &lt;/style&gt;
rossen@3643 1562
vhardy@5459 1563 &lt;div style=”position: relative;”&gt;
rossen@3643 1564 &lt;div class=”exclusion”&gt;&lt;/div&gt;
rossen@3643 1565 Lorem ipsum dolor sit amet...
rossen@3643 1566 &lt;/div&gt;
rossen@3643 1567 </code></pre>
rossen@3643 1568 <img alt="Example rendering of circle shape and box model."
vhardy@3707 1569 class=singleImgExample src="images/shapes_CSS2.1_MBP.png"
vhardy@3707 1570 style="max-width:40%"></div>
rossen@3643 1571
vhardy@5412 1572 <h3 id=shapes-from-svg-syntax><span class=secno>4.2. </span>Shapes from SVG
rossen@3643 1573 Syntax</h3>
rossen@3643 1574
vhardy@4473 1575 <p> Shapes can be specified using <a
vhardy@4473 1576 href="http://www.w3.org/TR/SVG/shapes.html">SVG basic shapes</a>.
rossen@3643 1577
vhardy@5412 1578 <h4 id=supported-svg-shapes><span class=secno>4.2.1. </span>Supported SVG
rossen@3643 1579 Shapes</h4>
rossen@3643 1580
vhardy@4473 1581 <p> The following SVG shapes are supported by the CSS shapes module.
rossen@3643 1582
rossen@3643 1583 <dl>
rossen@4465 1584 <dt>rectangle(&lt;length&gt;{4} [ curve &lt;length&gt;{1,2} ]? )
rossen@3643 1585
rossen@3643 1586 <dd>
rossen@3643 1587 <ul>
vhardy@4473 1588 <li>The four values represent <strong>x, y, width and height</strong> -
vhardy@4473 1589 define the bounding box of the rectangle
vhardy@4473 1590
vhardy@4473 1591 <li> The two &lsquo;<code class=property>curve</code>&rsquo; values
vhardy@4473 1592 represent <strong> rx</strong> and <strong>ry</strong> - define the
vhardy@4473 1593 rounded rectangles, the <strong>x</strong> and <strong>y</strong> axis
vhardy@4473 1594 and radius of the ellipse used to round off the corners of the
vhardy@4473 1595 rectangle
rossen@3643 1596 </ul>
rossen@3643 1597
rossen@4465 1598 <dt>circle(&lt;length&gt;{3})
rossen@3643 1599
rossen@3643 1600 <dd>
rossen@3643 1601 <ul>
vhardy@4473 1602 <li> The three values values represent <strong>cx</strong>,
vhardy@4473 1603 <strong>cy</strong>, <strong>r</strong> - The <strong>x</strong> and
vhardy@4473 1604 <strong>y</strong> axis coordinate of the center of the circle and the
vhardy@4473 1605 radius of the circle
rossen@3643 1606 </ul>
rossen@3643 1607
rossen@4465 1608 <dt>ellipse(&lt;length&gt;{4})
rossen@3643 1609
rossen@3643 1610 <dd>
rossen@3643 1611 <ul>
vhardy@4473 1612 <li>The four values represent <strong>cx</strong>, <strong>cy</strong>,
vhardy@4473 1613 <strong>rx</strong> and <strong>ry</strong> - The <strong>x</strong>
vhardy@4473 1614 and <strong>y</strong> coordinate of the center of the ellipse and the
vhardy@4473 1615 <strong>x</strong> and <strong>y</strong> axis radius of the ellipse
rossen@3643 1616 </ul>
rossen@3643 1617
rossen@4463 1618 <dt>polygon([&lt;fill-rule&gt;,]? &lt;length&gt;{2}#)
rossen@3643 1619
rossen@3643 1620 <dd>
rossen@3643 1621 <ul>
vhardy@4473 1622 <li><strong>fillRule</strong> - The filling rule used to determine the
vhardy@4473 1623 interior of the polygon. See fill-rule property in SVG for details.
vhardy@4473 1624 Possible values are nonzero or evenodd. Default value when omitted is
vhardy@4473 1625 nonzero.
vhardy@4473 1626
vhardy@4473 1627 <li> The two length values represent <strong>xi</strong> and
vhardy@5214 1628 <strong>yi</strong> - the <strong>x</strong> and <strong>y</strong>
vhardy@5214 1629 axis coordinates of the i-th vertex of the polygon.
rossen@3643 1630 </ul>
rossen@3643 1631
vhardy@4473 1632 <p> If the polygon is not closed the user-agent will automatically add a
vhardy@4473 1633 new vertex at the end.</p>
rossen@3643 1634 <br>
rossen@3643 1635 </dl>
rossen@3643 1636
vhardy@5412 1637 <h4 id=referencing-svg-shapes><span class=secno>4.2.2. </span>Referencing
vhardy@3659 1638 SVG shapes</h4>
rossen@3643 1639
vhardy@4473 1640 <p>An SVG shape can be referenced using the <code>url()</code> syntax. The
vhardy@4473 1641 shape can be any of the <a href="http://www.w3.org/TR/SVG/shapes.html">SVG
vhardy@4473 1642 basic shapes</a> or a <a href="http://www.w3.org/TR/SVG/paths.html">path
vhardy@4473 1643 element</a>.
vhardy@4473 1644
vhardy@4473 1645 <p>In all cases, percentages are resolved from the border box of the
vhardy@4473 1646 element.
rossen@3643 1647
vhardy@3659 1648 <div class=example> <code class=html></code>
vhardy@3659 1649 <pre>
vhardy@3659 1650 &lt;style&gt;
vhardy@3659 1651 .in-a-circle {
vhardy@3659 1652 shape-inside: url(#circle_shape);
vhardy@3659 1653 }
vhardy@3659 1654
vhardy@3659 1655 .in-a-path {
vhardy@3659 1656 shape-inside: url(#path-shape);
vhardy@3659 1657 }
vhardy@3659 1658
vhardy@3659 1659 &lt;/style&gt;
vhardy@3659 1660
vhardy@3659 1661 &lt;svg ...&gt;
vhardy@5126 1662 &lt;circle id="circle_shape" cx="50%" cy="50%" r="50%" /&gt;
vhardy@3659 1663 &lt;path id="path-shape" d="..." /&gt;
vhardy@3659 1664 &lt;/svg&gt;
vhardy@3659 1665
vhardy@3659 1666 &lt;div class="in-a-circle"&gt;...&lt;/div&gt;
vhardy@3659 1667 &lt;div class="in-a-path"&gt;...&lt;/div&gt;
vhardy@3659 1668 </pre>
vhardy@3659 1669 </div>
vhardy@3659 1670
vhardy@4473 1671 <p> When using the SVG syntax or referencing SVG elements to define shapes,
vhardy@4473 1672 all the lengths expressed in percentages are resolved from the border box
vhardy@4473 1673 of the element. The coordinate system for the shape has its origin on the
vhardy@5126 1674 top-left corner of the border box with the x-axis running to the right and
vhardy@4473 1675 the y-axis running downwards. If the SVG element uses unitless coordinate
vhardy@4473 1676 values, they are equivalent to using &lsquo;<code
vhardy@4473 1677 class=property>px</code>&rsquo; units. If the border box of the element is
vhardy@4473 1678 dependent on auto sizing (i.e., the element's &lsquo;<code
vhardy@4473 1679 class=property>width</code>&rsquo; or &lsquo;<code
vhardy@3707 1680 class=property>height</code>&rsquo; property is &lsquo;<code
vhardy@5126 1681 class=property>auto</code>&rsquo;), then the percentage values resolve to
vhardy@5126 1682 0.</p>
vhardy@3659 1683 <!-- End section "Shapes from SVG Syntax -->
vhardy@3659 1684
vhardy@5412 1685 <h3 id=shapes-from-image><span class=secno>4.3. </span>Shapes from Image</h3>
vhardy@3659 1686
rossen@4463 1687 <div class=issue-marker data-bug_id=15093 data-bug_status=NEW> <a
vhardy@4045 1688 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15093">Bug-15093</a><br>
rossen@4463 1689
rossen@4463 1690 <div class=issue-details>
vhardy@4473 1691 <p class=short-desc> Do we need to provide properties to repeat exclusion
vhardy@4473 1692 images as for the background-image property?</p>
rossen@4463 1693 </div>
rossen@4463 1694 </div>
rossen@4463 1695
rossen@4463 1696 <div class=issue-marker data-bug_id=15090 data-bug_status=NEW> <a
vhardy@4045 1697 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15090">Bug-15090</a><br>
rossen@4463 1698
rossen@4463 1699 <div class=issue-details>
vhardy@4473 1700 <p class=short-desc> Use the contour() keyword. &lt;img id=shape-me
vhardy@4473 1701 url=foo&gt;&lt;style&gt;#shape-me { shape-outside: contour;
vhardy@4473 1702 }&lt;/style&gt; //equal to &lsquo;<code class=css>shape-outside:
vhardy@4473 1703 url(foo)</code>&rsquo; shape-outside: attr(src as url);</p>
rossen@4463 1704 </div>
rossen@4463 1705 </div>
rossen@4463 1706
rossen@4463 1707 <div class=issue-marker data-bug_id=15092 data-bug_status=NEW> <a
rossen@4463 1708 href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=15092">Bug-15092</a>
rossen@4463 1709 <div class=issue-details>
vhardy@4473 1710 <p class=short-desc>Specify what happens with animated images</p>
rossen@4463 1711 </div>
rossen@4463 1712 </div>
vhardy@4045 1713
vhardy@4473 1714 <p> Another way of defining shapes is by specifying a source image whose
vhardy@4473 1715 alpha channel is used to compute the inside or outside shape. The shape is
vhardy@4473 1716 computed to be the path that encloses the area where the opacity of the
vhardy@4473 1717 specified image is greater than the &lsquo;<a
vhardy@4473 1718 href="#shape-image-threshold"><code
rossen@3643 1719 class=property>shape-image-threshold</code></a>&rsquo; value. If the
rossen@3643 1720 &lsquo;<a href="#shape-image-threshold"><code
rossen@3643 1721 class=property>shape-image-threshold</code></a>&rsquo; is not specified,
rossen@3643 1722 the initial value to be considered is 0.5.
rossen@3643 1723
vhardy@4473 1724 <p class=note> Note, images can define cavities and inline flow content
vhardy@4473 1725 should wrap inside them. In order to avoid that, another exclusion element
vhardy@5468 1726 can be overlaid.
vhardy@5468 1727
vhardy@5468 1728 <p>For animated raster image formats (such as <a
vhardy@5468 1729 href="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">GIF</a>), the first
vhardy@5468 1730 frame of the animation sequence is used. For <a
vhardy@5468 1731 href="http://www.w3.org/TR/2002/WD-SVG2Reqs-20020422/">SVG</a> images (<a
vhardy@5468 1732 href="#SVG11" rel=biblioentry>[SVG11]<!--{{SVG11}}--></a>), the image is
vhardy@5468 1733 rendered without animations applied.</p>
rossen@3643 1734 <!-- End section "Shapes from image" -->
rossen@3643 1735
vhardy@5412 1736 <h3 id=declaring-shapes><span class=secno>4.4. </span>Declaring Shapes</h3>
rossen@3643 1737
vhardy@4473 1738 <p> Shapes are declared with the &lsquo;<a href="#shape-outside"><code
vhardy@3659 1739 class=property>shape-outside</code></a>&rsquo; or &lsquo;<a
rossen@3643 1740 href="#shape-inside"><code class=property>shape-inside</code></a>&rsquo;
vhardy@3659 1741 properties. The &lsquo;<a href="#shape-outside"><code
vhardy@3659 1742 class=property>shape-outside</code></a>&rsquo; property changes the
vhardy@5412 1743 geometry of an <span>exclusion element</span>&lsquo;<code class=css>s <a
vhardy@5412 1744 href="#exclusion-area">exclusion area</a> or or a float
vhardy@5412 1745 element</code>&rsquo;s <a href="#float-area">float area</a>. If the
vhardy@5412 1746 element is not an <span>exclusion element</span> (see the &lsquo;<a
vhardy@5412 1747 href="#wrap-flow"><code class=property>wrap-flow</code></a>&rsquo;
vhardy@5412 1748 property) or a float, then the &lsquo;<a href="#shape-outside"><code
vhardy@5125 1749 class=property>shape-outside</code></a>&rsquo; property has no effect.
rossen@3643 1750
vhardy@4473 1751 <p> The &lsquo;<a href="#shape-inside"><code
vhardy@4473 1752 class=property>shape-inside</code></a>&rsquo; property defines an
vhardy@4473 1753 element's <a href="#content-area">content area</a> and the element's
vhardy@5412 1754 inline flow content wraps into that shape. The &lsquo;<a
vhardy@5412 1755 href="#shape-inside"><code class=property>shape-inside</code></a>&rsquo;
vhardy@5412 1756 property applies to all block-level elements.
vhardy@5412 1757
vhardy@5412 1758 <h4 id=shape-outside-property><span class=secno>4.4.1. </span>The &lsquo;<a
rossen@3643 1759 href="#shape-outside"><code class=property>shape-outside</code></a>&rsquo;
rossen@3643 1760 Property</h4>
rossen@3643 1761
vhardy@2780 1762 <table class=propdef>
vhardy@2780 1763 <tbody>
vhardy@2780 1764 <tr>
vhardy@2780 1765 <th>Name:
vhardy@2780 1766
rossen@3643 1767 <td><dfn id=shape-outside title="'shape-outside'">shape-outside</dfn>
vhardy@2780 1768
vhardy@2780 1769 <tr>
vhardy@2780 1770 <th>Value:
vhardy@2780 1771
vhardy@3659 1772 <td><var>auto</var> | <var>&lt;shape&gt;</var> | <var>&lt;uri&gt;</var>
vhardy@2780 1773
vhardy@2780 1774 <tr>
vhardy@2780 1775 <th>Initial:
vhardy@2780 1776
vhardy@2780 1777 <td>auto
vhardy@2780 1778
vhardy@2780 1779 <tr>
vhardy@2780 1780 <th>Applies to:
vhardy@2780 1781
vhardy@5412 1782 <td>exclusion elements and floats
vhardy@2780 1783
vhardy@2780 1784 <tr>
vhardy@2780 1785 <th>Inherited:
vhardy@2780 1786
vhardy@2780 1787 <td>no
vhardy@2780 1788
vhardy@2780 1789 <tr>
vhardy@2780 1790 <th>Percentages:
vhardy@2780 1791
vhardy@2780 1792 <td>N/A
vhardy@2780 1793
vhardy@2780 1794 <tr>
vhardy@2780 1795 <th>Media:
vhardy@2780 1796
vhardy@2780 1797 <td>visual
vhardy@2780 1798
vhardy@2780 1799 <tr>
vhardy@2780 1800 <th>Computed&nbsp;value:
vhardy@2780 1801
rossen@3643 1802 <td>computed lengths for &lt;shape&gt;, the absolute URI for
vhardy@3659 1803 &lt;uri&gt;, otherwise as specified
vhardy@2780 1804 </table>
vhardy@2780 1805
vhardy@4473 1806 <p>The values of this property have the following meanings:
vhardy@2780 1807
rossen@3643 1808 <dl>
rossen@3643 1809 <dt><dfn id=auto0 title="'shape-outside'!!'auto'">auto</dfn>
vhardy@2780 1810
rossen@3643 1811 <dd>The shape is computed based on the border box of the element.
rossen@3643 1812 </dl>
vhardy@2780 1813
rossen@3643 1814 <dl>
rossen@3643 1815 <dt><dfn id=ltshapegt
rossen@3643 1816 title="'shape-outside'!!'&lt;shape&gt;'">&lt;shape&gt;</dfn>
rossen@3643 1817
rossen@3643 1818 <dd> The shape is computed based on the values of one of &lsquo;<code
vhardy@5466 1819 class=property>rectangle</code>&rsquo;, &lsquo;<code
vhardy@5466 1820 class=property>circle</code>&rsquo;, &lsquo;<code
vhardy@5466 1821 class=property>ellipse</code>&rsquo; or &lsquo;<code
vhardy@5466 1822 class=property>polygon</code>&rsquo;.
rossen@3643 1823 </dl>
rossen@3643 1824
rossen@3643 1825 <dl>
vhardy@3659 1826 <dt><dfn id=lturigt
vhardy@3659 1827 title="'shape-outside'!!'&lt;uri&gt;'">&lt;uri&gt;</dfn>
rossen@3643 1828
vhardy@3659 1829 <dd> If the &lt;uri&gt; references an SVG shape element, that element
vhardy@3659 1830 defines the shape. Otherwise, if the &lt;uri&gt; references an image, the
vhardy@3659 1831 shape is extracted and computed based on the alpha channel of the
vhardy@3659 1832 specified image. If the &lt;uri&gt; does not reference an SVG shape
vhardy@3659 1833 element or an image, the effect is as if the value &lsquo;<code
vhardy@3659 1834 class=property>auto</code>&rsquo; had been specified.
rossen@3643 1835 </dl>
vhardy@3707 1836
vhardy@4057 1837 <div class=figure> <img
vhardy@4057 1838 alt="arbitrary shapes for excluions. Illustrates how content flows around shapes"
vhardy@4057 1839 src="images/shapes-exclusions.png" width="70%">
vhardy@4473 1840 <p class=caption>Arbitrary shapes for exclusions</p>
vhardy@3707 1841 </div>
vhardy@3707 1842
vhardy@3707 1843 <div>
vhardy@4473 1844 <p>The above figure shows how &lsquo;<a href="#shape-outside"><code
vhardy@3707 1845 class=property>shape-outside</code></a>&rsquo; shapes impact the
vhardy@3707 1846 exclusion areas. The red box represents an element's content box and
vhardy@3707 1847 &lsquo;<code class=property>A</code>&rsquo;, &lsquo;<code
vhardy@3707 1848 class=property>B</code>&rsquo;, &lsquo;<code
vhardy@3707 1849 class=property>C</code>&rsquo; and &lsquo;<code
vhardy@3707 1850 class=property>C</code>&rsquo; represent exclusions with a complex shape
vhardy@3707 1851 and their &lsquo;<a href="#wrap-flow"><code
vhardy@3707 1852 class=property>wrap-flow</code></a>&rsquo; property set to &lsquo;<code
vhardy@3707 1853 class=property>both</code>&rsquo;, &lsquo;<code
rossen@3884 1854 class=property>start</code>&rsquo;, &lsquo;<code
rossen@3884 1855 class=property>end</code>&rsquo; and &lsquo;<code
vhardy@3707 1856 class=property>clear</code>&rsquo;, respectively.</p>
vhardy@3707 1857
vhardy@4473 1858 <p>As illustrated in the picture, when an exclusion allows wrapping on all
vhardy@4473 1859 sides, text can flow inside &lsquo;<code
vhardy@4473 1860 class=property>holes</code>&rsquo; in the exclusion (as for exclusion
vhardy@4473 1861 &lsquo;<code class=property>A</code>&rsquo;). Otherwise, the exclusion
vhardy@4473 1862 clears the area on the side(s) defined by wrap flow, as illustrated for
vhardy@4473 1863 &lsquo;<code class=property>B</code>&rsquo;, &lsquo;<code
vhardy@4473 1864 class=property>C</code>&rsquo; and &lsquo;<code
vhardy@3707 1865 class=property>D</code>&rsquo; above.</p>
vhardy@3707 1866 </div>
rossen@3643 1867 <!-- End section "The shape-outside Property" -->
rossen@3643 1868
vhardy@5412 1869 <h4 id=shape-inside-property><span class=secno>4.4.2. </span>The &lsquo;<a
rossen@3643 1870 href="#shape-inside"><code class=property>shape-inside</code></a>&rsquo;
rossen@3643 1871 Property</h4>
rossen@3643 1872
vhardy@4473 1873 <p> The &lsquo;<a href="#shape-inside"><code
vhardy@4473 1874 class=property>shape-inside</code></a>&rsquo; modifies the shape of the
vhardy@4473 1875 inner inline flow content from rectangular content box to an arbitrary
vhardy@4473 1876 geometry.
rossen@3643 1877
vhardy@2780 1878 <table class=propdef>
vhardy@2780 1879 <tbody>
vhardy@2780 1880 <tr>
vhardy@2780 1881 <th>Name:
vhardy@2780 1882
rossen@3643 1883 <td><dfn id=shape-inside title="'shape-inside'">shape-inside</dfn>
vhardy@2780 1884
vhardy@2780 1885 <tr>
vhardy@2780 1886 <th>Value:
vhardy@2780 1887
rossen@3643 1888 <td><var>outside-shape</var> | <var>auto</var> |
vhardy@3659 1889 <var>&lt;shape&gt;</var> | <var>&lt;uri&gt;</var>
vhardy@2780 1890
vhardy@2780 1891 <tr>
vhardy@2780 1892 <th>Initial:
vhardy@2780 1893
rossen@3643 1894 <td>outside-shape
vhardy@2780 1895
vhardy@2780 1896 <tr>
vhardy@2780 1897 <th>Applies to:
vhardy@2780 1898
rossen@3643 1899 <td>block-level elements
vhardy@2780 1900
vhardy@2780 1901 <tr>
vhardy@2780 1902 <th>Inherited:
vhardy@2780 1903
vhardy@2780 1904 <td>no
vhardy@2780 1905
vhardy@2780 1906 <tr>
vhardy@2780 1907 <th>Percentages:
vhardy@2780 1908
vhardy@2780 1909 <td>N/A
vhardy@2780 1910
vhardy@2780 1911 <tr>
vhardy@2780 1912 <th>Media:
vhardy@2780 1913
vhardy@2780 1914 <td>visual
vhardy@2780 1915
vhardy@2780 1916 <tr>
vhardy@2780 1917 <th>Computed&nbsp;value:
vhardy@2780 1918
rossen@3643 1919 <td>computed lengths for &lt;shape&gt;, the absolute URI for
vhardy@3659 1920 &lt;uri&gt;, otherwise as specified
vhardy@2780 1921 </table>
vhardy@2780 1922
vhardy@4473 1923 <p>The values of this property have the following meanings:
vhardy@2780 1924
rossen@3643 1925 <dl>
rossen@3643 1926 <dt><dfn id=outside-shape
rossen@3643 1927 title="'shape-inside'!!'outside-shape'">outside-shape</dfn>
vhardy@2780 1928
rossen@3643 1929 <dd> The shape is computed based on the computed value of the &lsquo;<a
rossen@3643 1930 href="#shape-outside"><code
rossen@3643 1931 class=property>shape-outside</code></a>&rsquo; property.
rossen@3643 1932 </dl>
vhardy@2780 1933
rossen@3643 1934 <dl>
rossen@3643 1935 <dt><dfn id=auto1 title="'shape-inside'!!'auto'">auto</dfn>
vhardy@2780 1936
rossen@3643 1937 <dd> The shape is computed based on the content box of the element.
rossen@3643 1938 </dl>
vhardy@2780 1939
rossen@3643 1940 <dl>
rossen@3643 1941 <dt><dfn id=ltshapegt0
rossen@3643 1942 title="'shape-inside'!!'&lt;shape&gt;'">&lt;shape&gt;</dfn>
vhardy@2780 1943
rossen@3643 1944 <dd> The shape is computed based on the values of one of &lsquo;<code
rossen@3643 1945 class=property>rectangle</code>&rsquo;,&lsquo;<code class=css>
rossen@3643 1946 circle</code>&rsquo;, &lsquo;<code class=property>ellipse</code>&rsquo;
rossen@3643 1947 or &lsquo;<code class=property>polygon</code>&rsquo;.
rossen@3643 1948 </dl>
vhardy@2780 1949
rossen@3643 1950 <dl>
rossen@3716 1951 <dt><dfn id=lturigt0
rossen@3716 1952 title="'shape-inside'!!'&lt;uri&gt;'">&lt;uri&gt;</dfn>
vhardy@2780 1953
vhardy@3659 1954 <dd> If the &lt;uri&gt; references an SVG shape element, that element
vhardy@3659 1955 defines the shape. Otherwise, if the &lt;uri&gt; references an image, the
vhardy@3659 1956 shape is extracted and computed based on the alpha channel of the
vhardy@3659 1957 specified image. If the &lt;uri&gt; does not reference an SVG shape
vhardy@3659 1958 element or an image, the effect is as if the value &lsquo;<code
vhardy@3659 1959 class=property>auto</code>&rsquo; had been specified.
rossen@3643 1960 </dl>
vhardy@5412 1961
vhardy@5412 1962 <p>The &lsquo;<a href="#shape-inside"><code
vhardy@5412 1963 class=property>shape-inside</code></a>&rsquo; property applies to floats.
vhardy@5412 1964
vhardy@5412 1965 <p>The &lsquo;<a href="#shape-inside"><code
vhardy@5412 1966 class=property>shape-inside</code></a>&rsquo; property may not apply on
vhardy@5412 1967 some elements such as elements with a computed &lsquo;<code
vhardy@5412 1968 class=property>display</code>&rsquo; value of &lsquo;<code
vhardy@5412 1969 class=property>table</code>&rsquo;.</p>
rossen@3643 1970 <!-- End section "The shape-inside property" -->
vhardy@2780 1971
vhardy@5412 1972 <h4 id=shape-image-threshold-property><span class=secno>4.4.3. </span>The
rossen@3643 1973 &lsquo;<a href="#shape-image-threshold"><code
rossen@3643 1974 class=property>shape-image-threshold</code></a>&rsquo; Property</h4>
rossen@3643 1975
vhardy@4473 1976 <p> The &lsquo;<a href="#shape-image-threshold"><code
rossen@3643 1977 class=property>shape-image-threshold</code></a>&rsquo; defines the alpha
rossen@3655 1978 channel threshold used to extract the shape using an image. A value of 0.5
rossen@3655 1979 means that all the pixels that are more than 50% transparent define the
rossen@3655 1980 path of the exclusion shape. The &lsquo;<a
rossen@3643 1981 href="#shape-image-threshold"><code
rossen@3643 1982 class=property>shape-image-threshold</code></a>&rsquo; applies to both
rossen@3643 1983 &lsquo;<a href="#shape-outside"><code
rossen@3643 1984 class=property>shape-outside</code></a>&rsquo; and &lsquo;<a
rossen@3643 1985 href="#shape-inside"><code class=property>shape-inside</code></a>&rsquo;.
rossen@3643 1986
vhardy@4473 1987 <p class=note> The specified value of &lsquo;<a
vhardy@4473 1988 href="#shape-image-threshold"><code
rossen@3643 1989 class=property>shape-image-threshold</code></a>&rsquo; is applied to both
rossen@3643 1990 images used for &lsquo;<a href="#shape-outside"><code
rossen@3643 1991 class=property>shape-outside</code></a>&rsquo; and &lsquo;<a
rossen@3643 1992 href="#shape-inside"><code class=property>shape-inside</code></a>&rsquo;.
vhardy@2780 1993
vhardy@2780 1994 <table class=propdef>
vhardy@2780 1995 <tbody>
vhardy@2780 1996 <tr>
vhardy@2780 1997 <th>Name:
vhardy@2780 1998
rossen@3643 1999 <td><dfn id=shape-image-threshold
rossen@3643 2000 title="'shape-image-threshold'">shape-image-threshold</dfn>
vhardy@2780 2001
vhardy@2780 2002 <tr>
vhardy@2780 2003 <th>Value:
vhardy@2780 2004
rossen@3643 2005 <td><var>&lt;alphavalue&gt;</var>
vhardy@2780 2006
vhardy@2780 2007 <tr>
vhardy@2780 2008 <th>Initial:
vhardy@2780 2009
rossen@3643 2010 <td>0.5
vhardy@2780 2011
vhardy@2780 2012 <tr>
vhardy@2780 2013 <th>Applies to:
vhardy@2780 2014
rossen@3643 2015 <td>block-level elements
rossen@3643 2016
rossen@3643 2017 <tr>
rossen@3643 2018 <th>Inherited:
rossen@3643 2019
rossen@3643 2020 <td>no
rossen@3643 2021
rossen@3643 2022 <tr>
rossen@3643 2023 <th>Percentages:
rossen@3643 2024
rossen@3716 2025 <td>alpha channel of the image specified by &lt;uri&gt;
rossen@3643 2026
rossen@3643 2027 <tr>
rossen@3643 2028 <th>Media:
rossen@3643 2029
rossen@3643 2030 <td>visual
rossen@3643 2031
rossen@3643 2032 <tr>
rossen@3643 2033 <th>Computed&nbsp;value:
rossen@3643 2034
rossen@3643 2035 <td>The same as the specified value after clipping the
rossen@3643 2036 &lt;alphavalue&gt; to the range [0.0,1.0].
rossen@3643 2037 </table>
rossen@3643 2038
vhardy@4473 2039 <p>The values of this property have the following meanings:
rossen@3643 2040
rossen@3643 2041 <dl>
rossen@3643 2042 <dt><dfn id=ltalphavaluegt
rossen@3643 2043 title="'shape-image-threshold'!!'&lt;alphavalue&gt;'">&lt;alphavalue&gt;</dfn>
rossen@3643 2044
rossen@3655 2045 <dd> A &lt;number&gt; value used to set the threshold used for extracting
rossen@3655 2046 a shape from an image. Any values outside the range 0.0 (fully
rossen@3655 2047 transparent) to 1.0 (fully opaque) will be clamped to this range.
rossen@3643 2048 </dl>
rossen@3643 2049 <!-- End section "The shape-image-threshold property" -->
vhardy@3659 2050 <!--
vhardy@3659 2051 <h4 id="shape-shorthand-property">The 'shape' Shorthand Property</h4>
rossen@3643 2052
vhardy@3659 2053 <table class="propdef">
vhardy@3659 2054 <tr>
vhardy@3659 2055 <th>Name:</th>
vhardy@3659 2056 <td><dfn title="'shape'">shape</dfn></td>
vhardy@3659 2057 </tr>
vhardy@3659 2058 <tr>
vhardy@3659 2059 <th>Value:</th>
vhardy@3659 2060 <td><var>&lt;shape-outside&gt;</var> [ / <var>&lt;shape-inside&gt;</var> ] || <var>&lt;shape-image-threshold&gt;</var></td>
vhardy@3659 2061 </tr>
vhardy@3659 2062 <tr>
vhardy@3659 2063 <th>Initial:</th>
vhardy@3659 2064 <td>see individual properties</td>
vhardy@3659 2065 </tr>
vhardy@3659 2066 <tr>
vhardy@3659 2067 <th>Applies to:</th>
vhardy@3659 2068 <td>block-level elements</td>
vhardy@3659 2069 </tr>
vhardy@3659 2070 <tr>
vhardy@3659 2071 <th>Inherited:</th>
vhardy@3659 2072 <td>no</td>
vhardy@3659 2073 </tr>
vhardy@3659 2074 <tr>
vhardy@3659 2075 <th>Percentages:</th>
vhardy@3659 2076 <td>N/A</td>
vhardy@3659 2077 </tr>
vhardy@3659 2078 <tr>
vhardy@3659 2079 <th>Media:</th>
vhardy@3659 2080 <td>visual</td>
vhardy@3659 2081 </tr>
vhardy@3659 2082 <tr>
vhardy@3659 2083 <th>Computed&nbsp;value:</th>
vhardy@3659 2084 <td>see individual properties</td>
vhardy@3659 2085 </tr>
vhardy@3659 2086 </table>
vhardy@3659 2087 <p>
vhardy@3659 2088 The 'shape' property is a shorthand property for setting the individual shape properties
vhardy@3659 2089 at the same place in a style sheet.
vhardy@3659 2090 </p>
rossen@3643 2091
vhardy@3659 2092 <div class="example">
vhardy@3659 2093 <p>Style declaration using the 'shape' shorthand property.</p>
vhardy@3659 2094 <pre><code class="html">
rossen@3643 2095 &lt;style type="text/css"&gt;
rossen@3643 2096 .shape {
rossen@3643 2097 shape: rectangle(50px, 50px, 200px, 100px) / url("shape_image.png") 0.7;
vhardy@2780 2098 }
rossen@3643 2099 &lt;/style&gt
rossen@3643 2100 </code></pre>
vhardy@3659 2101 </div>
vhardy@3659 2102 <p class="issue">The example above must be finished.</p>
vhardy@3659 2103
vhardy@3659 2104 -->
rossen@3643 2105 <!-- End section "Shape Shorthand property -->
rossen@3643 2106 <!-- End section "Declaring Shapes" -->
vhardy@5412 2107
vhardy@5412 2108 <p>The shape properties apply to <!-- End section "Shapes" -->
vhardy@2780 2109
vhardy@3659 2110 <h2 id=conformance><span class=secno>5. </span>Conformance</h2>
vhardy@2780 2111
vhardy@3659 2112 <h3 id=conventions><span class=secno>5.1. </span>Document Conventions</h3>
rossen@3643 2113
vhardy@4473 2114 <p> Conformance requirements are expressed with a combination of
vhardy@4473 2115 descriptive assertions and RFC 2119 terminology. The key words “MUST”,
vhardy@4473 2116 “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
vhardy@4473 2117 “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and
vhardy@4473 2118 “OPTIONAL” in the normative parts of this document are to be
vhardy@4473 2119 interpreted as described in RFC 2119. However, for readability, these
vhardy@4473 2120 words do not appear in all uppercase letters in this specification.
vhardy@4473 2121
vhardy@4473 2122 <p> All of the text of this specification is normative except sections
vhardy@4473 2123 explicitly marked as non-normative, examples, and notes. <a
vhardy@4473 2124 href="#RFC2119" rel=biblioentry>[RFC2119]<!--{{!RFC2119}}--></a>
vhardy@4473 2125
vhardy@4473 2126 <p> Examples in this specification are introduced with the words “for
vhardy@4473 2127 example” or are set apart from the normative text with
vhardy@4473 2128 <code>class="example"</code>, like this:
rossen@3643 2129
rossen@3643 2130 <div class=example>
vhardy@4473 2131 <p>This is an example of an informative example.</p>
rossen@3643 2132 </div>
rossen@3643 2133
vhardy@4473 2134 <p> Informative notes begin with the word “Note” and are set apart from
vhardy@4473 2135 the normative text with <code>class="note"</code>, like this:
vhardy@4473 2136
vhardy@4473 2137 <p class=note>Note, this is an informative note.
rossen@3643 2138
vhardy@3659 2139 <h3 id=conformance-classes><span class=secno>5.2. </span>Conformance
rossen@3643 2140 Classes</h3>
rossen@3643 2141
vhardy@4473 2142 <p>Conformance to CSS Exclusions and Shapes is defined for three
vhardy@4473 2143 conformance classes:
rossen@3643 2144
rossen@3643 2145 <dl>
rossen@3643 2146 <dt><dfn id=style-sheet title="style sheet!!as conformance class">style
rossen@3643 2147 sheet</dfn>
rossen@3643 2148
rossen@3643 2149 <dd> A <a href="http://www.w3.org/TR/CSS21/conform.html#style-sheet">CSS
rossen@3643 2150 style sheet</a>.
rossen@3643 2151
rossen@3643 2152 <dt><dfn id=renderer>renderer</dfn>
rossen@3643 2153
rossen@3643 2154 <dd> A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
rossen@3643 2155 that interprets the semantics of a style sheet and renders documents that
rossen@3643 2156 use them.
rossen@3643 2157
rossen@3643 2158 <dt><dfn id=authoring-tool>authoring tool</dfn>
rossen@3643 2159
rossen@3643 2160 <dd> A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
rossen@3643 2161 that writes a style sheet.
rossen@3643 2162 </dl>
rossen@3643 2163
vhardy@4473 2164 <p> A style sheet is conformant to CSS Exclusions and Shapes if all of its
vhardy@4473 2165 declarations that use properties defined in this module have values that
vhardy@4473 2166 are valid according to the generic CSS grammar and the individual grammars
vhardy@4473 2167 of each property as given in this module.
vhardy@4473 2168
vhardy@4473 2169 <p> A renderer is conformant to CSS Exclusions and Shapes if, in addition
vhardy@4473 2170 to interpreting the style sheet as defined by the appropriate
vhardy@4473 2171 specifications, it supports all the features defined by CSS Exclusions and
vhardy@4473 2172 Shapes by parsing them correctly and rendering the document accordingly.
vhardy@4473 2173 However, the inability of a UA to correctly render a document due to
vhardy@4473 2174 limitations of the device does not make the UA non-conformant. (For
vhardy@4473 2175 example, a UA is not required to render color on a monochrome monitor.)
vhardy@4473 2176
vhardy@4473 2177 <p> An authoring tool is conformant to CSS Exclusions and Shapes if it
vhardy@4473 2178 writes style sheets that are syntactically correct according to the
vhardy@4473 2179 generic CSS grammar and the individual grammars of each feature in this
vhardy@4473 2180 module, and meet all other conformance requirements of style sheets as
vhardy@4473 2181 described in this module.
rossen@3643 2182
vhardy@3659 2183 <h3 id=partial><span class=secno>5.3. </span> Partial Implementations</h3>
rossen@3643 2184
vhardy@4473 2185 <p> So that authors can exploit the forward-compatible parsing rules to
vhardy@4473 2186 assign fallback values, CSS renderers <strong>must</strong> treat as
vhardy@4473 2187 invalid (and <a href="http://www.w3.org/TR/CSS21/conform.html#ignore">
vhardy@4473 2188 ignore as appropriate</a>) any at-rules, properties, property values,
vhardy@4473 2189 keywords, and other syntactic constructs for which they have no usable
vhardy@4473 2190 level of support. In particular, user agents <strong>must not</strong>
vhardy@4473 2191 selectively ignore unsupported component values and honor supported values
vhardy@4473 2192 in a single multi-value property declaration: if any value is considered
vhardy@4473 2193 invalid (as unsupported values must be), CSS requires that the entire
vhardy@4473 2194 declaration be ignored.
rossen@3643 2195
vhardy@3659 2196 <h3 id=experimental><span class=secno>5.4. </span> Experimental
rossen@3643 2197 Implementations</h3>
rossen@3643 2198
vhardy@4473 2199 <p> To avoid clashes with future CSS features, the CSS2.1 specification
vhardy@4473 2200 reserves a <a
rossen@3643 2201 href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords">prefixed
rossen@3643 2202 syntax</a> for proprietary and experimental extensions to CSS.
rossen@3643 2203
vhardy@4473 2204 <p> Prior to a specification reaching the Candidate Recommendation stage in
vhardy@4473 2205 the W3C process, all implementations of a CSS feature are considered
vhardy@4473 2206 experimental. The CSS Working Group recommends that implementations use a
vhardy@4473 2207 vendor-prefixed syntax for such features, including those in W3C Working
vhardy@4473 2208 Drafts. This avoids incompatibilities with future changes in the draft.
rossen@3643 2209
vhardy@3659 2210 <h3 id=testing><span class=secno>5.5. </span> Non-Experimental
rossen@3643 2211 Implementations</h3>
rossen@3643 2212
vhardy@4473 2213 <p> Once a specification reaches the Candidate Recommendation stage,
vhardy@4473 2214 non-experimental implementations are possible, and implementors should
vhardy@4473 2215 release an unprefixed implementation of any CR-level feature they can
vhardy@4473 2216 demonstrate to be correctly implemented according to spec.
vhardy@4473 2217
vhardy@4473 2218 <p> To establish and maintain the interoperability of CSS across
vhardy@4473 2219 implementations, the CSS Working Group requests that non-experimental CSS
vhardy@4473 2220 renderers submit an implementation report (and, if necessary, the
vhardy@4473 2221 testcases used for that implementation report) to the W3C before releasing
vhardy@4473 2222 an unprefixed implementation of any CSS features. Testcases submitted to
vhardy@4473 2223 W3C are subject to review and correction by the CSS Working Group.
vhardy@4473 2224
vhardy@4473 2225 <p> Further information on submitting testcases and implementation reports
vhardy@4473 2226 can be found from on the CSS Working Group's website at <a
rossen@3643 2227 href="http://www.w3.org/Style/CSS/Test/">
rossen@3643 2228 http://www.w3.org/Style/CSS/Test/</a>. Questions should be directed to the
rossen@3643 2229 <a href="http://lists.w3.org/Archives/Public/public-css-testsuite">
rossen@3643 2230 public-css-testsuite@w3.org</a> mailing list.
rossen@3643 2231
vhardy@3659 2232 <h3 id=cr-exit-criteria><span class=secno>5.6. </span> CR Exit Criteria</h3>
rossen@3643 2233
vhardy@4473 2234 <p> For this specification to be advanced to Proposed Recommendation, there
vhardy@4473 2235 must be at least two independent, interoperable implementations of each
vhardy@4473 2236 feature. Each feature may be implemented by a different set of products,
vhardy@4473 2237 there is no requirement that all features be implemented by a single
vhardy@4473 2238 product. For the purposes of this criterion, we define the following
vhardy@4473 2239 terms:
rossen@3643 2240
rossen@3643 2241 <dl>
rossen@3643 2242 <dt>independent
rossen@3643 2243
rossen@3643 2244 <dd> each implementation must be developed by a different party and cannot
rossen@3643 2245 share, reuse, or derive from code used by another qualifying
rossen@3643 2246 implementation. Sections of code that have no bearing on the
rossen@3643 2247 implementation of this specification are exempt from this requirement.
rossen@3643 2248
rossen@3643 2249 <dt>interoperable
rossen@3643 2250
rossen@3643 2251 <dd> passing the respective test case(s) in the official CSS test suite,
rossen@3643 2252 or, if the implementation is not a Web browser, an equivalent test. Every
rossen@3643 2253 relevant test in the test suite should have an equivalent test created if
rossen@3643 2254 such a user agent (UA) is to be used to claim interoperability. In
rossen@3643 2255 addition if such a UA is to be used to claim interoperability, then there
rossen@3643 2256 must one or more additional UAs which can also pass those equivalent
rossen@3643 2257 tests in the same way for the purpose of interoperability. The equivalent
rossen@3643 2258 tests must be made publicly available for the purposes of peer review.
rossen@3643 2259
rossen@3643 2260 <dt>implementation
rossen@3643 2261
rossen@3643 2262 <dd> a user agent which:
rossen@3643 2263 <ol class=inline>
vhardy@4473 2264 <li>implements the specification.
vhardy@4473 2265
vhardy@4473 2266 <li>is available to the general public. The implementation may be a
vhardy@4473 2267 shipping product or other publicly available version (i.e., beta
vhardy@4473 2268 version, preview release, or “nightly build”). Non-shipping product
vhardy@4473 2269 releases must have implemented the feature(s) for a period of at least
vhardy@4473 2270 one month in order to demonstrate stability.
vhardy@4473 2271
vhardy@4473 2272 <li>is not experimental (i.e., a version specifically designed to pass
vhardy@4473 2273 the test suite and is not intended for normal usage going forward).
rossen@3643 2274 </ol>
rossen@3643 2275 </dl>
rossen@3643 2276
vhardy@4473 2277 <p> The specification will remain Candidate Recommendation for at least six
vhardy@4473 2278 months.
rossen@3643 2279
vhardy@2780 2280 <h2 class=no-num id=acknowledgments>Acknowledgments</h2>
vhardy@2780 2281
vhardy@4473 2282 <p> This specification is made possible by input from Stephen Zilles,
vhardy@4473 2283 Alexandru Chiculita, Andrei Bucur, Mihnea Ovidenie, Peter Sorotokin,
vhardy@4473 2284 Virgil Palanciuc, Alan Stearns, Arno Gourdol, Eugene Veselov, Arron
vhardy@4473 2285 Eicholz, Alex Mogilevsky, Chris Jones, Marcus Mielke, and the CSS Working
vhardy@4473 2286 Group members.
rossen@3643 2287
vhardy@2780 2288 <h2 class=no-num id=references>References</h2>
vhardy@2780 2289
vhardy@2780 2290 <h3 class=no-num id=normative-references>Normative references</h3>
vhardy@2780 2291 <!--begin-normative-->
vhardy@2780 2292 <!-- Sorted by label -->
vhardy@2780 2293
vhardy@2780 2294 <dl class=bibliography>
vhardy@2780 2295 <dt style="display: none"><!-- keeps the doc valid if the DL is empty -->
vhardy@2780 2296 <!---->
rossen@3643 2297
rossen@3701 2298 <dt id=CSS21>[CSS21]
rossen@3701 2299
rossen@3701 2300 <dd>Bert Bos; et al. <a
vhardy@3707 2301 href="http://www.w3.org/TR/2011/REC-CSS2-20110607"><cite>Cascading Style
rossen@3701 2302 Sheets Level 2 Revision 1 (CSS&#160;2.1) Specification.</cite></a> 7 June
rossen@3701 2303 2011. W3C Recommendation. URL: <a
vhardy@3707 2304 href="http://www.w3.org/TR/2011/REC-CSS2-20110607">http://www.w3.org/TR/2011/REC-CSS2-20110607</a>
rossen@3701 2305 </dd>
rossen@3701 2306 <!---->
rossen@3701 2307
vhardy@5214 2308 <dt id=CSS3BOX>[CSS3BOX]
vhardy@5214 2309
vhardy@5214 2310 <dd>Bert Bos. <a
vhardy@5214 2311 href="http://www.w3.org/TR/2007/WD-css3-box-20070809"><cite>CSS basic box
vhardy@5214 2312 model.</cite></a> 9 August 2007. W3C Working Draft. (Work in progress.)
vhardy@5214 2313 URL: <a
vhardy@5214 2314 href="http://www.w3.org/TR/2007/WD-css3-box-20070809">http://www.w3.org/TR/2007/WD-css3-box-20070809</a>
vhardy@5214 2315 </dd>
vhardy@5214 2316 <!---->
vhardy@5214 2317
rossen@3643 2318 <dt id=RFC2119>[RFC2119]
rossen@3643 2319
rossen@3643 2320 <dd>S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key
rossen@3643 2321 words for use in RFCs to Indicate Requirement Levels.</cite></a> Internet
rossen@3643 2322 RFC 2119. URL: <a
rossen@3643 2323 href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
rossen@3643 2324 </dd>
rossen@3643 2325 <!---->
vhardy@2780 2326 </dl>
vhardy@2780 2327 <!--end-normative-->
vhardy@2780 2328
vhardy@2780 2329 <h3 class=no-num id=other-references>Other references</h3>
vhardy@2780 2330 <!--begin-informative-->
vhardy@2780 2331 <!-- Sorted by label -->
vhardy@2780 2332
vhardy@2780 2333 <dl class=bibliography>
vhardy@2780 2334 <dt style="display: none"><!-- keeps the doc valid if the DL is empty -->
vhardy@2780 2335 <!---->
vhardy@5412 2336
vhardy@5412 2337 <dt id=CSS3-FLEXBOX>[CSS3-FLEXBOX]
vhardy@5412 2338
vhardy@5412 2339 <dd>Tab Atkins Jr.; Alex Mogilevsky; L. David Baron. <a
vhardy@5412 2340 href="http://www.w3.org/TR/2011/WD-css3-flexbox-20111129/"><cite>CSS
vhardy@5412 2341 Flexible Box Layout Module.</cite></a> 29 November 2011. W3C Working
vhardy@5412 2342 Draft. (Work in progress.) URL: <a
vhardy@5412 2343 href="http://www.w3.org/TR/2011/WD-css3-flexbox-20111129/">http://www.w3.org/TR/2011/WD-css3-flexbox-20111129/</a>
vhardy@5412 2344 </dd>
vhardy@5412 2345 <!---->
vhardy@5412 2346
vhardy@5412 2347 <dt id=CSS3-GRID-LAYOUT>[CSS3-GRID-LAYOUT]
vhardy@5412 2348
vhardy@5412 2349 <dd>Alex Mogilevsky; et al. <a
vhardy@5412 2350 href="http://www.w3.org/TR/2011/WD-css3-grid-layout-20110407"><cite>Grid
vhardy@5412 2351 Layout.</cite></a> 7 April 2011. W3C Working Draft. (Work in progress.)
vhardy@5412 2352 URL: <a
vhardy@5412 2353 href="http://www.w3.org/TR/2011/WD-css3-grid-layout-20110407">http://www.w3.org/TR/2011/WD-css3-grid-layout-20110407</a>
vhardy@5412 2354 </dd>
vhardy@5412 2355 <!---->
vhardy@5468 2356
vhardy@5468 2357 <dt id=SVG11>[SVG11]
vhardy@5468 2358
vhardy@5468 2359 <dd>Erik Dahlstr&#246;m; et al. <a
vhardy@5468 2360 href="http://www.w3.org/TR/2011/REC-SVG11-20110816/"><cite>Scalable
vhardy@5468 2361 Vector Graphics (SVG) 1.1 (Second Edition).</cite></a> 16 August 2011.
vhardy@5468 2362 W3C Recommendation. URL: <a
vhardy@5468 2363 href="http://www.w3.org/TR/2011/REC-SVG11-20110816/">http://www.w3.org/TR/2011/REC-SVG11-20110816/</a>
vhardy@5468 2364 </dd>
vhardy@5468 2365 <!---->
vhardy@2780 2366 </dl>
vhardy@2780 2367 <!--end-informative-->
vhardy@2780 2368
vhardy@2780 2369 <h2 class=no-num id=index>Index</h2>
vhardy@2780 2370 <!--begin-index-->
vhardy@2780 2371
vhardy@2780 2372 <ul class=indexlist>
rossen@3643 2373 <li>authoring tool, <a href="#authoring-tool"
vhardy@3659 2374 title="authoring tool"><strong>5.2.</strong></a>
vhardy@2780 2375
vhardy@3659 2376 <li>Content area, <a href="#content-area"
vhardy@3659 2377 title="Content area"><strong>2.</strong></a>
rossen@3655 2378
vhardy@3659 2379 <li>Exclusion area, <a href="#exclusion-area"
vhardy@3659 2380 title="Exclusion area"><strong>2.</strong></a>
vhardy@3659 2381
vhardy@5125 2382 <li>Exclusion box, <a href="#exclusion-box"
vhardy@5125 2383 title="Exclusion box"><strong>2.</strong></a>
vhardy@2780 2384
vhardy@5412 2385 <li>Float area, <a href="#float-area"
vhardy@5412 2386 title="Float area"><strong>2.</strong></a>
vhardy@5412 2387
vhardy@3659 2388 <li>outside-inside, <a href="#outside-and-inside"
vhardy@3659 2389 title=outside-inside><strong>2.</strong></a>
vhardy@3659 2390
vhardy@3659 2391 <li>renderer, <a href="#renderer" title=renderer><strong>5.2.</strong></a>
rossen@3643 2392
vhardy@2780 2393
rossen@3643 2394 <li>&lsquo;<a href="#shape-image-threshold"><code
rossen@3643 2395 class=property>shape-image-threshold</code></a>&rsquo;, <a
rossen@3643 2396 href="#shape-image-threshold"
vhardy@5412 2397 title="'shape-image-threshold'"><strong>4.4.3.</strong></a>
rossen@3643 2398 <ul>
rossen@3643 2399 <li>&lsquo;<code class=css>&lt;alphavalue&gt;</code>&rsquo;, <a
rossen@3643 2400 href="#ltalphavaluegt"
vhardy@5412 2401 title="'shape-image-threshold', '&lt;alphavalue&gt;'"><strong>4.4.3.</strong></a>
rossen@3643 2402
rossen@3643 2403 </ul>
vhardy@2780 2404
rossen@3643 2405 <li>&lsquo;<a href="#shape-inside"><code
rossen@3643 2406 class=property>shape-inside</code></a>&rsquo;, <a href="#shape-inside"
vhardy@5412 2407 title="'shape-inside'"><strong>4.4.2.</strong></a>
rossen@3643 2408 <ul>
rossen@3643 2409 <li>&lsquo;<code class=property>auto</code>&rsquo;, <a href="#auto1"
vhardy@5412 2410 title="'shape-inside', 'auto'"><strong>4.4.2.</strong></a>
rossen@3643 2411
rossen@3643 2412 <li>&lsquo;<code class=property>outside-shape</code>&rsquo;, <a
rossen@3643 2413 href="#outside-shape"
vhardy@5412 2414 title="'shape-inside', 'outside-shape'"><strong>4.4.2.</strong></a>
rossen@3643 2415
rossen@3643 2416 <li>&lsquo;<code class=css>&lt;shape&gt;</code>&rsquo;, <a
rossen@3643 2417 href="#ltshapegt0"
vhardy@5412 2418 title="'shape-inside', '&lt;shape&gt;'"><strong>4.4.2.</strong></a>
vhardy@3659 2419
vhardy@3659 2420 <li>&lsquo;<code class=css>&lt;uri&gt;</code>&rsquo;, <a
rossen@3716 2421 href="#lturigt0"
vhardy@5412 2422 title="'shape-inside', '&lt;uri&gt;'"><strong>4.4.2.</strong></a>
rossen@3643 2423 </ul>
rossen@3643 2424
rossen@3643 2425 <li>&lsquo;<a href="#shape-outside"><code
rossen@3643 2426 class=property>shape-outside</code></a>&rsquo;, <a href="#shape-outside"
vhardy@5412 2427 title="'shape-outside'"><strong>4.4.1.</strong></a>
rossen@3643 2428 <ul>
rossen@3643 2429 <li>&lsquo;<code class=property>auto</code>&rsquo;, <a href="#auto0"
vhardy@5412 2430 title="'shape-outside', 'auto'"><strong>4.4.1.</strong></a>
rossen@3643 2431
rossen@3643 2432 <li>&lsquo;<code class=css>&lt;shape&gt;</code>&rsquo;, <a
rossen@3643 2433 href="#ltshapegt"
vhardy@5412 2434 title="'shape-outside', '&lt;shape&gt;'"><strong>4.4.1.</strong></a>
vhardy@3659 2435
vhardy@3659 2436 <li>&lsquo;<code class=css>&lt;uri&gt;</code>&rsquo;, <a href="#lturigt"
vhardy@5412 2437 title="'shape-outside', '&lt;uri&gt;'"><strong>4.4.1.</strong></a>
rossen@3643 2438 </ul>
rossen@3643 2439
rossen@3643 2440 <li>style sheet
rossen@3643 2441 <ul>
rossen@3643 2442 <li>as conformance class, <a href="#style-sheet"
vhardy@3659 2443 title="style sheet, as conformance class"><strong>5.2.</strong></a>
rossen@3643 2444 </ul>
rossen@3643 2445
vhardy@3707 2446 <li>&lsquo;<a href="#wrap0"><code class=property>wrap</code></a>&rsquo;,
vhardy@3707 2447 <a href="#wrap0" title="'wrap'"><strong>3.3.2.</strong></a>
vhardy@3707 2448
rossen@3643 2449 <li>&lsquo;<a href="#wrap-flow"><code
rossen@3643 2450 class=property>wrap-flow</code></a>&rsquo;, <a href="#wrap-flow"
vhardy@3659 2451 title="'wrap-flow'"><strong>3.1.1.</strong></a>
rossen@3643 2452 <ul>
rossen@3643 2453 <li>&lsquo;<code class=property>auto</code>&rsquo;, <a href="#auto"
vhardy@3659 2454 title="'wrap-flow', 'auto'"><strong>3.1.1.</strong></a>
rossen@3643 2455
rossen@3643 2456 <li>&lsquo;<code class=property>both</code>&rsquo;, <a href="#both"
vhardy@3659 2457 title="'wrap-flow', 'both'"><strong>3.1.1.</strong></a>
rossen@3643 2458
rossen@3643 2459 <li>&lsquo;<code class=property>clear</code>&rsquo;, <a href="#clear"
vhardy@3659 2460 title="'wrap-flow', 'clear'"><strong>3.1.1.</strong></a>
rossen@3643 2461
rossen@3884 2462 <li>&lsquo;<code class=property>end</code>&rsquo;, <a href="#end"
rossen@3884 2463 title="'wrap-flow', 'end'"><strong>3.1.1.</strong></a>
rossen@3643 2464
rossen@3643 2465 <li>&lsquo;<code class=property>maximum</code>&rsquo;, <a
rossen@3643 2466 href="#maximum"
vhardy@3659 2467 title="'wrap-flow', 'maximum'"><strong>3.1.1.</strong></a>
rossen@3643 2468
rossen@3884 2469 <li>&lsquo;<code class=property>start</code>&rsquo;, <a href="#start"
rossen@3884 2470 title="'wrap-flow', 'start'"><strong>3.1.1.</strong></a>
rossen@3643 2471 </ul>
rossen@3643 2472
rossen@3643 2473 <li>&lsquo;<a href="#wrap-margin"><code
rossen@3643 2474 class=property>wrap-margin</code></a>&rsquo;, <a href="#wrap-margin"
vhardy@3659 2475 title="'wrap-margin'"><strong>3.2.1.</strong></a>
rossen@3643 2476
rossen@3643 2477 <li>&lsquo;<a href="#wrap-padding"><code
rossen@3643 2478 class=property>wrap-padding</code></a>&rsquo;, <a href="#wrap-padding"
vhardy@3659 2479 title="'wrap-padding'"><strong>3.2.2.</strong></a>
vhardy@3659 2480
vhardy@3659 2481 <li>Wrapping context, <a href="#wrapping-context"
vhardy@3659 2482 title="Wrapping context"><strong>2.</strong></a>
rossen@3643 2483
rossen@3643 2484 <li>&lsquo;<a href="#wrap-through"><code
rossen@3643 2485 class=property>wrap-through</code></a>&rsquo;, <a href="#wrap-through"
vhardy@3659 2486 title="'wrap-through'"><strong>3.3.1.</strong></a>
rossen@3643 2487 <ul>
rossen@3643 2488 <li>&lsquo;<code class=property>none</code>&rsquo;, <a href="#none"
vhardy@3659 2489 title="'wrap-through', 'none'"><strong>3.3.1.</strong></a>
rossen@3643 2490
vhardy@3707 2491 <li>&lsquo;<a href="#wrap0"><code class=property>wrap</code></a>&rsquo;,
vhardy@3707 2492 <a href="#wrap"
vhardy@3659 2493 title="'wrap-through', 'wrap'"><strong>3.3.1.</strong></a>
rossen@3643 2494 </ul>
vhardy@2780 2495 </ul>
vhardy@2780 2496 <!--end-index-->
vhardy@2780 2497
vhardy@2780 2498 <h2 class=no-num id=property-index>Property index</h2>
vhardy@2780 2499 <!--begin-properties-->
vhardy@2780 2500
vhardy@2780 2501 <table class=proptable>
vhardy@2780 2502 <thead>
vhardy@2780 2503 <tr>
vhardy@2780 2504 <th>Property
vhardy@2780 2505
vhardy@2780 2506 <th>Values
vhardy@2780 2507
vhardy@2780 2508 <th>Initial
vhardy@2780 2509
vhardy@2780 2510 <th>Applies&nbsp;to
vhardy@2780 2511
vhardy@2780 2512 <th>Inh.
vhardy@2780 2513
vhardy@2780 2514 <th>Percentages
vhardy@2780 2515
vhardy@2780 2516 <th>Media
vhardy@2780 2517
vhardy@2780 2518 <tbody>
rossen@3643 2519 <tr>
rossen@3643 2520 <th><a class=property
rossen@3643 2521 href="#shape-image-threshold">shape-image-threshold</a>
vhardy@2780 2522
rossen@3643 2523 <td>&lt;alphavalue&gt;
vhardy@2780 2524
rossen@3643 2525 <td>0.5
vhardy@2780 2526
rossen@3643 2527 <td>block-level elements
rossen@3643 2528
rossen@3643 2529 <td>no
rossen@3643 2530
rossen@3716 2531 <td>alpha channel of the image specified by &lt;uri&gt;
rossen@3643 2532
rossen@3643 2533 <td>visual
rossen@3643 2534
rossen@3643 2535 <tr>
rossen@3643 2536 <th><a class=property href="#shape-inside">shape-inside</a>
rossen@3643 2537
vhardy@3659 2538 <td>outside-shape | auto | &lt;shape&gt; | &lt;uri&gt;
rossen@3643 2539
rossen@3643 2540 <td>outside-shape
rossen@3643 2541
rossen@3643 2542 <td>block-level elements
vhardy@2780 2543
vhardy@2780 2544 <td>no
vhardy@2780 2545
vhardy@2780 2546 <td>N/A
vhardy@2780 2547
vhardy@2780 2548 <td>visual
vhardy@2780 2549
rossen@3643 2550 <tr>
rossen@3643 2551 <th><a class=property href="#shape-outside">shape-outside</a>
vhardy@2780 2552
vhardy@3659 2553 <td>auto | &lt;shape&gt; | &lt;uri&gt;
vhardy@2780 2554
rossen@3643 2555 <td>auto
vhardy@2780 2556
vhardy@5412 2557 <td>exclusion elements and floats
vhardy@2780 2558
vhardy@2780 2559 <td>no
vhardy@2780 2560
vhardy@2780 2561 <td>N/A
vhardy@2780 2562
vhardy@2780 2563 <td>visual
vhardy@2780 2564
rossen@3643 2565 <tr>
vhardy@3707 2566 <th><a class=property href="#wrap0">wrap</a>
vhardy@3707 2567
vhardy@3707 2568 <td>&lt;wrap-flow&gt; || &lt;wrap-margin&gt; [ / &lt;wrap-padding&gt;]
vhardy@3707 2569
vhardy@3707 2570 <td>see individual properties
vhardy@3707 2571
vhardy@3707 2572 <td>block-level elements
vhardy@3707 2573
vhardy@3707 2574 <td>no
vhardy@3707 2575
vhardy@3707 2576 <td>N/A
vhardy@3707 2577
vhardy@3707 2578 <td>visual
vhardy@3707 2579
vhardy@3707 2580 <tr>
rossen@3643 2581 <th><a class=property href="#wrap-flow">wrap-flow</a>
vhardy@2780 2582
rossen@3884 2583 <td>auto | both | start | end | maximum | clear
vhardy@2780 2584
vhardy@2780 2585 <td>auto
vhardy@2780 2586
vhardy@5412 2587 <td>block-level elements. Does not apply to elements with a
vhardy@5412 2588 &lsquo;float&rsquo; computed value other than none
vhardy@2780 2589
vhardy@2780 2590 <td>no
vhardy@2780 2591
vhardy@2780 2592 <td>N/A
vhardy@2780 2593
vhardy@2780 2594 <td>visual
vhardy@2780 2595
rossen@3643 2596 <tr>
rossen@3643 2597 <th><a class=property href="#wrap-margin">wrap-margin</a>
vhardy@2780 2598
rossen@3643 2599 <td>&lt;length&gt;
vhardy@2780 2600
vhardy@2780 2601 <td>0
vhardy@2780 2602
vhardy@5412 2603 <td>exclusion elements
rossen@3643 2604
rossen@3643 2605 <td>no
rossen@3643 2606
rossen@3643 2607 <td>N/A
rossen@3643 2608
rossen@3643 2609 <td>visual
rossen@3643 2610
rossen@3643 2611 <tr>
rossen@3643 2612 <th><a class=property href="#wrap-padding">wrap-padding</a>
rossen@3643 2613
rossen@3643 2614 <td>&lt;length&gt;
rossen@3643 2615
rossen@3643 2616 <td>0
rossen@3643 2617
vhardy@5412 2618 <td>exclusion elements
rossen@3643 2619
rossen@3643 2620 <td>no
rossen@3643 2621
rossen@3643 2622 <td>N/A
rossen@3643 2623
rossen@3643 2624 <td>visual
rossen@3643 2625
rossen@3643 2626 <tr>
rossen@3643 2627 <th><a class=property href="#wrap-through">wrap-through</a>
rossen@3643 2628
rossen@3643 2629 <td>wrap | none
rossen@3643 2630
rossen@3643 2631 <td>wrap
rossen@3643 2632
rossen@3643 2633 <td>block-level elements
vhardy@2780 2634
vhardy@2780 2635 <td>no
vhardy@2780 2636
vhardy@2780 2637 <td>N/A
vhardy@2780 2638
vhardy@2780 2639 <td>visual
vhardy@2780 2640 </table>
vhardy@2780 2641 <!--end-properties-->
vhardy@5412 2642
vhardy@5412 2643 <h2 class=no-num id=change-log>Change Log</h2>
vhardy@5412 2644
vhardy@5412 2645 <h3 id=since-december-13th-2011><span class=secno>5.7. </span>Since <a
vhardy@5412 2646 href="http://www.w3.org/TR/2011/WD-css3-exclusions-20111213/">December
vhardy@5412 2647 13th 2011</a></h3>
vhardy@5412 2648
vhardy@5412 2649 <ul>
vhardy@5412 2650 <li>Clarified processing model
vhardy@5412 2651
vhardy@5412 2652 <li>Clarified interaction with floats
vhardy@5412 2653 </ul>
rossen@3643 2654 </html>
rossen@3643 2655 <!-- Keep this comment at the end of the file
vhardy@2780 2656 Local variables:
vhardy@2780 2657 mode: sgml
vhardy@2780 2658 sgml-declaration:"~/SGML/HTML4.decl"
vhardy@2780 2659 sgml-default-doctype-name:"html"
vhardy@2780 2660 sgml-minimize-attributes:t
vhardy@2780 2661 sgml-nofill-elements:("pre" "style" "br")
vhardy@2780 2662 sgml-live-element-indicator:t
vhardy@2780 2663 sgml-omittag:nil
vhardy@2780 2664 sgml-shorttag:nil
vhardy@2780 2665 sgml-namecase-general:t
vhardy@2780 2666 sgml-general-insert-case:lower
vhardy@2780 2667 sgml-always-quote-attributes:t
vhardy@2780 2668 sgml-indent-step:nil
vhardy@2780 2669 sgml-indent-data:t
vhardy@2780 2670 sgml-parent-document:nil
vhardy@2780 2671 sgml-exposed-tags:nil
vhardy@2780 2672 sgml-local-catalogs:nil
vhardy@2780 2673 sgml-local-ecat-files:nil
vhardy@2780 2674 End:
vhardy@2780 2675 -->

mercurial