css3-ui/Overview.src.html

Thu, 07 Feb 2013 23:25:50 -0800

author
L. David Baron <dbaron@dbaron.org>
date
Thu, 07 Feb 2013 23:25:50 -0800
changeset 7401
0df32ea51959
parent 7354
2d69376aaded
child 7409
31b535d8032a
permissions
-rw-r--r--

[css3-ui] Add "Animatable:" lines to propdef tables.

Note that the line for nav-index matches the current value, which may
be incorrect (number vs. integer).

Required manual adjustment for preprocessor (pre- and post-processing)
to deal with New Value(s): line for 'content' property.

The Animatable lines are as resolved in Tucson face-to-face at
2013-02-04 11:40:47 -0700, and edited by me per discussion starting at
2013-02-05 11:11:38 -0700.

tantek@1903 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
tantek@2271 2 "http://www.w3.org/TR/html4/strict.dtd">
tantek@1903 3
tantek@1903 4 <html><head>
tantek@2271 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
tantek@1903 6 <meta http-equiv="Content-Style-Type" content="text/css">
tantek@1903 7 <meta http-equiv="Content-Language" content="en">
tantek@1903 8 <meta name="author" lang="tr" content="Tantek &Ccedil;elik">
tantek@1993 9 <title>CSS Basic User Interface Module Level 3 (CSS3 UI)</title>
tantek@2786 10 <link href="../default.css" rel="stylesheet" type="text/css" title="Default">
tantek@1903 11 <style type="text/css">
tantek@1903 12 .subtoc ul,.subtoc ol { list-style-type: none }
tantek@1903 13 ol.objectives { list-style: decimal }
tantek@1903 14 ol.issues { list-style: decimal }
tantek@1903 15 .html4ss { font-size:90%}
tantek@1903 16 h1 {font-size:200%; clear:both}
tantek@1903 17 h2 {font-size:170%; clear:both}
tantek@1903 18 h3 {font-size:150%; clear:both}
tantek@1903 19 h4 {font-size:130%}
tantek@1903 20 h5 {font-size:120%}
tantek@1903 21 h6 {font-size:110%}
tantek@1903 22 h1+h2 {page-break-before: avoid}
tantek@1903 23 h2 {page-break-before: always}
tantek@1903 24 dd p:first-child { margin-top:0 }
tantek@1903 25
tantek@1903 26 </style>
tantek@1903 27 <link rel="stylesheet" type="text/css"
bert@4253 28 href="http://www.w3.org/StyleSheets/TR/W3C-ED">
tantek@4233 29 <!-- toggle to W3C-WD for TR publication, W3C-ED for editing -->
tantek@1903 30 </head>
tantek@7353 31 <body class="h-entry">
tantek@1903 32
tantek@1903 33 <div class="head">
tantek@1903 34 <a href="http://www.w3.org/"><img height="48" width="72" alt="W3C"
tantek@1903 35 src="http://www.w3.org/Icons/w3c_home">
tantek@1903 36 </a>
tantek@1903 37
tantek@7353 38 <h1 class="p-name">CSS Basic User Interface Module Level 3 (CSS3 UI)</h1>
tantek@1903 39
tantek@7353 40 <h2 class="no-num no-toc">[LONGSTATUS] <time class="dt-updated" datetime="[CDATE]">[DATE]</time></h2>
tantek@1903 41 <dl>
tantek@1906 42 <dt>This version:</dt>
tantek@4235 43 <!-- TR "This version". Update "WD" below as needed to CR/PR/REC -->
bert@4255 44 <!-- <dd><a href="http://www.w3.org/TR/[YEAR]/WD-[SHORTNAME]-[CDATE]/">
tantek@4244 45 http://www.w3.org/TR/[YEAR]/WD-[SHORTNAME]-[CDATE]/</a>
bert@4255 46 </dd> -->
bert@4255 47 <!-- editor's draft "This version" -->
tantek@7353 48 <dd><a class="u-url" href="http://dev.w3.org/csswg/css3-ui/">
bert@4255 49 http://dev.w3.org/csswg/css3-ui/</a>
tantek@4232 50 </dd>
tantek@1906 51 <dt>Latest version:</dt>
tantek@4244 52 <dd><a href="http://www.w3.org/TR/[SHORTNAME]/"
tantek@4244 53 >http://www.w3.org/TR/[SHORTNAME]/</a></dd>
tantek@1993 54
tantek@4243 55 <dt>Editor's draft:</dt>
tantek@4243 56 <dd><a href="http://dev.w3.org/csswg/css3-ui/"
tantek@4243 57 >http://dev.w3.org/csswg/css3-ui/</a></dd>
tantek@4243 58
tantek@4243 59 <dt>Previous version:</dt>
tantek@4243 60 <dd><a rel="previous"
tantek@4289 61 href="http://www.w3.org/TR/2012/WD-css3-ui-20120117/"
tantek@4289 62 >http://www.w3.org/TR/2012/WD-css3-ui-20120117/</a></dd>
tantek@1993 63
tantek@2270 64 <dt>Issues list:</dt>
tantek@7353 65 <dd><a rel="issues" href="http://wiki.csswg.org/spec/css3-ui"
tantek@4243 66 >http://wiki.csswg.org/spec/css3-ui</a></dd>
tantek@2270 67
tantek@4243 68 <dt>Discussion:</dt>
tantek@4243 69 <dd><a href="mailto:www-style@w3.org?subject=%5B[SHORTNAME]%5D%20feedback"
tantek@4243 70 >www-style@w3.org</a>
tantek@4243 71 with subject line &ldquo;<kbd>[[SHORTNAME]]
tantek@4243 72 <var>&hellip; message topic &hellip;</var></kbd>&rdquo;
tantek@7353 73 (<a rel="discussion" href="http://lists.w3.org/Archives/Public/www-style/"
tantek@4243 74 >archives</a>)
tantek@4243 75 </dd>
tantek@4243 76
tantek@4243 77 <dt>Editor:</dt>
tantek@7353 78 <dd class="p-author h-card vcard">
tantek@4243 79 <a lang="tr" class="p-name fn u-url url" rel="author"
tantek@4243 80 href="http://tantek.com">
tantek@4243 81 Tantek &Ccedil;elik</a>
tantek@4232 82 (<a class="company h-org org" href="http://www.mozilla.org/">Mozilla
tantek@4232 83 Foundation</a>,
tantek@4232 84 and before at
tantek@4232 85 <a href="http://www.microsoft.com/">Microsoft Corporation</a>)
tantek@4232 86 &lt;<a class="u-email email" href="mailto:tantek@cs.stanford.edu"
tantek@4232 87 >tantek@cs.stanford.edu</a>&gt;
tantek@4243 88 </dd>
tantek@1903 89 </dl>
tantek@1903 90
tantek@1906 91 <!--copyright-->
tantek@1903 92
tantek@1903 93 <hr title="Separator for header">
tantek@1903 94
tantek@1903 95 </div>
tantek@1903 96
tantek@1903 97 <h2 class="no-num no-toc" id="abstract">Abstract</h2>
tantek@1903 98
tantek@1903 99 <p>This section is <em>informative</em>.</p>
tantek@1903 100
tantek@7354 101 <p>CSS (Cascading Style Sheets) is a language for describing
tantek@7354 102 the rendering of HTML and XML documents on screen, on paper, in speech, etc.
tantek@7354 103 It uses various selectors, properties and values to style basic user interface elements in a document.
tantek@7354 104 <span class="p-summary">
tantek@7354 105 This specification describes those user interface related selectors, properties and values that are proposed for CSS level&nbsp;3 to style HTML and XML (including XHTML and XForms).
tantek@7354 106 It includes and extends user interface related features from the selectors, properties and values of CSS level&nbsp;2 revision 1 and Selectors specifications.
tantek@7354 107 </span>
tantek@1903 108 </p>
tantek@1903 109
tantek@1903 110 <h2 style="page-break-before:auto" class="no-num no-toc" id="status">Status of this document</h2>
tantek@1903 111
tantek@1906 112 <!--status-->
tantek@1903 113
tantek@1965 114 <p>This specification is a <strong>Last Call Working
tantek@1965 115 Draft</strong>, although it was previously a Candidate Recommendation.
tantek@4243 116 It has been returned to Last Call Working Draft
tantek@4243 117 because this draft removes features
tantek@4243 118 that were not implemented sufficiently to advance
tantek@4243 119 to Proposed Recommendation,
tantek@4243 120 and had not been previously listed as at risk,
tantek@4243 121 as <a href="http://www.w3.org/2005/10/Process-20051014/tr.html#cfi"
tantek@4243 122 >required</a>
tantek@1965 123 by the W3C Process.
tantek@4232 124 This draft also adds a couple of new properties and values.
tantek@4232 125 See <a href="#changes">Appendix C. Changes</a> for further details.
tantek@1965 126 <!-- This specification may advance directly to Proposed
tantek@1965 127 Recommendation following the last call, depending on comments and
tantek@1965 128 implementation reports. -->
tantek@1965 129 All persons are encouraged to review this
tantek@1965 130 document and send comments to the <a
tantek@1965 131 href="http://lists.w3.org/Archives/Public/www-style/">www-style
tantek@1965 132 mailing list</a> as described above. The <strong>deadline for
tantek@4235 133 comments</strong>
tantek@4244 134 is four weeks after the date of publication in the header or
tantek@4244 135 14 February 2012, whichever is sooner.
tantek@1903 136 </p>
tantek@1903 137
tantek@1903 138 <h3 class="no-num no-toc" id="crec">Candidate Recommendation Exit Criteria</h3>
tantek@1903 139
tantek@1965 140 <p>For this specification to enter the Proposed Recommendation stage,
tantek@1965 141 the following conditions shall be met:</p>
tantek@1965 142
tantek@1903 143 <ol>
tantek@1903 144 <li>
tantek@1903 145 <p>There must be at least two interoperable implementations
tantek@1903 146 for every feature. For the purposes of this criterion,
tantek@1903 147 we define the following terms:</p>
tantek@1903 148 <dl>
tantek@1903 149 <dt>feature</dt>
tantek@1903 150 <dd>
tantek@1903 151 <p>
tantek@1903 152 A section or subsection of the specification.
tantek@1903 153 </p>
tantek@1903 154 </dd>
tantek@1903 155 <dt>interoperable</dt>
tantek@1903 156 <dd>
tantek@1903 157 <p>passing the respective test cases in the test suite, or,
tantek@1903 158 if the implementation is not a web browser, equivalent tests.
tantek@1903 159 Every relevant test in the test suite should have an equivalent
tantek@1903 160 test created if such a user agent (UA) is to be used to claim interoperability.
tantek@1903 161 In addition if such a UA is to be used to claim interoperability,
tantek@1903 162 then there must one or more additional UAs which can also pass
tantek@1903 163 those equivalent tests in the same way for the purpose of
tantek@1903 164 interoperability. The equivalent tests must be made publicly
tantek@1903 165 available for the purposes of peer review.</p>
tantek@1903 166 </dd>
tantek@1903 167 <dt>implementation</dt>
tantek@1903 168 <dd>
tantek@1903 169 <p>a user agent which:</p>
tantek@1903 170 <ol class=inline>
tantek@1903 171 <li>implements the feature.</li>
tantek@1903 172 <li>is available (i.e. publicly downloadable or available
tantek@1903 173 through some other public point of sale mechanism). This is the
tantek@1903 174 "show me" requirement.</li>
tantek@1903 175 <li>is shipping (i.e. development, private or unofficial
tantek@1903 176 versions are insufficient).</li>
tantek@1903 177 <li>is not experimental (i.e. is intended for a wide audience
tantek@1903 178 and could be used on a daily basis).</li>
tantek@1903 179 </ol>
tantek@1903 180 </dd>
tantek@1903 181 </dl>
tantek@1903 182 </li>
tantek@1903 183 <li><p>A minimum of six months of the CR period must have elapsed.
tantek@1903 184 This is to ensure that enough time is given for any remaining major
tantek@1903 185 errors to be caught.</p></li>
tantek@1903 186 <li><p>The CR period will be extended if implementations are slow to
tantek@1903 187 appear.</p></li>
tantek@4243 188 <li><p>Features that are <em>at risk</em> (see the below list)
tantek@4243 189 will be dropped (thus reducing the list of "all" features
tantek@4243 190 mentioned above)
tantek@4243 191 if two or more interoperable implementations of those features
tantek@4243 192 are not found by the end of the CR period,
tantek@4243 193 or if sufficient and adequate tests
tantek@4243 194 (by judgment of the Working Group)
tantek@4243 195 have not been produced
tantek@4243 196 for those features by the end of the CR period.</p></li>
tantek@1903 197 </ol>
tantek@1903 198
tantek@1965 199 <p>A <a href="/Style/CSS/Test/">test suite</a> and a <a
tantek@1965 200 href="/Style/css3-updates/css3-ui-implementations">report on
tantek@1965 201 implementations</a> will be provided before the document becomes a
tantek@1965 202 Proposed Recommendation.
tantek@1965 203 </p>
tantek@1965 204
tantek@1965 205
tantek@1903 206 <h3 class="no-num no-toc" id="atrisk">Features at risk</h3>
tantek@1903 207
tantek@4243 208 <p>The Working Group has identified the following features as at risk
tantek@4243 209 of being removed from CSS Basic User Interface Module Level 3
tantek@4243 210 when exiting CR.
tantek@4243 211 Implementors are urged to implement these features,
tantek@4243 212 if they wish to see these features remain in this specification.
tantek@4243 213 All other features are either defined in a normative reference
tantek@4243 214 (e.g. CSS 2.1 [[!CSS21]] or Selectors [[!SELECT]])
tantek@4243 215 or are believed to have two or more implementations,
tantek@4243 216 and thus will not be dropped without returning to last call.</p>
tantek@1903 217 <ul>
tantek@3071 218 <!--
tantek@3071 219 At risk due to only one implementation, or obsolete dependency:
tantek@3071 220 XForms is defunct on the web.
tantek@1903 221 <li>XForms needs: :default :valid :invalid :in-range :out-of-range :required :optional :read-only :read-write ::value ::choices ::repeat-item ::repeat-index</li>
tantek@3071 222
tantek@3117 223 <li>box-sizing: padding-box - only FF supports in prefixed version</li>
tantek@3117 224
tantek@3117 225 <li>ime-mode: new - not sure about IE5+ vs FF3+ interop
tantek@3117 226 </li>
tantek@3987 227
tantek@3987 228 <li>nav-index, nav-up, nav-down, nav-right, nav-left, properties
tantek@3987 229 implemented for sure only by Opera, http://www.opera.com/docs/specs/presto22/#css
tantek@3987 230 possibly obsolete: Tasman v1 internal implementation
tantek@3987 231 possibly current: MSTV Tasman
tantek@3987 232 required (depended on) by non-web DVB-HTML, ATSC standards
tantek@3987 233 - unknown if any DVB-HTML or ATSC simulators
tantek@3987 234 </li>
tantek@3117 235
tantek@3071 236 Not at risk:
tantek@3071 237 <li>CSS2.1: :hover :active :focus</li>
tantek@4243 238 <li>Selectors: :enabled :disabled :checked</li>
tantek@4243 239 <li>:indeterminate implemented by FF3.6, IE9, Opera 10.6, Saf3</li>
tantek@3071 240
tantek@1903 241 <li>box-sizing implemented by IE5/Mac, Opera
tantek@1903 242 -moz-box-sizing implemented by Mozilla
tantek@1903 243 </li>
tantek@1903 244 <li>outline, outline-width, outline-color, outline-style all in CSS 2.1</li>
tantek@1903 245 <li>outline-offset property
tantek@1903 246 implemented by Safari 1.2
tantek@1903 247 </li>
tantek@1903 248 <li>cursor property:
tantek@1903 249 CSS2.1: auto | default | help | pointer | wait | crosshair | text |
tantek@1903 250 e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize
tantek@1903 251 IE5/Mac implements: none | progress | cell
tantek@1903 252 IE6/Windows implements: <uri> | progress | not-allowed | no-drop | vertical-text | all-scroll | col-resize | row-resize | move |
tantek@1903 253 Mozilla implements: progress | cell(as -moz-cell) | alias(as -moz-alias) | copy(as -moz-copy) | context-menu(as -moz-context-menu) |
tantek@1903 254 freedesktop.org copied all the cursors from the CSS3-UI LC Working Draft
tantek@1903 255 by FredrikHoeglund - 14 Oct 2003
tantek@1903 256 http://freedesktop.org/Standards/cursor-spec
tantek@1903 257 </li>
tantek@1965 258 <li>'cursor' property values: ew-resize | ns-resize | nesw-resize | nwse-resize
tantek@1965 259 implemented by Firefox and Safari
tantek@1965 260 </li>
tantek@1965 261 <li>'resize' property
tantek@1965 262 implemented by Firefox 4 and Safari
tantek@1965 263 </li>
tantek@1903 264 -->
tantek@3147 265 <li>::value ::choices ::repeat-item ::repeat-index pseudo-elements</li>
tantek@3117 266 <li>'box-sizing' property value: padding-box</li>
tantek@1903 267 <li>'content' property value: icon</li>
tantek@1903 268 <li>'icon' property</li>
tantek@3117 269 <li>'ime-mode' property</li>
tantek@4243 270 <li>'nav-index', 'nav-up', 'nav-down', 'nav-right', 'nav-left'
tantek@4243 271 properties</li>
tantek@3119 272 <li>'text-overflow' property value: &lt;string&gt;</li>
tantek@3119 273 <li>'text-overflow' property 2-value syntax and definition.</li>
tantek@1903 274 </ul>
tantek@1903 275
tantek@1903 276
tantek@1903 277
tantek@1903 278 <h2 class="no-num no-toc" id="summary">Overview</h2>
tantek@1903 279
tantek@1903 280 <p>This section is <em>informative</em>.</p>
tantek@1903 281
tantek@1903 282 <p>This document is one of the "modules" for the upcoming CSS3
tantek@1903 283 specification. It not only describes the user interface related
tantek@1903 284 properties and values that already exist in
tantek@1903 285 <a href="http://www.w3.org/TR/REC-CSS1">CSS1</a> [[CSS1]]
tantek@1903 286 and <a href="http://www.w3.org/TR/CSS21">CSS2.1</a> [[!CSS21]], but introduces
tantek@1903 287 new properties and values for CSS3 as well.
tantek@1903 288 The Working Group doesn't expect that all implementations of CSS3 will implement
tantek@1903 289 all properties or values. Instead, there will probably be a small number of variants of CSS3, so-called "profiles".
tantek@1903 290 </p>
tantek@1903 291
tantek@1903 292 <p>This document is the result of the merging of relevant parts of
tantek@1903 293 the following Recommendations and Working Drafts, and the addition of some new features.
tantek@1903 294 </p>
tantek@1903 295 <ul>
tantek@1903 296 <li>Cascading Style Sheets, level 2, revision 1 [[!CSS21]]</li>
tantek@3119 297 <li><a href="http://www.w3.org/TR/2000/WD-css3-userint-20000216">User Interface for CSS3 (16 February 2000)</a> [[CSSUI]]</li>
tantek@1903 298 </ul>
tantek@1903 299
tantek@1903 300 <p>This specification contains:
tantek@1903 301 </p>
tantek@1903 302 <ul>
tantek@1903 303 <li>Pseudo-classes and pseudo-elements to style
tantek@1903 304 user interface states and element fragments respectively.
tantek@1903 305 </li>
tantek@1903 306 <li>Additions to the user interface features in
tantek@1903 307 <a href="http://www.w3.org/TR/CSS21">CSS2.1</a>.</li>
tantek@1903 308 <li>Directional focus navigation properties.</li>
tantek@1903 309 <li>A mechanism to allow the styling of elements as icons for accessibility.</li>
tantek@1903 310 </ul>
tantek@1903 311
tantek@1903 312
tantek@1903 313 <h2 class="no-num no-toc" id="contents">Table of contents</h2>
tantek@1903 314
tantek@1903 315 <!--toc-->
tantek@1903 316
tantek@1903 317 <hr>
tantek@1903 318
tantek@1903 319 <h2 id="intro">Introduction</h2>
tantek@1903 320
tantek@1903 321 <p>
tantek@1903 322 CSS3 is a set of modules, divided up and profiled in order to
tantek@4243 323 simplify the specification,
tantek@4243 324 and to allow implementors the flexibility of supporting
tantek@4243 325 the particular modules appropriate for their implementations.
tantek@1903 326 </p>
tantek@1903 327 <p>
tantek@1903 328 This module describes selectors and CSS properties which enable authors
tantek@1903 329 to style user interface related states, element fragments, properties
tantek@1903 330 and values.
tantek@1903 331 </p>
tantek@1903 332
tantek@1903 333 <p><a href="http://www.w3.org/TR/REC-CSS1#anchor-pseudo-classes">Section 2.1 of CSS1</a> [[CSS1]]
tantek@1903 334 and <a href="http://www.w3.org/TR/CSS2/ui.html">Chapter 18 of CSS2</a> [[CSS2]]
tantek@1903 335 introduced several user interface related pseudo-classes, properties and values.
tantek@1903 336 <a href="http://www.w3.org/TR/css3-selectors/#UIstates">Section 6.6.4 of Selectors</a> [[!SELECT]] also describes several additional user interface related pseudo-classes (and one pseudo-element).
tantek@1903 337 </p>
tantek@1903 338 <p>
tantek@1903 339 This Working Draft extends them to provide the ability, through CSS,
tantek@1903 340 to style elements based upon additional user interface states,
tantek@1903 341 to style fragments of user interface elements, and to alter the
tantek@1903 342 dynamic presentation of elements in ways previously only available through specific HTML4/XHTML1 elements and attributes.
tantek@1903 343 </p>
tantek@1903 344
tantek@1903 345 <h3 id="purpose">Purpose</h3>
tantek@1903 346
tantek@1903 347 <p>The purpose of this specification is to achieve the following objectives:
tantek@1903 348 </p>
tantek@1903 349 <ul>
tantek@1903 350 <li>Extend the user interface features in CSS2.1.</li>
tantek@1903 351 <li>Provide additional CSS mechanisms to augment or replace other
tantek@1903 352 dynamic presentation related features in HTML4/XHTML1.</li>
tantek@1903 353 <li>Introduce directional navigation properties to assist in the construction of
tantek@1903 354 user interfaces which make use of a directional navigation model.</li>
tantek@1903 355 <li>Introduce properties and values to specify icon presentations for
tantek@1903 356 elements to enhance accessibility.</li>
tantek@1903 357 </ul>
tantek@1903 358
tantek@1903 359 <h2>Conformance</h2>
tantek@1903 360
tantek@1903 361 <h3>Definitions</h3>
tantek@1903 362
tantek@1903 363 <p>The key words <span class="index-def" title="MUST">"MUST"</span>,
tantek@1903 364 <span class="index-def" title="MUST NOT">"MUST NOT"</span>, <span
tantek@1903 365 class="index-def" title="REQUIRED">"REQUIRED"</span>, <span
tantek@1903 366 class="index-def" title="SHALL">"SHALL"</span>, <span
tantek@1903 367 class="index-def" title="SHALL NOT">"SHALL NOT"</span>, <span
tantek@1903 368 class="index-def" title="SHOULD">"SHOULD"</span>, <span
tantek@1903 369 class="index-def" title="SHOULD NOT">"SHOULD NOT"</span>, <span
tantek@1903 370 class="index-def" title="RECOMMENDED">"RECOMMENDED"</span>, <span
tantek@1903 371 class="index-def" title="MAY">"MAY"</span>, and <span
tantek@1903 372 class="index-def" title="OPTIONAL">"OPTIONAL"</span> in this document
tantek@1903 373 are to be interpreted as described in RFC&nbsp;2119 (see [[!RFC2119]]).
tantek@4243 374 However, for readability, these words do not typically appear
tantek@4243 375 in all uppercase letters in this specification.
tantek@1903 376 </p>
tantek@1903 377
tantek@4243 378 <p>Additional key words, e.g. "User agent (UA)", are
tantek@4243 379 <a href="http://www.w3.org/TR/CSS21/conform.html#defs">defined
tantek@4243 380 by CSS 2.1</a> ([[!CSS21]], section 3.1).</p>
tantek@1903 381
tantek@1903 382 <h3>Classes of products</h3>
tantek@1903 383
tantek@4243 384 <p>The following classes of products (many of which overlap)
tantek@4243 385 should consider implementing this specification:</p>
tantek@1903 386
tantek@1903 387 <ul>
tantek@1903 388 <li>Web browsers</li>
tantek@4243 389 <li>User agents that implement one or more of the following types of
tantek@4243 390 content: HTML ([[HTML401]], [[HTML5]]), XHTML ([[XHTML10]],
tantek@4243 391 [[XHTML11]]), XForms (e.g. [[XFORMS11]]), SVG (e.g. [[SVG10]],
tantek@4243 392 [[SVG11]]) or other content languages that contain forms controls
tantek@4243 393 or are intended for user interaction
tantek@4243 394 </li>
tantek@4243 395 <li>User agents that implement one or more levels or modules of CSS
tantek@4243 396 (e.g. [[CSS1]], [[!CSS21]])</li>
tantek@1903 397 </ul>
tantek@1903 398
tantek@1903 399 <h3>Extensions</h3>
tantek@1903 400
tantek@4243 401 <p>This specification does not define
tantek@4243 402 any explicit extension mechanisms.
tantek@4243 403 If an implementation needs to extend the functionality
tantek@4243 404 of this specification, it must follow any/all guidelines
tantek@4243 405 and requirements of extensions as defined in CSS2.1, e.g.
tantek@4243 406 <a href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords"
tantek@4243 407 >Vendor-specific extensions</a>
tantek@4243 408 ([[!CSS21]], section 4.1.2.1).
tantek@1903 409 </p>
tantek@1903 410
tantek@1903 411
tantek@1903 412 <h2>Dependencies on other modules</h2>
tantek@1903 413
tantek@4243 414 <p>
tantek@4243 415 This CSS3 module depends on the following other specifications.
tantek@4243 416 </p>
tantek@1903 417
tantek@1903 418 <ul>
tantek@1903 419 <li>[[!SELECT]]</li>
tantek@1903 420 <li>[[!CSS3COLOR]]</li>
tantek@1903 421 <li>[[!CSS21]]</li>
tantek@1903 422 </ul>
tantek@1903 423
tantek@1903 424 <!--
tantek@1903 425 <p>It has non-normative (informative) references to the following
tantek@1903 426 other specifications:</p>
tantek@1903 427 <ul>
tantek@1903 428 </ul>
tantek@1903 429 -->
tantek@1903 430
tantek@1903 431 <p>
tantek@1993 432 The following work is related to the CSS Basic User Interface Module Level 3 (CSS3 Basic UI).
tantek@1903 433 </p>
tantek@1903 434
tantek@1903 435 <ul>
tantek@1903 436 <li>[[HTML401]]</li>
tantek@4114 437 <li>[[HTML5]]</li>
tantek@1903 438 <li>[[UAAG10]]</li>
tantek@1903 439 <li>[[XML10]]</li>
tantek@1903 440 <li>[[XHTML10]]</li>
tantek@1903 441 <li>[[XHTML11]]</li>
tantek@4228 442 <li>[[XFORMS11]]</li>
tantek@1903 443 </ul>
tantek@1903 444
tantek@1903 445 <p>This specification does not define what is a form element.</p>
tantek@1903 446
tantek@1903 447 <h2>User Interface Selectors</h2>
tantek@1903 448
tantek@1903 449 <h3 id="pseudo-classes">User interface states: pseudo-classes</h3>
tantek@1903 450 <p>The Selectors specification <a href="http://www.w3.org/TR/css3-selectors/#UIstates">defines several user interface selectors</a> ([[!SELECT]], sections 6.6.1 and 6.6.4) which represent
tantek@1903 451 user interface states:</p>
tantek@1903 452 <ul><li id="psuedo-hover"><a href="http://www.w3.org/TR/css3-selectors/#useraction-pseudos">:hover</a></li>
tantek@1903 453 <li id="pseudo-active"><a href="http://www.w3.org/TR/css3-selectors/#useraction-pseudos">:active</a></li>
tantek@1903 454 <li id="pseudo-focus"><a href="http://www.w3.org/TR/css3-selectors/#useraction-pseudos">:focus</a></li>
tantek@1903 455 <li id="pseudo-enabled"><a href="http://www.w3.org/TR/css3-selectors/#enableddisabled">:enabled</a></li>
tantek@1903 456 <li id="pseudo-disabled"><a href="http://www.w3.org/TR/css3-selectors/#enableddisabled">:disabled</a></li>
tantek@1903 457 <li id="pseudo-checked"><a href="http://www.w3.org/TR/css3-selectors/#checked">:checked</a></li>
tantek@1903 458 <li id="pseudo-indeterminate"><a href="http://www.w3.org/TR/css3-selectors/#indeterminate">:indeterminate</a></li>
tantek@1903 459 </ul>
tantek@1903 460
tantek@4243 461 <p>These pseudo-classes as defined by [[!SELECT]] are
tantek@4243 462 included in this specification by reference.</p>
tantek@1903 463
tantek@4243 464 <p>CSS 2.1 [[!CSS21]] specifies additional details
tantek@4243 465 for some of the selectors mentioned, above and beyond Selectors.
tantek@1903 466 </p>
tantek@1903 467
tantek@1903 468
tantek@1903 469 <h4 id="active">:active details</h4>
tantek@1903 470
tantek@4243 471 <p>In addition, on systems with more than one mouse button,
tantek@4243 472 :active is clarified to apply only to the primary
tantek@4243 473 or primary activation button (typically the "left" mouse button),
tantek@4243 474 and any aliases thereof.
tantek@4243 475 </p>
tantek@4243 476
tantek@4243 477 <h4 id="indeterminate">
tantek@4243 478 The indeterminate-value pseudo-class '':indeterminate''</h4>
tantek@4243 479
tantek@4243 480 <p>The <code>:indeterminate</code> pseudo-class applies
tantek@4243 481 to UI elements whose value is in an indeterminate state.
tantek@4243 482 For example, radio and checkbox elements
tantek@4243 483 can be toggled between checked and unchecked states,
tantek@4243 484 but are sometimes in an indeterminate state,
tantek@4243 485 neither checked nor unchecked.
tantek@4243 486 Similarly a progress meter can be in an indeterminate state
tantek@4243 487 when the percent completion is unknown.
tantek@4243 488 </p>
tantek@4243 489
tantek@4243 490 <p>Like the <code>:checked</code> pseudo-class,
tantek@4243 491 <code>:indeterminate</code> applies to all media.
tantek@4243 492 Components of a radio-group initialized with no pre-selected choice,
tantek@4243 493 for example, would be <code>:indeterminate</code>
tantek@4243 494 even in a static display.
tantek@4243 495 </p>
tantek@4243 496
tantek@1903 497
tantek@1903 498 <h4 class="no-num no-toc">New user interface state pseudo-classes</h4>
tantek@1903 499
tantek@1903 500 <p>In addition to the above-mentioned pseudo-classes, this specification introduces several new pseudo-classes to define additional user interface states.
tantek@1903 501 </p>
tantek@4243 502 <ul>
tantek@4243 503 <li>:default</li>
tantek@1903 504 <li>:valid</li>
tantek@1903 505 <li>:invalid</li>
tantek@1903 506 <li>:in-range</li>
tantek@1903 507 <li>:out-of-range</li>
tantek@1903 508 <li>:required</li>
tantek@1903 509 <li>:optional</li>
tantek@1903 510 <li>:read-only</li>
tantek@1903 511 <li>:read-write</li>
tantek@1903 512 </ul>
tantek@1903 513
tantek@4228 514 <p>Specifically, these new states (except for :default) are provided as a way to style elements which are in the respective states as defined by XForms [[XFORMS11]].</p>
tantek@1903 515
tantek@1903 516 <h4 id="pseudo-default">:default</h4>
tantek@4243 517 <p>The :default selector applies to the one or more UI elements
tantek@4243 518 that are the default among a set of similar elements.
tantek@4243 519 This selector typically applies to context menu items,
tantek@4243 520 buttons, and select lists/menus.
tantek@1903 521 </p>
tantek@1903 522 <p>
tantek@1903 523 One example is the default submit button among a set of buttons. Another example is the default option from a popup menu. Multiple elements in a select-many group could have multiple :default elements, like a selection of pizza toppings for example.
tantek@1903 524 </p>
tantek@1903 525
tantek@1903 526 <h4 id="pseudo-validity"><span id="pseudo-valid">:valid</span>
tantek@1903 527 and <span id="pseudo-invalid">:invalid</span></h4>
tantek@1903 528
tantek@1903 529 <p>An element is :valid or :invalid when it is,
tantek@1903 530 respectively, valid or invalid with respect to data validity semantics
tantek@4228 531 defined by a different specification (e.g. [[XFORMS11]]).
tantek@1903 532 An element which lacks data validity semantics is neither :valid nor :invalid. This is different from an element which otherwise has no constraints. Such an element would always be :valid.
tantek@1903 533 </p>
tantek@1903 534
tantek@1903 535 <h4 id="pseudo-range"><span id="pseudo-in-range">:in-range</span> and <span id="pseudo-out-of-range">:out-of-range</span></h4>
tantek@1903 536 <p>
tantek@1903 537 The :in-range and :out-of-range pseudo-classes apply only to elements that have range limitations. An element is :in-range or :out-of-range when the value that the element is bound to is in range or out of range of the presentation (e.g. visual or spoken representation) of the element respectively. An element that lacks data range limits or is not a form control is neither :in-range nor
tantek@1903 538 :out-of-range. E.g. a slider element with a value of 11 presented as a slider control that only represents the values from 1-10 is :out-of-range. Another example is a menu element with a value of "E" that happens to be presented as a popup menu that only has choices "A", "B" and "C".
tantek@1903 539 </p>
tantek@1903 540
tantek@1903 541 <h4 id="pseudo-required-value"><span id="pseudo-required">:required</span>
tantek@1903 542 and <span id="pseudo-optional">:optional</span></h4>
tantek@1903 543
tantek@1903 544 <p>A form element is :required or :optional if a value for it
tantek@1903 545 is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional.
tantek@1903 546 </p>
tantek@1903 547
tantek@1903 548 <h4 id="pseudo-ro-rw"><span id="pseudo-read-only">:read-only</span>
tantek@1903 549 and <span id="pseudo-read-write">:read-write</span></h4>
tantek@1903 550
tantek@1903 551 <p>An element whose contents are not user-alterable is :read-only.
tantek@1903 552 However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents,
tantek@1903 553 most elements are :read-only. However it may be possible (e.g. in the context of an editor) for any element to become :read-write.</p>
tantek@1903 554
tantek@1903 555
tantek@1903 556 <h3 id="pseudo-elements">User interface element fragments: pseudo-elements</h3>
tantek@1903 557
tantek@4243 558 <p>
tantek@4243 559 In addition to the above-mentioned pseudo-element,
tantek@4243 560 this specification introduces four new pseudo-elements
tantek@4243 561 to provide access to additional user interface element fragments.
tantek@1903 562 </p>
tantek@1903 563 <ul><li>::value</li>
tantek@1903 564 <li>::choices</li>
tantek@1903 565 <li>::repeat-item</li>
tantek@1903 566 <li>::repeat-index</li>
tantek@1903 567 </ul>
tantek@1903 568
tantek@4243 569 <p>Specifically, these new pseudo-elements are provided
tantek@4243 570 as a way to style user interface fragments
tantek@4243 571 as defined by XForms [[XFORMS11]].</p>
tantek@1903 572
tantek@4243 573 <p class="note">
tantek@4243 574 Note: The ::value, ::choices, ::repeat-item, and ::repeat-index
tantek@4243 575 pseudo-elements are all at risk.
tantek@4243 576 </p>
tantek@1903 577
tantek@1903 578 <h4 id="pseudo-value">::value</h4>
tantek@1903 579
tantek@1903 580 <p>A form element may contain both a label for its data value,
tantek@1903 581 and the data value itself. For such elements, the ::value pseudo-element
tantek@1903 582 selects the representation of just the data value itself, in order to
tantek@1903 583 style its appearance.
tantek@1903 584 </p>
tantek@1903 585
tantek@1903 586 <div class="example"><p style="display:none">Example(s):</p>
tantek@1903 587 <h4 class="no-num no-toc">fictional markup and illustration</h4>
tantek@1903 588 <p>
tantek@1903 589 Here is an example which illustrates the ::value of a text input field with fictional markup which is then styled with CSS.
tantek@1903 590 </p>
tantek@1903 591 <h5 class="no-num no-toc">sample XForms fragment with fictional markup:</h5>
tantek@1903 592 <pre><code>
tantek@1903 593 &lt;input&gt;
tantek@1903 594 &lt;label&gt;Zip code&lt;label&gt;
tantek@1903 595 <em>&lt;input::value/&gt;</em>
tantek@1903 596 &lt;/input&gt;
tantek@1903 597 </code></pre>
tantek@1903 598
tantek@1903 599 <h5 class="no-num no-toc">sample CSS:</h5>
tantek@1903 600 <pre><code class="css">
tantek@1903 601 input { border:dashed }
tantek@1903 602 label { border:dotted }
tantek@1903 603 input::value { border:solid }
tantek@1903 604 </code></pre>
tantek@1903 605
tantek@2337 606 <h5 class="no-num no-toc">an HTML+CSS approximation of this example</h5>
tantek@1903 607 <p>
tantek@1903 608 <span style="border:dashed;display:inline-block;padding:10px">
tantek@1903 609 <label
tantek@1903 610 style="border:dotted;display:inline-block;padding:2px;margin:0;font-size:1em"
tantek@1903 611 >Zip code</label>
tantek@1903 612 <input type="text"
tantek@1903 613 style="border:solid;display:inline-block;padding:2px;margin:0;font-size:1em"
tantek@1903 614 value="94117">
tantek@1903 615 </span>
tantek@1903 616 </p>
tantek@1903 617 <p>Spacing (in the form of padding) has been added to the above approximation to separate the borders and make the individual (pseudo-)elements easier to distinguish.
tantek@1903 618 </p>
tantek@1903 619 </div>
tantek@1903 620
tantek@2270 621 <p>The ::value pseudo-element is similar to an inline-level element, but with certain restrictions.
tantek@2270 622 The following properties apply to <code>::value</code>
tantek@2270 623 pseudo-element: font properties, color property, background properties,
tantek@2270 624 'word-spacing', 'letter-spacing', 'text-decoration', 'vertical-align',
tantek@2270 625 'text-transform', 'line-height'. UAs may apply other properties as well.
tantek@2270 626 </p>
tantek@2270 627
tantek@2270 628
tantek@1903 629 <h4 id="pseudo-choices">::choices</h4>
tantek@1903 630
tantek@1903 631 <p>Similarly, a form element which represents a list of options may contain
tantek@1903 632 both a label for the list, and the list of choices itself. For such elements, the ::choices pseudo-element selects the representation of just the list of choices themselves, in order to style their appearance.
tantek@1903 633 </p>
tantek@1903 634 <p>A list of radio buttons can also be selected with the ::choices pseudo-element, and the currently chosen radio button can be selected with the ::value pseudo-element.</p>
tantek@1903 635
tantek@1903 636 <h4 id="pseudo-repeat-item">::repeat-item</h4>
tantek@1903 637 <p>
tantek@1903 638 The ::repeat-item pseudo-element represents a single item from a repeating sequence. It is generated as a parent to all the elements in a single repeating item. Each ::repeat-item is associated with a particular instance data node, and is affected by the model item properties (e.g. '<code>relevant</code>') found there, as the related style properties will cascade to the child elements.
tantek@1903 639 </p>
tantek@1903 640
tantek@1903 641 <h4 id="pseudo-repeat-index">::repeat-index</h4>
tantek@1903 642 <p>
tantek@1903 643 The ::repeat-index pseudo-element represents the current item of a repeating sequence. It takes the place of the ::repeat-item as a parent of all the elements in the index repeating item.
tantek@1903 644 </p>
tantek@1903 645
tantek@1903 646 <div class="note"><p>
tantek@1903 647 <em><strong>Note.</strong>
tantek@1903 648 Any style declarations that an author wants to apply to all repeat items, including the index, must be done so by using both ::repeat-item and ::repeat-index selectors. Styles that are only applied to ::repeat-item will not automatically be applied to the respective ::repeat-index.
tantek@1903 649 </em></p>
tantek@1903 650 </div>
tantek@1903 651
tantek@1903 652 <div class="example"><p style="display:none">Example(s):</p>
tantek@1903 653 <h4 class="no-num no-toc">::repeat-item and ::repeat-index fictional markup</h4>
tantek@1903 654 <p>
tantek@1903 655 Here is an example that illustrates both ::repeat-item and ::repeat-index, since they are often both available and used at the same time. Assume appropriate namespace declarations were made in a header somewhere preceding the code in the example.
tantek@1903 656 </p>
tantek@1903 657 <p>The following markup snippet uses XHTML and XForms:</p>
tantek@1903 658 <pre><code lang="x-xhtml">
tantek@1903 659 &lt;html:table xforms:repeat-nodeset="..."&gt;
tantek@1903 660 &lt;html:tr&gt;
tantek@1903 661 &lt;html:td&gt;&lt;xforms:input ref="..."/&gt;&lt;xforms:input ref="..."/&gt;&lt;/html:td&gt;
tantek@1903 662 &lt;/html:tr&gt;
tantek@1903 663 &lt;/html:table&gt;
tantek@1903 664 </code></pre>
tantek@1903 665 <p>
tantek@1903 666 The following style rules are used to style all the repeated items and the current repeated item.
tantek@1903 667 </p>
tantek@1903 668 <pre><code class="css" lang="x-css">
tantek@1903 669 html|tr::repeat-item { outline: medium solid; color:gray }
tantek@1903 670 html|tr::repeat-index { outline: medium dashed; color:black }
tantek@1903 671 </code></pre>
tantek@1903 672 <p>
tantek@1903 673 The following fictional markup shows the state of the above markup when through user interaction the XForm contains three of the repeated items, where the third item is current.
tantek@1903 674 </p>
tantek@1903 675 <pre><code lang="x-xhtml">
tantek@1903 676 &lt;html:table xforms:repeat-nodeset="..."&gt;
tantek@1903 677 <em>&lt;html:tr::repeat-item&gt;</em>
tantek@1903 678 &lt;html:tr&gt;
tantek@1903 679 &lt;html:td&gt;&lt;xforms:input ref="..."/&gt;&lt;xforms:input ref="..."/&gt;&lt;/html:td&gt;
tantek@1903 680 &lt;/html:tr&gt;
tantek@1903 681 <em>&lt;/html:tr::repeat-item&gt;</em>
tantek@1903 682 <em>&lt;html:tr::repeat-item&gt;</em>
tantek@1903 683 &lt;html:tr&gt;
tantek@1903 684 &lt;html:td&gt;&lt;xforms:input ref="..."/&gt;&lt;xforms:input ref="..."/&gt;&lt;/html:td&gt;
tantek@1903 685 &lt;/html:tr&gt;
tantek@1903 686 <em>&lt;/html:tr::repeat-item&gt;</em>
tantek@1903 687 <em>&lt;html:tr::repeat-index&gt;</em>
tantek@1903 688 &lt;html:tr&gt;
tantek@1903 689 &lt;html:td&gt;&lt;xforms:input ref="..."/&gt;&lt;xforms:input ref="..."/&gt;&lt;/html:td&gt;
tantek@1903 690 &lt;/html:tr&gt;
tantek@1903 691 <em>&lt;/html:tr::repeat-index&gt;</em>
tantek@1903 692 &lt;/html:table&gt;
tantek@1903 693 </code></pre>
tantek@1903 694 </div>
tantek@1903 695
tantek@1903 696 <div class="note"><p>
tantek@1903 697 <em><strong>Note.</strong>
tantek@1903 698 The ::repeat-index pseudo-element takes the place of the ::repeat-item rather than being nested inside as a separate element. Thus just like :link or :visited are mutually exclusive for selecting hyperlinks, only one will exist and apply to a particular repeated item at any point.</em></p>
tantek@1903 699 </div>
tantek@1903 700
tantek@1903 701
tantek@1903 702 <h2>Element icons</h2>
tantek@1903 703
tantek@1903 704 <h3><span class="property">'content'</span> property addition</h3>
tantek@1903 705
tantek@1903 706 <table class="propdef"><tbody>
tantek@2325 707 <tr><th>Name:</th><td><dfn>content</dfn></td></tr>
tantek@2325 708 <tr><th>New&nbsp;Value(s):</th><td title="">icon</td></tr>
tantek@1903 709
tantek@2325 710 <tr><th>Initial:</th><td>same as CSS 2.1</td></tr>
tantek@2325 711 <tr><th>Applies to:</th><td>same as CSS 2.1</td></tr>
tantek@2325 712 <tr><th>Inherited:</th><td>same as CSS 2.1</td></tr>
tantek@2325 713 <tr><th>Percentages:</th><td>same as CSS 2.1</td></tr>
tantek@2325 714 <tr><th>Media:</th><td>same as CSS 2.1</td></tr>
tantek@2325 715 <tr><th>Computed&nbsp;value:</th><td>the keyword '<span class="value" title="">icon</span>' if specified as such, otherwise same as CSS 2.1</td></tr>
dbaron@7401 716 <tr><th>Animatable:</th><td>no</td></tr>
tantek@1903 717 </tbody></table>
tantek@1903 718
tantek@1903 719 <dl>
tantek@3117 720 <dt>icon</dt>
tantek@1903 721 <dd>The (pseudo-)element is replaced in its entirety by the resource referenced by its <span class="property">'icon'</span> property, and treated as a replaced element.
tantek@1903 722 </dd>
tantek@1903 723 </dl>
tantek@1903 724
tantek@1903 725 <p class="note"><em><strong>Note.</strong>
tantek@1903 726 It is expected that the next draft of the CSS3 Generated Content module [[CSS3GENCON]] will include and superset this functionality.
tantek@1903 727 </em></p>
tantek@1903 728
tantek@4243 729 <p class="note">
tantek@4243 730 Note: The 'icon' value is at risk.
tantek@4243 731 </p>
tantek@1903 732
tantek@1903 733 <h3><span class="property">'icon'</span> property</h3>
tantek@1903 734
tantek@1903 735 <table class="propdef"><tbody>
tantek@2325 736 <tr><th>Name:</th><td><dfn>icon</dfn></td></tr>
tantek@2325 737 <tr><th>Value:</th><td>auto | &lt;uri&gt; [, &lt;uri&gt;]* | inherit</td></tr>
tantek@2325 738 <tr><th>Initial:</th><td>auto</td></tr>
tantek@2325 739 <tr><th>Applies to:</th><td>all elements</td></tr>
tantek@2325 740 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 741 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 742 <tr><th>Media:</th><td>all</td></tr>
tantek@3733 743 <tr><th>Computed&nbsp;value:</th><td>as specified, except with any relative URLs converted to absolute</td></tr>
dbaron@7401 744 <tr><th>Animatable:</th><td>no</td></tr>
tantek@1903 745 </tbody></table>
tantek@1903 746
tantek@1903 747 <dl>
tantek@3117 748 <dt>auto</dt>
tantek@1903 749 <dd>Use a default generic icon provided by the user agent.</dd>
tantek@3117 750 <dt>&lt;uri&gt;</dt>
tantek@1903 751 <dd>URIs (see [[!URI]], [[!RFC1738]] and [[!RFC1808]]) provide a way of identifying resources. The &lt;uri&gt; value(s) in this property refer to one or more icons in a comma delimited list. The user agent loads the referenced icons one by one until it finds one that it is able to render. This permits the usage of multiple different icon formats for various platforms, and various media for that matter.</dd>
tantek@1903 752 </dl>
tantek@1903 753
tantek@1903 754 <p>The <span class="property">'icon'</span> property provides the author the ability to style any arbitrary element with an iconic equivalent. An element's icon is not used/rendered unless the <span class="property">'content'</span> property is set to the value '<span class="value" title="">icon</span>' (see above). Documents whose elements have icons assigned to them can be more easily viewed by users who find too much text distracting.
tantek@1903 755 </p>
tantek@1903 756
tantek@1903 757 <div class="example"><p style="display:none">Example(s):</p>
tantek@1903 758 <h4 class="no-num no-toc">Representing elements with icons</h4>
tantek@1903 759 <p>This example uses the above icon features to display icons in place of images and objects.</p>
tantek@1903 760 <pre><code class="css">
tantek@1903 761 img,object { content:icon }
tantek@1903 762 /* note that the CSS3 Generated Content module [[CSS3GENCON]]
tantek@1903 763 expands the <span class="property">'content'</span> property to apply to all elements. */
tantek@1903 764
tantek@1903 765 img { icon:url(imgicon.png); }
tantek@1903 766 /* provide a custom icon for images */
tantek@1903 767
tantek@1903 768 object { icon:url(objicon.png); }
tantek@1903 769 /* provide a different custom icon for objects */
tantek@1903 770 </code></pre>
tantek@1903 771 </div>
tantek@1903 772
tantek@4243 773 <p class="note">
tantek@4243 774 Note: The 'icon' property is at risk.
tantek@4243 775 </p>
tantek@1903 776
tantek@1903 777 <h2>Box Model addition</h2>
tantek@1903 778
tantek@1903 779 <h3 id="box-sizing"><span class="property">'box-sizing'</span> property</h3>
tantek@1903 780
tantek@1903 781 <table class="propdef"><tbody>
tantek@2325 782 <tr><th>Name:</th><td><dfn>box-sizing</dfn></td></tr>
tantek@3117 783 <tr><th>Value:</th><td>
tantek@3117 784 content-box |
tantek@3117 785 padding-box |
tantek@3117 786 border-box |
tantek@3117 787 inherit</td></tr>
tantek@2325 788 <tr><th>Initial:</th><td>content-box</td></tr>
tantek@2325 789 <tr><th>Applies to:</th><td>all elements that accept width or height</td></tr>
tantek@2325 790 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 791 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 792 <tr><th>Media:</th><td>visual</td></tr>
tantek@2325 793 <tr><th>Computed&nbsp;value:</th><td>specified value</td></tr>
dbaron@7401 794 <tr><th>Animatable:</th><td>no</td></tr>
tantek@1903 795 </tbody></table>
tantek@1903 796
tantek@1903 797 <dl>
tantek@3117 798 <dt>content-box</dt>
tantek@1903 799 <dd>This is the behavior of width and height as specified by CSS2.1.
tantek@1903 800 The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element. The padding
tantek@1903 801 and border of the element are laid out and drawn outside the
tantek@1903 802 specified width and height.</dd>
tantek@3117 803 <dt>padding-box</dt>
tantek@3117 804 <dd>
tantek@3117 805 The specified width and height (and respective min/max properties)
tantek@3117 806 on this element determine the padding box of the element.
tantek@3117 807 That is, any padding specified on the element is laid out and
tantek@3117 808 drawn inside this specified width and height.
tantek@3117 809 The content width and height are calculated by
tantek@3117 810 subtracting the padding widths of the respective sides
tantek@3117 811 from the specified <span class="property">'width'</span> and
tantek@3117 812 <span class="property">'height'</span> properties.
tantek@3117 813 As the content width and height
tantek@3117 814 <a href="http://www.w3.org/TR/CSS21/visudet.html#the-width-property">
tantek@3117 815 cannot be negative</a> ([[!CSS21]], section 10.2),
tantek@3117 816 this computation is floored at 0.
tantek@3117 817 </dd>
tantek@3117 818 <dt>border-box</dt>
tantek@3117 819 <dd>The specified width and height (and respective min/max properties) on this element determine the border box of the element. That is, any padding or border
tantek@1903 820 specified on the element is laid out and drawn inside this specified
tantek@1903 821 width and height. The content width and height are calculated by
tantek@1903 822 subtracting the border and padding widths of the respective sides
tantek@1903 823 from the specified <span class="property">'width'</span> and <span class="property">'height'</span> properties. As the content width and height <a href="http://www.w3.org/TR/CSS21/visudet.html#the-width-property">cannot be negative</a> ([[!CSS21]], section 10.2), this computation is floored at 0.
tantek@1903 824
tantek@1903 825 <p class="note"><em><strong>Note.</strong>
tantek@1903 826 This is the behavior of width and height as commonly implemented by legacy HTML user agents for replaced elements and input elements.</em>
tantek@1903 827 </p>
tantek@1903 828 </dd>
tantek@1903 829 </dl>
tantek@1903 830
tantek@1903 831
tantek@1903 832 <div class="example"><p style="display:none">Example(s):</p>
tantek@1903 833 <h4 class="no-num no-toc">Using box-sizing to evenly share space</h4>
tantek@1903 834 <p>This example uses box-sizing to evenly horizontally split two divs with fixed size borders inside a div container, which would otherwise require additional markup.
tantek@1903 835 </p>
tantek@1903 836 <h5 class="no-num no-toc">sample CSS:</h5>
tantek@1903 837 <pre><code class="css">
tantek@1903 838 div.container {
tantek@1903 839 width:38em;
tantek@1903 840 border:1em solid black;
tantek@1903 841 }
tantek@1903 842
tantek@1903 843 div.split {
tantek@1903 844 box-sizing:border-box;
tantek@1903 845 width:50%;
tantek@1903 846 border:1em silver ridge;
tantek@1903 847 float:left;
tantek@1903 848 }
tantek@1903 849 </code></pre>
tantek@2337 850 <h5 class="no-num no-toc">sample HTML fragment:</h5>
tantek@1903 851 <pre><code>
tantek@1903 852 &lt;div class="container"&gt;
tantek@1903 853 &lt;div class="split"&gt;This div occupies the left half.&lt;/div&gt;
tantek@1903 854 &lt;div class="split"&gt;This div occupies the right half.&lt;/div&gt;
tantek@1903 855 &lt;/div&gt;
tantek@1903 856 </code></pre>
tantek@2337 857 <h5 class="no-num no-toc">demonstration of sample CSS and HTML:</h5>
tantek@1903 858 <div style="width:38em; border:1em solid black"><div style="box-sizing:border-box; width:50%; border:1em silver ridge; float:left">This div should occupy the left half.</div><div style="box-sizing:border-box; width:50%; border:1em silver ridge; float:left">This div should occupy the right half.</div>The two divs above should appear side by side, each (including borders) 50% of the content width of their container. If instead they are stacked one on top of the other then your browser does not support <span class="property">'box-sizing'</span>.
tantek@1903 859 </div>
tantek@1903 860 </div>
tantek@1903 861
tantek@4243 862 <p class="note">
tantek@4243 863 Note: The 'padding-box' value is at risk.
tantek@4243 864 </p>
tantek@4243 865
tantek@1903 866
tantek@1903 867 <h2>Outline properties</h2>
tantek@1903 868
tantek@1903 869 <p>At times, style sheet authors may want to create outlines around
tantek@1903 870 visual objects such as buttons, active form fields, image maps, etc.,
tantek@1903 871 to make them stand out. Outlines differ from borders in the following
tantek@1903 872 ways:</p>
tantek@1903 873
tantek@1903 874 <ol>
tantek@1903 875 <li>Outlines do not take up space. </li>
tantek@1903 876 <li>Outlines may be non-rectangular. </li>
tantek@1903 877 </ol>
tantek@1903 878
tantek@1903 879 <p>The outline properties control the style of these dynamic outlines.
tantek@1903 880 </p>
tantek@1903 881
tantek@1903 882 <h3 id="outline"><span class="property">'outline'</span> property</h3>
tantek@1903 883
tantek@1903 884 <table class="propdef" id="propdef-outline"><tbody>
tantek@2325 885 <tr><th>Name:</th><td><dfn>outline</dfn></td></tr>
tantek@2325 886 <tr><th>Value:</th><td>
tantek@1903 887 [ <span class=property>&lt;'outline-color'&gt;</span> || <span class=property>&lt;'outline-style'&gt;</span> ||
tantek@1903 888 <span class=property>&lt;'outline-width'&gt;</span> ] |
tantek@1903 889 inherit
tantek@1903 890 </td></tr>
tantek@2325 891 <tr><th>Initial:</th><td>see individual properties</td></tr>
tantek@2325 892 <tr><th>Applies to:</th><td>all elements</td></tr>
tantek@2325 893 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 894 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 895 <tr><th>Media:</th><td>visual</td></tr>
tantek@3733 896 <tr><th>Computed&nbsp;value:</th><td>see individual properties</td></tr>
dbaron@7401 897 <tr><th>Animatable:</th><td>see individual properties</td></tr>
tantek@1903 898 </tbody></table>
tantek@1903 899
tantek@1903 900 <h3 id="outline-width"><span class="property">'outline-width'</span> property</h3>
tantek@1903 901
tantek@1903 902 <table class="propdef" id="propdef-outline-width"><tbody>
tantek@2325 903 <tr><th>Name:</th><td><dfn>outline-width</dfn></td></tr>
tantek@2325 904 <tr><th>Value:</th><td><a href="http://www.w3.org/TR/CSS21/box.html#value-def-border-width" class="noxref"><span class="value-inst-border-width">&lt;border-width&gt;</span></a> | inherit</td></tr>
tantek@2325 905 <tr><th>Initial:</th><td>medium</td></tr>
tantek@2325 906 <tr><th>Applies to:</th><td>all elements</td></tr>
tantek@2325 907 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 908 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 909 <tr><th>Media:</th><td>visual</td></tr>
tantek@3733 910 <tr><th>Computed&nbsp;value:</th><td>absolute length; '0' if the outline style is 'none'.</td></tr>
dbaron@7401 911 <tr><th>Animatable:</th><td>as <a href="http://dev.w3.org/csswg/css3-transitions/#animtype-length">length</a></td></tr>
tantek@1903 912 </tbody></table>
tantek@1903 913
tantek@1903 914 <h3 id="outline-style"><span class="property">'outline-style'</span> property</h3>
tantek@1903 915
tantek@1903 916 <table class="propdef" id="propdef-outline-style"><tbody>
tantek@2325 917 <tr><th>Name:</th><td><dfn>outline-style</dfn></td></tr>
tantek@2325 918 <tr><th>Value:</th><td>auto | <a href="http://www.w3.org/TR/CSS21/box.html#value-def-border-style" class="noxref"><span class="value-inst-border-style">&lt;border-style&gt;</span></a> | inherit</td></tr>
tantek@2325 919 <tr><th>Initial:</th><td>none</td></tr>
tantek@2325 920 <tr><th>Applies to:</th><td>all elements</td></tr>
tantek@2325 921 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 922 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 923 <tr><th>Media:</th><td>visual</td></tr>
tantek@2325 924 <tr><th>Computed&nbsp;value:</th><td>specified value</td></tr>
dbaron@7401 925 <tr><th>Animatable:</th><td>no</td></tr>
tantek@1903 926 </tbody></table>
tantek@1903 927
tantek@1903 928 <h3 id="outline-color"><span class="property">'outline-color'</span> property</h3>
tantek@1903 929
tantek@1903 930 <table class="propdef" id="propdef-outline-color"><tbody>
tantek@2325 931 <tr><th>Name:</th><td><dfn>outline-color</dfn></td></tr>
tantek@2325 932 <tr><th>Value:</th><td><a href="http://www.w3.org/TR/css3-color/#colorunits" class="noxref"><span class="value-inst-color">&lt;color&gt;</span></a> | invert | inherit</td></tr>
tantek@2325 933 <tr><th>Initial:</th><td>invert</td></tr>
tantek@2325 934 <tr><th>Applies to:</th><td>all elements</td></tr>
tantek@2325 935 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 936 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 937 <tr><th>Media:</th><td>visual</td></tr>
tantek@2325 938 <tr><th>Computed&nbsp;value:</th><td>The computed value for '<span class="value">invert</span>' is '<span class="value">invert</span>'. For &lt;color&gt; values, the computed value is as defined for the [[!CSS3COLOR]] <span class="property">'color'</span> property.</td></tr>
dbaron@7401 939 <tr><th>Animatable:</th><td>as <a href="http://dev.w3.org/csswg/css3-transitions/#animtype-color">color</a></td></tr>
tantek@1903 940 </tbody></table>
tantek@1903 941
tantek@1903 942 <p>The outline created with the outline properties is drawn "over" a
tantek@1903 943 box, i.e., the outline is always on top, and doesn't influence the
tantek@1903 944 position or size of the box, or of any other boxes. Therefore,
tantek@1903 945 displaying or suppressing outlines does not cause reflow.
tantek@1903 946 </p>
tantek@1903 947
tantek@1903 948 <p>Outlines may be non-rectangular.
tantek@1903 949 For example, if the element is broken across several lines, the
tantek@1903 950 outline should be an outline or minimum set of outlines that encloses all
tantek@1903 951 the element's boxes. Each part of the outline should be fully connected
tantek@1903 952 rather than open on some sides (as borders on inline elements are when
tantek@1903 953 lines are broken). The parts of the outline are not required to be
tantek@1903 954 rectangular. The position of the outline may be affected by
tantek@1903 955 descendant boxes. User agents should use an algorithm for determining
tantek@1903 956 the outline that encloses a region appropriate for conveying the
tantek@1903 957 concept of focus to the user.
tantek@1903 958 </p>
tantek@1903 959
tantek@1903 960 <p>The <span class=property>'outline-width'</span> property accepts
tantek@1903 961 the same values as <a href="http://www.w3.org/TR/CSS21/box.html#propdef-border-width" class="noxref"><span
tantek@1903 962 class="propinst-border-width">'border-width'</span></a> ([[!CSS21]], section 8.5.1).
tantek@1903 963 </p>
tantek@1903 964
tantek@1903 965 <p>The <span class=property>'outline-style'</span> property accepts
tantek@4243 966 the same values as
tantek@4243 967 <a href="http://www.w3.org/TR/CSS21/box.html#propdef-border-style"
tantek@4243 968 class="noxref"
tantek@4243 969 ><span class="propinst-border-style"
tantek@4243 970 >'border-style'</span></a>
tantek@4243 971 ([[!CSS21]], section 8.5.3), except that
tantek@4243 972 '<span class="value">hidden</span>' is not a legal outline style.
tantek@4243 973 In addition, in CSS3,
tantek@4243 974 <span class=property>'outline-style'</span>
tantek@4243 975 accepts the value '<span class="value">auto</span>'.
tantek@4243 976 The '<span class="value">auto</span>' value permits the user agent
tantek@4243 977 to render a custom outline style,
tantek@4243 978 typically a style which is either a user interface default
tantek@4243 979 for the platform, or perhaps a style that is richer
tantek@4243 980 than can be described in detail in CSS,
tantek@4243 981 e.g. a rounded edge outline with semi-translucent outer pixels
tantek@4243 982 that appears to glow.
tantek@4243 983 As such, this specification does not define how the
tantek@4243 984 <span class="property">'outline-color'</span>
tantek@4243 985 is incorporated or used (if at all) when rendering
tantek@4243 986 '<span class="value">auto</span>' style outlines.
tantek@4243 987 User agents may treat '<span class="value">auto</span>' as
tantek@4243 988 '<span class="value">solid</span>'.
tantek@1903 989 </p>
tantek@1903 990
tantek@1903 991 <p>The <span class="property">'outline-color'</span> property
tantek@1903 992 accepts all colors, as well as the keyword '<dfn>invert</dfn>'. 'Invert' is expected to perform a color inversion on the pixels on the screen. This is a
tantek@1903 993 common trick to ensure the focus border is visible, regardless of
tantek@1903 994 color background.
tantek@1903 995 </p>
tantek@1903 996
tantek@1903 997 <p>
tantek@1903 998 Conformant UAs may ignore the '<span class="value">invert</span>' value on platforms that do not support color inversion of the pixels on the screen. If the UA does not support the '<span class="value">invert</span>' value then the initial value of the <span class="property">'outline-color'</span>
tantek@1903 999 property is the '<span class="value">currentColor</span>' [[!CSS3COLOR]] keyword.
tantek@1903 1000 </p>
tantek@1903 1001
tantek@1903 1002 <p>The <span class=property>'outline'</span> property is a
tantek@1903 1003 shorthand property, and sets all three of <span class=property>'outline-style'</span>, <span class=property>'outline-width'</span>, and <span class=property>'outline-color'</span>.
tantek@1903 1004 </p>
tantek@1903 1005
tantek@1903 1006 <p class="note"><em><strong>Note.</strong>
tantek@1903 1007 The outline is the same on all sides. In contrast to borders, there are no 'outline-top' or 'outline-left' etc. properties.</em>
tantek@1903 1008 </p>
tantek@1903 1009
tantek@1903 1010 <p>
tantek@1903 1011 This specification does not define how multiple overlapping
tantek@1903 1012 outlines are drawn, or how outlines are drawn for boxes that are
tantek@1903 1013 partially obscured behind other elements.
tantek@1903 1014 </p>
tantek@1903 1015
tantek@1903 1016 <div class="example"><p style="display:none">Example(s):</p><p>
tantek@1903 1017 Here's an example of drawing a
tantek@1903 1018 thick outline around a BUTTON element:
tantek@1903 1019 </p>
tantek@1903 1020 <pre><code class="css">
tantek@1903 1021 button { outline: thick solid }
tantek@1903 1022 </code></pre>
tantek@1903 1023 </div>
tantek@1903 1024
tantek@1903 1025 <p>Graphical user interfaces may use outlines around elements to tell
tantek@1903 1026 the user which element on the page has the focus. These outlines are in addition
tantek@1903 1027 to any borders, and switching outlines on and off should not cause
tantek@1903 1028 the document to reflow. The focus is the subject of user interaction
tantek@1903 1029 in a document (e.g., for entering text, selecting a button,
tantek@1903 1030 etc.).
tantek@1903 1031 </p>
tantek@1903 1032
tantek@1903 1033 <div class="example"><p style="display:none">Example(s):</p>
tantek@1903 1034 <p>For example, to draw a thick black line around an element when it
tantek@1903 1035 has the focus, and a thick red line when it is active, the following
tantek@1903 1036 rules can be used:
tantek@1903 1037 </p>
tantek@1903 1038 <pre><code class="css">
tantek@1903 1039 :focus { outline: thick solid black }
tantek@1903 1040 :active { outline: thick solid red }
tantek@1903 1041 </code></pre>
tantek@1903 1042 </div>
tantek@1903 1043
tantek@1903 1044 <div class="note"><p>
tantek@1903 1045 <em><strong>Note.</strong>
tantek@1903 1046 Since the outline does not affect formatting (i.e., no
tantek@1903 1047 space is left for it in the box model), it may well overlap
tantek@1903 1048 other elements on the page.
tantek@1903 1049 </em></p>
tantek@1903 1050 </div>
tantek@1903 1051
tantek@1903 1052
tantek@1903 1053
tantek@1903 1054 <h3 id="outline-offset"><span class="property">'outline-offset'</span> property</h3>
tantek@1903 1055
tantek@1903 1056 <p>By default, the outline is drawn starting just outside the border edge.
tantek@1903 1057 However, it is possible to offset the outline and draw it beyond the border edge.</p>
tantek@1903 1058
tantek@1903 1059 <table class="propdef" id="propdef-outline-offset"><tbody>
tantek@2325 1060 <tr><th>Name:</th><td><dfn>outline-offset</dfn></td></tr>
tantek@2325 1061 <tr><th>Value:</th><td>&lt;length&gt; | inherit</td></tr>
tantek@2325 1062 <tr><th>Initial:</th><td>0</td></tr>
tantek@2325 1063 <tr><th>Applies to:</th><td>all elements</td></tr>
tantek@2325 1064 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 1065 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 1066 <tr><th>Media:</th><td>visual</td></tr>
tantek@2325 1067 <tr><th>Computed&nbsp;value:</th><td>&lt;length&gt; value in absolute units (px or physical).</td></tr>
dbaron@7401 1068 <tr><th>Animatable:</th><td>as <a href="http://dev.w3.org/csswg/css3-transitions/#animtype-length">length</a></td></tr>
tantek@1903 1069 </tbody></table>
tantek@1903 1070
tantek@1903 1071 <p>If the computed value of <span class="property">'outline-offset'</span> is anything other than 0, then the outline is outset from the border edge by that amount.</p>
tantek@1903 1072
tantek@1903 1073
tantek@1903 1074 <div class="example"><p style="display:none">Example(s):</p>
tantek@1903 1075 <p>For example, to leave 2 pixels of space between a focus outline and the element that has the focus, or is active, the following rule can be used:
tantek@1903 1076 </p>
tantek@1903 1077 <pre><code class="css">
tantek@1903 1078 :focus,:active { outline-offset: 2px }
tantek@1903 1079 </code></pre>
tantek@1903 1080 </div>
tantek@1903 1081
tantek@1903 1082
tantek@1903 1083
tantek@2325 1084 <h2>Resizing &amp; Overflow</h2>
tantek@1903 1085
tantek@2373 1086 <p>CSS2.1 provides a mechanism for controlling the appearance of a scrolling mechanism (e.g. scrollbars) on block container elements.
tantek@2325 1087 This specification adds to that a mechanism for controlling
tantek@2325 1088 user resizability of elements as well as the ability to specify text overflow behavior.</p>
tantek@1903 1089
tantek@1903 1090 <h3 id="resize"><span class="property">'resize'</span> property</h3>
tantek@1903 1091 <p>The <span class="property">'resize'</span> property allows the author to specify whether or not an element is resizable by the user, and if so, along which axis/axes.</p>
tantek@1903 1092
tantek@2325 1093 <table class="propdef" id="propdef-resize"><tbody>
tantek@2325 1094 <tr><th>Name:</th><td><dfn>resize</dfn></td></tr>
tantek@2325 1095 <tr><th>Value: </th><td>none | both | horizontal | vertical | inherit</td></tr>
tantek@2325 1096 <tr><th>Initial:</th><td>none</td></tr>
tantek@2325 1097 <tr><th>Applies to:</th><td>elements with <span class="property">'overflow'</span> other than visible</td></tr>
tantek@2325 1098 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 1099 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 1100 <tr><th>Media:</th><td>visual</td></tr>
tantek@2325 1101 <tr><th>Computed&nbsp;value:</th><td>specified value.</td></tr>
dbaron@7401 1102 <tr><th>Animatable:</th><td>no</td></tr>
tantek@2325 1103 </tbody></table>
tantek@1903 1104
tantek@1903 1105 <dl>
tantek@3117 1106 <dt>none</dt>
tantek@1903 1107 <dd>The UA does not present a resizing mechanism on the element, and the user is given no direct manipulation mechanism to resize the element.</dd>
tantek@3117 1108 <dt>both</dt>
tantek@1903 1109 <dd>The UA presents a bidirectional resizing mechanism to
tantek@1903 1110 allow the user to adjust both the height and the width of the element.</dd>
tantek@3117 1111 <dt>horizontal</dt>
tantek@1903 1112 <dd>The UA presents a unidirectional horizontal resizing mechanism to allow the user to adjust only the width of the element.</dd>
tantek@3117 1113 <dt>vertical</dt>
tantek@1903 1114 <dd>The UA presents a unidirectional vertical resizing mechanism to allow the user to adjust only the height of the element.</dd>
tantek@1903 1115 </dl>
tantek@1903 1116
tantek@1903 1117 <p>Currently it is possible to control the appearance of the scrolling mechanism (if any) on an element using the <span class="property">'overflow'</span> property (e.g. '<code class="css">overflow: scroll</code>' vs. '<code class="css">overflow: hidden</code>' etc.). The purpose of the <span class="property">'resize'</span> property is to also allow control over the appearance and function of the resizing mechanism (e.g. a resize box or widget) on the element.</p>
tantek@1903 1118 <p class="note">
tantek@1903 1119 <em><strong>Note.</strong>
tantek@1903 1120 The resizing mechanism is NOT the same as the scrolling mechanism. The scrolling mechanism allows the user to determine which portion of the contents of an element is shown. The resizing mechanism allows the user to determine the size of the element.
tantek@1903 1121 </em></p>
tantek@1903 1122 <p>The <span class="property">'resize'</span> property applies to elements whose computed <span class="property">'overflow'</span> value is something other than '<span class="value">visible</span>'. If <span class="property">'overflow'</span> is different in a particular axis (i.e. <span class="property">'overflow-x'</span> vs. <span class="property">'overflow-y'</span>), then this property applies to the dimension(s) which do not have the value '<span class="value">visible</span>'.
tantek@1903 1123 </p>
tantek@1903 1124 <p>
tantek@1903 1125 When an element is resized by the user, the user agent keeps track of a resize factor (which is initially 1.0) for the width and height, which it then applies to the computed width and height as part of determining the used width and height. The element's contents (and surroundings) are reformatted as necessary.
tantek@1903 1126 </p>
tantek@1903 1127 <p>The resize factor introduces a step in width/height calculations and formatting as described in <a href="http://www.w3.org/TR/CSS21/visudet.html">chapter 10 of CSS2.1</a>. Specifically the following step is inserted between steps 1 and 2 of the algorithm in <a href="http://www.w3.org/TR/CSS21/visudet.html#min-max-widths">section 10.4</a> and <a href="http://www.w3.org/TR/CSS21/visudet.html#min-max-heights">10.7</a> in CSS2.1 [[!CSS21]], where [dimension] is 'width' for 10.4 and 'height' for 10.7.
tantek@1903 1128 </p>
tantek@1903 1129 <blockquote><p style="text-indent:-2em">
tantek@1903 1130 1b. If the resize [dimension] factor is not 1.0, then the tentative
tantek@1903 1131 used [dimension] is multiplied by that factor, and the rules
tantek@1903 1132 above are applied again, but this time using the result of that
tantek@1903 1133 multiplication as the computed value for '[dimension]'.
tantek@1903 1134 </p></blockquote>
tantek@1903 1135 <p>
tantek@1903 1136 With regard to interactivity and the Document Object Model (DOM), the resize factor on an element lasts the lifetime of the element, however, if the <span class="property">'resize'</span> property itself is altered (e.g. via pseudo-class change or via DOM manipulation), then the resize factor is reset to 1.0.
tantek@1903 1137 </p>
tantek@1903 1138 <p>
tantek@1903 1139 The precise direction of resizing (i.e. altering the top left of the element or altering the bottom right) may depend on a number of factors including whether the element is absolutely positioned, whether it is positioned using the <span class="property">'right'</span> and <span class="property">'bottom'</span> properties, whether the language of the element is right-to-left etc. The precise direction of resizing is left to the UA to properly determine for the platform.
tantek@1903 1140 </p>
tantek@1903 1141 <p>
tantek@1903 1142 The user agent may restrict the resizing range to something suitable, such as between the original formatted size of the element, and large enough to encompass all the element's contents.
tantek@1903 1143 </p>
tantek@1903 1144
tantek@1903 1145 <div class="example"><p style="display:none">Example(s):</p>
tantek@1903 1146 <p>For example, to make iframes scrollable <em>and</em> resizable, the following rule can be used:
tantek@1903 1147 </p>
tantek@1903 1148 <pre><code class="css">
tantek@1903 1149 iframe,object[type^="text/"],
tantek@1903 1150 object[type$="+xml"],object[type="application/xml"]
tantek@1903 1151 {
tantek@1903 1152 overflow:auto;
tantek@1903 1153 resize:both;
tantek@1903 1154 }
tantek@1903 1155 </code></pre>
tantek@1903 1156 </div>
tantek@1903 1157
tantek@1903 1158 <!--
tantek@1903 1159 too bad we don't have @viewport yet. otherwise this would be cool:
tantek@1903 1160 <pre><code class="css">
tantek@1903 1161 @viewport {
tantek@1903 1162 width: 100px;
tantek@1903 1163 height: 100px;
tantek@1903 1164 overflow: hidden;
tantek@1903 1165 resize: none
tantek@1903 1166 } /* display content in a non-resizable 100px by 100px window */
tantek@1903 1167 </code></pre>
tantek@1903 1168 -->
tantek@1903 1169
tantek@1903 1170
tantek@2325 1171 <h3 id="text-overflow">
tantek@2325 1172 Overflow Ellipsis: the 'text-overflow' property</h3>
tantek@2325 1173
tantek@2325 1174 <table class="propdef" id="propdef-text-overflow"><tbody>
tantek@2325 1175 <tr><th>Name:</th>
tantek@2325 1176 <td><dfn>text-overflow</dfn></td></tr>
tantek@2325 1177 <tr><th>Value:</th>
tantek@3117 1178 <td> (
tantek@3117 1179 clip |
tantek@3117 1180 ellipsis |
tantek@3117 1181 <a class="noxref" href="http://www.w3.org/TR/CSS21/syndata.html#value-def-string">
tantek@3117 1182 <span class="value-inst-string">&lt;string&gt;</span></a>
tantek@3117 1183 ){1,2} |
tantek@3117 1184 inherit
tantek@3117 1185 </td></tr>
tantek@2325 1186 <tr><th>Initial:</th>
tantek@2325 1187 <td>clip</td></tr>
tantek@2325 1188 <tr><th>Applies to:</th>
tantek@2325 1189 <td>block containers</td></tr>
tantek@2325 1190 <tr><th>Inherited:</th>
tantek@2325 1191 <td>no</td></tr>
tantek@2325 1192 <tr><th>Percentages:</th>
tantek@2325 1193 <td>N/A</td></tr>
tantek@2325 1194 <tr><th>Media:</th>
tantek@2325 1195 <td>visual</td></tr>
tantek@2325 1196 <tr><th>Computed&nbsp;value:</th>
tantek@2325 1197 <td>as specified</td></tr>
dbaron@7401 1198 <tr><th>Animatable:</th>
dbaron@7401 1199 <td>no</td></tr>
tantek@2325 1200 </tbody></table>
tantek@2325 1201
tantek@2785 1202 <p>This property specifies rendering when inline content overflows
tantek@2785 1203 its block container element ("the block")
tantek@3117 1204 in its inline progression direction
tantek@2340 1205 that has <span class="property">'overflow'</span>
tantek@2340 1206 other than <span class="value">'visible'</span>.
tantek@2785 1207 Text can overflow for example when it is prevented from wrapping
tantek@2340 1208 (e.g. due to '<code>white-space:nowrap</code>'
tantek@2340 1209 or a single word is too long to fit).
tantek@2340 1210 Values have the following meanings:</p>
tantek@2325 1211
tantek@2325 1212 <dl>
tantek@2325 1213 <dt><dfn title="text-overflow:clip"><code>clip</code></dfn></dt>
tantek@2785 1214 <dd>Clip inline content that overflows. Characters may be only partially rendered.</dd>
tantek@2325 1215
tantek@2325 1216 <dt><dfn title="text-overflow:ellipsis"><code>ellipsis</code></dfn></dt>
tantek@2785 1217 <dd>
tantek@2785 1218 Render an ellipsis character (U+2026)
tantek@3117 1219 to represent clipped inline content.
tantek@2340 1220 Implementations may substitute a more language/script-appropriate
tantek@2785 1221 ellipsis character,
tantek@2785 1222 or three dots "..." if the ellipsis character is unavailable.
tantek@2785 1223 </dd>
tantek@3117 1224 <dt><dfn title="text-overflow:&lt;string&gt;">
tantek@3117 1225 <var>&lt;string&gt;</var></dfn></dt>
tantek@3117 1226 <dd>
tantek@3117 1227 Render the given string to represent clipped inline content.
tantek@3117 1228 The given string is treated as an independent paragraph
tantek@3117 1229 for bidi purposes.
tantek@3117 1230 </dd>
tantek@2325 1231 </dl>
tantek@2325 1232
tantek@3119 1233 <p class="note">
tantek@4243 1234 Note: The &lt;string&gt; value, and the 2-value syntax "{1,2}"
tantek@4243 1235 and functionality are all at risk.
tantek@3119 1236 </p>
tantek@3119 1237
tantek@2363 1238 <p>
tantek@4243 1239 The term "character" is used in this property definition
tantek@4243 1240 for better readability and means "grapheme cluster" [[!UAX29]]
tantek@4243 1241 for implementation purposes.
tantek@2363 1242 </p>
tantek@2363 1243
tantek@3117 1244 <p>
tantek@3117 1245 If there is one value,
tantek@3539 1246 it applies only to the end line edge.
tantek@3117 1247 If there are two values,
tantek@3519 1248 the first value applies to the left edge,
tantek@3519 1249 and the second value applies to the right edge.
tantek@3117 1250 </p>
tantek@3117 1251
tantek@3117 1252 <p>
tantek@3117 1253 For the ellipsis
tantek@3117 1254 and string values,
tantek@4226 1255 implementations must hide characters and
tantek@4226 1256 <a href="http://www.w3.org/TR/CSS21/visuren.html#inline-boxes">
tantek@4226 1257 atomic inline-level elements</a>
tantek@3117 1258 at the applicable edge(s) of the line as necessary to fit the ellipsis/string.
tantek@3117 1259 Place the ellipsis/string immediately adjacent
tantek@3117 1260 to the applicable edge(s) of the remaining inline content.
tantek@4226 1261 The first character or
tantek@4074 1262 <a href="http://www.w3.org/TR/CSS21/visuren.html#inline-boxes">
tantek@4074 1263 atomic inline-level element</a>
tantek@4226 1264 on a line
tantek@4226 1265 must be clipped rather than ellipsed.
tantek@3117 1266 </p>
tantek@3117 1267
tantek@2785 1268 <h4 class="no-num no-toc">ellipsing details</h4>
tantek@2785 1269 <ul>
tantek@2785 1270 <li>
tantek@3071 1271 Ellipsing only affects rendering and must not affect layout
tantek@3071 1272 nor dispatching of pointer events.
tantek@2785 1273 </li>
tantek@2785 1274 <li>
tantek@2803 1275 The ellipsis is styled and baseline-aligned according to
tantek@2803 1276 the block.
tantek@2785 1277 </li>
tantek@2785 1278 <li>
tantek@2803 1279 Ellipsing occurs after relative positioning and other graphical transformations.
tantek@2785 1280 </li>
tantek@2803 1281 <li>
tantek@2803 1282 If there is insufficient space for the ellipsis, then clip the rendering of the ellipsis itself (on the same side that neutral characters on the line would have otherwise been clipped with the ''clip'' value).
tantek@2803 1283 </li>
tantek@7312 1284 </ul>
tantek@7312 1285 <h4 class="no-num no-toc">user interaction with ellipsis</h4>
tantek@7312 1286 <ul>
tantek@3117 1287 <li>When the user is interacting with content (e.g. editing, selecting, scrolling), the user agent may treat text-overflow ''ellipsis'' or string values as ''clip''.
tantek@2785 1288 </li>
tantek@7353 1289 <li>Selecting the ellipsis should select the ellipsed text.
tantek@7353 1290 If all of the ellipsed text is selected,
tantek@7353 1291 UAs should show selection of the ellipsis.
tantek@7353 1292 Behavior of partially-selected ellipsed text is up to the UA.
tantek@7312 1293 </li>
tantek@2785 1294 </ul>
tantek@2785 1295
tantek@2337 1296 <div class="example"><p style="display:none">Example(s):</p>
tantek@2337 1297 <h4 class="no-num no-toc">text-overflow examples</h4>
tantek@2373 1298 <p>These examples demonstrate setting the text-overflow of a block container element that has text which overflows its dimensions:
tantek@2337 1299 </p>
tantek@2337 1300 <h5 class="no-num no-toc">sample CSS for a div:</h5>
tantek@2785 1301 <pre><code class="css">div {
tantek@7312 1302 font-family:Helvetica,sans-serif; line-height:1.1;
tantek@7312 1303 width:3.1em; padding:.2em; border:solid .1em black; margin:1em 0;
tantek@2785 1304 }</code></pre>
tantek@2337 1305 <h5 class="no-num no-toc">sample HTML fragments, renderings, and your browser:</h5>
tantek@2787 1306 <table border="1" cellpadding="5" style="color:#000;background:#fff;"><tbody>
tantek@2337 1307 <tr><th>HTML</th><th>sample rendering</th><th>your browser</th></tr>
tantek@2337 1308 <tr>
tantek@2337 1309 <td><pre><code>&lt;div&gt;
tantek@7312 1310 CSS IS AWESOME, YES
tantek@2337 1311 &lt;/div&gt;
tantek@2337 1312 </code></pre></td>
tantek@2337 1313
tantek@2337 1314
tantek@2337 1315 <td>
tantek@2337 1316 <object type="image/png" data="cssisawesome.png">
tantek@2337 1317 First, a box with text drawing outside of it.
tantek@2337 1318 </object>
tantek@2337 1319 </td>
tantek@2337 1320
tantek@2337 1321 <td>
tantek@7312 1322 <div style="width:3.1em; border:solid .1em black; margin:1em 0; padding:.2em; font-family:Helvetica,sans-serif; line-height:1.1;">CSS IS AWESOME, YES</div>
tantek@2337 1323 </td>
tantek@2337 1324 </tr>
tantek@2337 1325
tantek@2337 1326 <tr>
tantek@2337 1327 <td><pre><code>&lt;div style="<strong>text-overflow:clip;</strong> overflow:hidden"&gt;
tantek@7312 1328 CSS IS AWESOME, YES
tantek@2337 1329 &lt;/div&gt;
tantek@2337 1330 </code></pre></td>
tantek@2337 1331
tantek@2337 1332 <td>
tantek@2337 1333 <object type="image/png" data="cssisaweso.png">
tantek@2337 1334 Second, a similar box with the text clipped outside the box.
tantek@2337 1335 </object></td>
tantek@2337 1336
tantek@2337 1337 <td>
tantek@7312 1338 <div style="width:3.1em; border:solid .1em black; margin:1em 0; padding:.2em; font-family:Helvetica,sans-serif; line-height:1.1; overflow:hidden;text-overflow:clip;">CSS IS AWESOME, YES</div>
tantek@2337 1339 </td>
tantek@2337 1340 </tr>
tantek@2337 1341
tantek@2337 1342 <tr>
tantek@2337 1343 <td><pre><code>&lt;div style="<strong>text-overflow:ellipsis;</strong> overflow:hidden"&gt;
tantek@7312 1344 CSS IS AWESOME, YES
tantek@2337 1345 &lt;/div&gt;
tantek@2337 1346 </code></pre></td>
tantek@2337 1347
tantek@2337 1348 <td>
tantek@2337 1349 <object type="image/png" data="cssisaw.png">
tantek@2337 1350 Third, a similar box with an ellipsis representing the clipped text.
tantek@2337 1351 </object>
tantek@2337 1352 </td>
tantek@2337 1353
tantek@2337 1354 <td>
tantek@7312 1355 <div style="width:3.1em; border:solid .1em black; margin:1em 0; padding:.2em; font-family:Helvetica,sans-serif; line-height:1.1; overflow:hidden;text-overflow:ellipsis;">CSS IS AWESOME, YES</div>
tantek@2337 1356 </td>
tantek@2337 1357 </tr>
tantek@2373 1358
tantek@2373 1359
tantek@2373 1360 <tr>
tantek@2373 1361 <td><pre><code>&lt;div style="<strong>text-overflow:ellipsis;</strong> overflow:hidden"&gt;
tantek@2373 1362 NESTED
tantek@2373 1363 &lt;p&gt;PARAGRAPH&lt;/p&gt;
tantek@2373 1364 WON'T ELLIPSE.
tantek@2373 1365 &lt;/div&gt;
tantek@2373 1366 </code></pre></td>
tantek@2373 1367
tantek@2373 1368 <td>
tantek@2373 1369 <object type="image/png" data="nes.png">
tantek@2373 1370 Fourth, a box with a nested paragraph demonstrating anonymous block boxes equivalency and non-inheritance into a nested element.
tantek@2373 1371 </object>
tantek@2373 1372 </td>
tantek@2373 1373
tantek@2373 1374 <td>
tantek@7312 1375 <div style="width:3.1em; border:solid .1em black; margin:1em 0; padding:.2em; font-family:Helvetica,sans-serif; line-height:1.1; overflow:hidden;text-overflow:ellipsis;">NESTED
tantek@2373 1376 <p>PARAGRAPH</p>
tantek@2373 1377 WON'T ELLIPSE.</div>
tantek@2373 1378 </td>
tantek@2373 1379
tantek@2373 1380 </tr>
tantek@2337 1381 </tbody></table>
tantek@2337 1382
tantek@2337 1383 </div>
tantek@2337 1384
tantek@2785 1385 <p class="note">
tantek@2785 1386 Note: the side of the line that the ellipsis is placed depends on the 'direction' of the block. E.g. an overflow hidden right-to-left (<code>direction:rtl</code>) block clips inline content on the <em>left</em> side, thus would place a text-overflow ellipsis on the <em>left</em> to represent that clipped content.
tantek@2785 1387 </p>
tantek@2785 1388
tantek@2785 1389 <!-- insert RTL example diagram here to illustrate note. -->
tantek@2785 1390
tantek@2383 1391 <h4 class="no-num no-toc">ellipsis interaction with scrolling interfaces</h4>
tantek@2383 1392
tantek@2383 1393 <p>
tantek@3117 1394 This section applies to elements with text-overflow other than 'clip'
tantek@3117 1395 (non-clip text-overflow)
tantek@2383 1396 and overflow:scroll.
tantek@2383 1397 </p>
tantek@2383 1398
tantek@2383 1399 <p>
tantek@3117 1400 When an element with non-clip text-overflow has overflow of scroll
tantek@2785 1401 in the inline progression dimension of the text, and the browser
tantek@2383 1402 provides a mechanism for scrolling (e.g. a scrollbar on the element,
tantek@2383 1403 or a touch interface to swipe-scroll, etc.), there are
tantek@2785 1404 additional implementation details that provide a better user experience:
tantek@2383 1405 </p>
tantek@2383 1406
tantek@2383 1407 <p>
tantek@4114 1408 When an element is scrolled (e.g. by the user, DOM manipulation,
tantek@4114 1409 or <a href="http://www.w3.org/TR/2008/CR-css3-marquee-20081205/#overflow-style">'overflow-style'</a> [[CSS3MARQUEE]]),
tantek@2785 1410 more of the element's content is shown.
tantek@2785 1411 The value of text-overflow should not affect whether more of
tantek@3117 1412 the element's content is shown or not. If a non-clip text-overflow
tantek@2785 1413 is set, then as more content is scrolled into view,
tantek@2785 1414 implementations should show whatever
tantek@2383 1415 additional content fits, only truncating content which would
tantek@3117 1416 otherwise be clipped
tantek@3117 1417 (or is necessary to make room for the ellipsis/string),
tantek@2785 1418 until the element is scrolled far enough to
tantek@2785 1419 display the edge of the content
tantek@2785 1420 at which point that content should be displayed
tantek@3117 1421 rather than an ellipsis/string.
tantek@2383 1422 </p>
tantek@2383 1423 <p>
tantek@2785 1424 As some content is scrolled into view, it is likely that
tantek@2785 1425 other content may scroll out of view on the other side.
tantek@2785 1426 If that content's block container element is the same
tantek@2785 1427 that's doing the scrolling,
tantek@3117 1428 then implementations should render an ellipsis/string in place of
tantek@2785 1429 the clipped content,
tantek@2383 1430 with the same details as described in the value definition above,
tantek@3117 1431 except that the ellipsis/string is drawn in the start
tantek@3117 1432 (rather than end) of
tantek@2785 1433 the block's direction (per the direction property).
tantek@2785 1434 </p>
tantek@2785 1435 <p>
tantek@3117 1436 While the content is being scrolled, implementations may adjust their rendering of ellipses/strings
tantek@3117 1437 (e.g. align to the box edges rather than line edges).
tantek@2803 1438 </p>
tantek@2803 1439 <p>
tantek@3117 1440 If there is insufficient space for both start
tantek@3117 1441 and end ellipses/strings,
tantek@3117 1442 then only the end ellipsis/string should be rendered.
tantek@2383 1443 </p>
tantek@2383 1444
tantek@2325 1445
tantek@1965 1446 <h2>Pointing Devices and Keyboards</h2>
tantek@1903 1447
tantek@1965 1448 <h3>Pointer interaction</h3>
tantek@1965 1449
tantek@1965 1450 <h4 id="cursor"><span class="property">'cursor'</span> property</h4>
tantek@1903 1451 <table class="propdef" id="propdef-cursor"><tbody>
tantek@2325 1452 <tr><th>Name:</th><td><dfn>cursor</dfn></td></tr>
tantek@2325 1453 <tr><th>Value:</th><td>
tantek@1903 1454 [ [&lt;uri&gt; [&lt;x&gt; &lt;y&gt;]?,]* <br>
tantek@1903 1455 [ auto | default | none |<br>
tantek@1903 1456 context-menu | help | pointer | progress | wait | <br>
tantek@1903 1457 cell | crosshair | text | vertical-text | <br>
tantek@1903 1458 alias | copy | move | no-drop | not-allowed | <br>
tantek@1903 1459 e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize |
tantek@1903 1460 ew-resize | ns-resize | nesw-resize | nwse-resize |
tantek@1903 1461 col-resize | row-resize |
tantek@2432 1462 all-scroll
tantek@2432 1463 | zoom-in | zoom-out
tantek@2432 1464 <br>
tantek@1903 1465 ] ] | inherit </td></tr>
tantek@2325 1466 <tr><th>Initial:</th><td>auto</td></tr>
tantek@2325 1467 <tr><th>Applies to:</th><td>all elements</td></tr>
tantek@2325 1468 <tr><th>Inherited:</th><td>yes</td></tr>
tantek@2325 1469 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 1470 <tr><th>Media:</th><td>visual, interactive</td></tr>
tantek@3733 1471 <tr><th>Computed&nbsp;value:</th><td>as specified, except with any relative URLs converted to absolute</td></tr>
dbaron@7401 1472 <tr><th>Animatable:</th><td>no</td></tr>
tantek@1903 1473 </tbody></table>
tantek@1903 1474
tantek@1964 1475 <p>This property specifies the type of cursor to be displayed for the pointing device when over the element's border, padding, and content. Values have the following meanings:
tantek@1964 1476 </p>
tantek@1964 1477
tantek@1903 1478 <h5 class="no-num no-toc">image cursors</h5>
tantek@1903 1479 <dl>
tantek@3117 1480 <dt>&lt;uri&gt;</dt>
tantek@1903 1481 <dd>The user agent retrieves the cursor from the resource
tantek@1903 1482 designated by the URI. If the user agent cannot handle
tantek@1903 1483 the first cursor of a list of cursors, it must attempt
tantek@1903 1484 to handle the second, etc. If the user agent cannot handle
tantek@1903 1485 any user-defined cursor, it must use the cursor keyword
tantek@1903 1486 at the end of the list. The optional &lt;x&gt; and &lt;y&gt; coordinates
tantek@1903 1487 identify the exact position within the image which is the pointer position (i.e., the hotspot).
tantek@1903 1488 </dd>
tantek@3117 1489 <dt>&lt;x&gt;</dt>
tantek@3117 1490 <dt>&lt;y&gt;</dt>
tantek@1903 1491 <dd>
tantek@1903 1492 Each is a &lt;number&gt;. The x-coordinate and y-coordinate of the position in the cursor's coordinate system (left/top relative) which represents the precise position that is being pointed to.
tantek@1903 1493 If the values are unspecified, then the intrinsic hotspot defined inside the image resource itself is used. If both the values are unspecific and the referenced cursor has no defined hotspot, the effect is as if a value of "0 0" were specified.
tantek@1903 1494 </dd>
tantek@1903 1495 </dl>
tantek@1903 1496
tantek@1903 1497 <h5 class="no-num no-toc">general purpose cursors</h5>
tantek@1903 1498 <dl>
tantek@3117 1499 <dt style="cursor:auto">auto</dt>
tantek@1903 1500 <dd>The UA determines the cursor to display based on the current
tantek@1903 1501 context.
tantek@1903 1502 </dd>
tantek@3117 1503 <dt style="cursor:default">default</dt>
tantek@1903 1504 <dd>The platform-dependent default cursor. Often rendered as an arrow.
tantek@1903 1505 </dd>
tantek@3117 1506 <dt style="cursor:none">none</dt>
tantek@1903 1507 <dd>No cursor is rendered for the element.</dd>
tantek@1903 1508 </dl>
tantek@1903 1509
tantek@1903 1510 <h5 class="no-num no-toc">links and status cursors</h5>
tantek@1903 1511 <dl>
tantek@3117 1512 <dt style="cursor:context-menu">context-menu</dt>
tantek@1903 1513 <dd>A context menu is available for the object under the cursor. Often rendered as an arrow with a small menu-like graphic next to it.</dd>
tantek@3117 1514 <dt style="cursor:help">help</dt>
tantek@1903 1515 <dd>Help is available for the object under the cursor. Often rendered
tantek@1903 1516 as a question mark or a balloon.
tantek@1903 1517 </dd>
tantek@3117 1518 <dt style="cursor:pointer">pointer</dt>
tantek@1903 1519 <dd>The cursor is a pointer that indicates a link.
tantek@1903 1520 </dd>
tantek@3117 1521 <dt style="cursor:progress">progress</dt>
tantek@1903 1522 <dd>A progress indicator. The program is performing some processing,
tantek@1903 1523 but is different from '<span class="value">wait</span>' in that the user may still interact
tantek@1903 1524 with the program. Often rendered as a spinning beach ball,
tantek@1903 1525 or an arrow with a watch or hourglass.</dd>
tantek@3117 1526 <dt style="cursor:wait">wait</dt>
tantek@1903 1527 <dd>Indicates that the program is busy and the user should
tantek@1903 1528 wait. Often rendered as a watch or hourglass.
tantek@1903 1529 </dd>
tantek@1903 1530 </dl>
tantek@1903 1531
tantek@1903 1532 <h5 class="no-num no-toc">selection cursors</h5>
tantek@1903 1533 <dl>
tantek@3117 1534 <dt style="cursor:cell">cell</dt>
tantek@1903 1535 <dd>Indicates that a cell or set of cells may be selected. Often rendered as a thick plus-sign with a dot in the middle.</dd>
tantek@3117 1536 <dt style="cursor:crosshair">crosshair</dt>
tantek@1903 1537 <dd>A simple crosshair (e.g., short line segments resembling a "+" sign). Often used to indicate a two dimensional bitmap selection mode.
tantek@1903 1538 </dd>
tantek@3117 1539 <dt style="cursor:text">text</dt>
tantek@1903 1540 <dd>Indicates text that may be selected. Often rendered as a vertical I-beam.
tantek@1903 1541 User agents may automatically display a horizontal I-beam/cursor (e.g. same as the '<span class="value">vertical-text</span>' keyword) for vertical text, or for that matter, any angle of I-beam/cursor for text that is rendered at any particular angle.
tantek@1903 1542 </dd>
tantek@3117 1543 <dt style="cursor:vertical-text">vertical-text</dt>
tantek@1903 1544 <dd>Indicates vertical-text that may be selected. Often rendered as a horizontal I-beam.</dd>
tantek@1903 1545 </dl>
tantek@1903 1546
tantek@1903 1547 <h5 class="no-num no-toc">drag and drop cursors</h5>
tantek@1903 1548 <dl>
tantek@3117 1549 <dt style="cursor:alias">alias</dt>
tantek@1903 1550 <dd>Indicates an alias of/shortcut to something is to be created. Often rendered as an arrow with a small curved arrow next to it.</dd>
tantek@1903 1551
tantek@3117 1552 <dt style="cursor:copy">copy</dt>
tantek@1903 1553 <dd>Indicates something is to be copied. Often rendered as an arrow with a small plus sign next to it.</dd>
tantek@1903 1554
tantek@3117 1555 <dt style="cursor:move">move</dt>
tantek@1903 1556 <dd>Indicates something is to be moved.
tantek@1903 1557 </dd>
tantek@3117 1558 <dt style="cursor:no-drop">no-drop</dt>
tantek@1903 1559 <dd>
tantek@1903 1560 Indicates that the dragged item cannot be dropped at the current cursor location. Often rendered as a hand or pointer with a small circle with a line through it.
tantek@1903 1561 </dd>
tantek@3117 1562 <dt style="cursor:not-allowed">not-allowed</dt>
tantek@1903 1563 <dd>Indicates that the requested action will not be carried out.
tantek@1903 1564 Often rendered as a circle with a line through it.
tantek@1903 1565 </dd>
tantek@1903 1566 </dl>
tantek@1903 1567
tantek@1903 1568 <h5 class="no-num no-toc">resizing and scrolling cursors</h5>
tantek@1903 1569 <dl>
tantek@3117 1570 <dt>
tantek@1903 1571 <span style="cursor:e-resize">e-resize</span>,
tantek@1903 1572 <span style="cursor:n-resize">n-resize</span>,
tantek@1903 1573 <span style="cursor:ne-resize">ne-resize</span>,
tantek@1903 1574 <span style="cursor:nw-resize">nw-resize</span>,
tantek@1903 1575 <span style="cursor:s-resize">s-resize</span>,
tantek@1903 1576 <span style="cursor:se-resize">se-resize</span>,
tantek@1903 1577 <span style="cursor:sw-resize">sw-resize</span>,
tantek@1903 1578 <span style="cursor:w-resize">w-resize</span>
tantek@1903 1579 </dt>
tantek@1903 1580 <dd>Indicates that some edge is to be moved. For example, the
tantek@1903 1581 'se-resize' cursor is used when the movement starts from the
tantek@1903 1582 south-east corner of the box.
tantek@1903 1583 </dd>
tantek@3117 1584 <dt>
tantek@1903 1585 <span style="cursor:ew-resize">ew-resize</span>,
tantek@1903 1586 <span style="cursor:ns-resize">ns-resize</span>,
tantek@1903 1587 <span style="cursor:nesw-resize">nesw-resize</span>,
tantek@1903 1588 <span style="cursor:nwse-resize">nwse-resize</span>
tantek@3117 1589 </dt>
tantek@1903 1590 <dd>Indicates a bidirectional resize cursor.</dd>
tantek@3117 1591 <dt style="cursor:col-resize">col-resize</dt>
tantek@1903 1592 <dd>Indicates that the item/column can be resized horizontally.
tantek@1903 1593 Often rendered as arrows pointing left and right with a vertical bar separating them.</dd>
tantek@3117 1594 <dt style="cursor:row-resize">row-resize</dt>
tantek@1903 1595 <dd>Indicates that the item/row can be resized vertically. Often rendered as arrows pointing up and down with a horizontal bar separating them.
tantek@1903 1596 </dd>
tantek@3117 1597 <dt style="cursor:all-scroll">all-scroll</dt>
tantek@1903 1598 <dd>Indicates that the something can be scrolled in any direction.
tantek@1903 1599 Often rendered as arrows pointing up, down, left, and right with a dot in the middle.
tantek@1903 1600 </dd>
tantek@1903 1601 </dl>
tantek@2432 1602
tantek@2432 1603 <h5 class="no-num no-toc">zooming cursors</h5>
tantek@2432 1604 <dl>
tantek@3117 1605 <dt>
tantek@4246 1606 <span style="cursor:zoom-in"> zoom-in</span>,
tantek@4246 1607 <span style="cursor:zoom-out"> zoom-out</span>
tantek@2432 1608 </dt>
tantek@2438 1609 <dd>
tantek@2438 1610 Indicates that something can be zoomed (magnified) in or out, and
tantek@2438 1611 often rendered as a magnifying glass with a "+" or "-" in the center of the glass, for 'zoom-in' and 'zoom-out' respectively.
tantek@2438 1612 </dd>
tantek@2432 1613 </dl>
tantek@2432 1614
tantek@1903 1615 <p>The UA may treat unsupported values as '<span class="value">auto</span>'. E.g. on platforms that do not have a concept of a '<span class="value">context-menu</span>' cursor, the UA may render '<span class="value">default</span>' or whatever is appropriate.
tantek@1903 1616 </p>
tantek@1903 1617
tantek@1903 1618 <div class="example">
tantek@1965 1619 <h5 class="no-num no-toc">Example: cursor fallback</h5>
tantek@1903 1620 <p>Here is an example of using several cursor values.</p>
tantek@1903 1621 <pre><code class="css">
tantek@1903 1622 :link,:visited {
tantek@1903 1623 cursor: url(example.svg#linkcursor),
tantek@1903 1624 url(hyper.cur),
tantek@1903 1625 url(hyper.png) 2 3,
tantek@1903 1626 pointer
tantek@1903 1627 }
tantek@1903 1628 </code></pre>
tantek@1903 1629 <p>This example sets the cursor on all hyperlinks (whether visited or not)
tantek@1903 1630 to an external <a href="http://www.w3.org/TR/SVG/interact.html#CursorElement">SVG cursor</a> ([[SVG10]], section 16.8.3).
tantek@1903 1631 User agents that don't support SVG cursors would simply skip to the
tantek@1903 1632 next value and attempt to use the "hyper.cur" cursor.
tantek@1903 1633 If that cursor format was also not supported, the UA could attempt to use the "hyper.png" cursor with the explicit hot spot. Finally if the UA does not support any of those image cursor formats, the UA would skip to the last value
tantek@1903 1634 and simply render the '<span class="value">pointer</span>' cursor.
tantek@1903 1635 </p>
tantek@1903 1636 </div>
tantek@1903 1637
tantek@1903 1638
tantek@1965 1639
tantek@1903 1640 <h3 id="keyboard">Keyboard control</h3>
tantek@1903 1641
tantek@1903 1642 <h4 id="nav-index">Sequential navigation order: the <span class="property">'nav-index'</span> property</h4>
tantek@1903 1643 <p>The <span class="property">'nav-index'</span> property is an input-method-neutral way of specifying the sequential navigation order (also known as "tabbing order").
tantek@1903 1644 </p>
tantek@1903 1645 <table class="propdef" id="propdef-nav-index">
tantek@2325 1646 <tr><th>Name:</th><td><dfn>nav-index</dfn></td></tr>
tantek@2325 1647 <tr><th>Value: </th><td>auto | &lt;number&gt; | inherit</td></tr>
tantek@2325 1648 <tr><th>Initial:</th><td>auto</td></tr>
tantek@2325 1649 <tr><th>Applies to:</th><td>all enabled elements</td></tr>
tantek@2325 1650 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 1651 <tr><th>Percentages:</th><td>n/a</td></tr>
tantek@2325 1652 <tr><th>Media:</th><td>interactive</td></tr>
tantek@2325 1653 <tr><th>Computed&nbsp;value:</th><td>specified value.</td></tr>
dbaron@7401 1654 <tr><th>Animatable:</th><td>as <a href="http://dev.w3.org/csswg/css3-transitions/#animtype-number">number</a></td></tr>
tantek@1903 1655 </table>
tantek@1903 1656 <dl>
tantek@1903 1657 <dt>auto</dt>
tantek@1903 1658 <dd>The element's sequential navigation order is assigned automatically by the user agent.</dd>
tantek@1903 1659 <dt>&lt;number&gt;</dt>
tantek@1903 1660 <dd>The number (which is non-zero and positive) indicates the sequential
tantek@1903 1661 navigation order for the element. '<span class="value">1</span>' means first. Elements with the same
tantek@1903 1662 nav-index value are navigated in document order when that nav-index value is being navigated.
tantek@1903 1663 </dd>
tantek@1903 1664 </dl>
tantek@1903 1665
tantek@1903 1666 <p>This property is a replacement for the HTML4/XHTML1 attribute '<a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.11.1">tabindex</a>' ([[HTML401]], section 17.11.1). Borrowed and slightly rephrased from the HTML4 Recommendation:
tantek@1903 1667 </p>
tantek@1903 1668 <p>
tantek@1903 1669 This property specifies the position of the current element in the sequential navigation order for the current document.
tantek@1903 1670 </p>
tantek@1903 1671 <p>
tantek@1903 1672 The sequential navigation order defines the order in which elements will receive focus when navigated by the user via the keyboard. The sequential navigation order may include elements nested within other elements.
tantek@1903 1673 </p>
tantek@1903 1674 <p>
tantek@1903 1675 Elements that may receive focus should be navigated by user agents according to the following rules:
tantek@1903 1676 </p>
tantek@1903 1677 <ol>
tantek@1903 1678 <li>Those elements that support the nav-index property and assign a
tantek@1903 1679 positive value to it are navigated first. Navigation proceeds from
tantek@1903 1680 the element with the lowest nav-index value to the element with the
tantek@1903 1681 highest value. Values need not be sequential nor must they begin with
tantek@1903 1682 any particular value. Elements that have identical nav-index values
tantek@3987 1683 should be navigated in document order.</li>
tantek@1903 1684 <li>Those elements that do not support the nav-index property or
tantek@3987 1685 support it and assign it a value of '<span class="value">auto</span>' are navigated next. These elements are navigated in document
tantek@3987 1686 order.</li>
tantek@1903 1687 <li>Elements that are disabled do not participate in the sequential navigation order.</li>
tantek@1903 1688 </ol>
tantek@1903 1689 <p>
tantek@1903 1690 The actual key sequence that causes sequential navigation or element activation depends on the configuration of the user agent (e.g., the "tab" key is often used for sequential navigation, and the "enter" key is used to activate a selected element).
tantek@1903 1691 </p>
tantek@1903 1692 <p>
tantek@1903 1693 User agents may also define key sequences to navigate the sequential navigation order in reverse. When the end (or beginning) of the tabbing order is reached, user agents may circle back to the beginning (or end). The key combination "shift-tab" is often used for reverse sequential navigation.
tantek@1903 1694 </p>
tantek@1903 1695
tantek@4243 1696 <p class="note">
tantek@4243 1697 Note: The 'nav-index' property is at risk.
tantek@4243 1698 </p>
tantek@4243 1699
tantek@1903 1700 <h4 id="nav-dir">Directional focus navigation: the <span class="property">'nav-up'</span>, <span class="property">'nav-right'</span>, <span class="property">'nav-down'</span>, <span class="property">'nav-left'</span> properties</h4>
tantek@1903 1701 <table class="propdef"><tbody>
tantek@2325 1702 <tr><th>Name: </th><td><dfn>nav-up</dfn>, <dfn>nav-right</dfn>, <dfn>nav-down</dfn>, <dfn>nav-left</dfn></td></tr>
tantek@2325 1703 <tr><th>Value: </th><td>auto | &lt;id&gt; [ current | root | &lt;target-name&gt; ]? | inherit</td></tr>
tantek@2325 1704 <tr><th>Initial:</th><td>auto</td></tr>
tantek@2325 1705 <tr><th>Applies to:</th><td>all enabled elements</td></tr>
tantek@2325 1706 <tr><th>Inherited:</th><td>no</td></tr>
tantek@2325 1707 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@2325 1708 <tr><th>Media:</th><td>interactive</td></tr>
tantek@3733 1709 <tr><th>Computed&nbsp;value:</th><td>as specified</td></tr>
dbaron@7401 1710 <tr><th>Animatable:</th><td>no</td></tr>
tantek@1903 1711 </tbody></table>
tantek@1903 1712
tantek@1903 1713 <dl>
tantek@1903 1714 <dt>auto</dt>
tantek@1903 1715 <dd>The user agent automatically determines which element to navigate the focus to in response to directional navigational input.</dd>
tantek@1903 1716 <dt>&lt;id&gt;</dt>
tantek@1903 1717 <dd><p>The &lt;id&gt; value consists of a '<code>#</code>' character followed by an identifier, similar to a fragment identifier in a URL. It indicates the element to which the focus is navigated to in response to directional navigation input respective to the specific property.
tantek@1903 1718 </p>
tantek@1903 1719 <p>
tantek@1903 1720 If the &lt;id&gt; refers to the currently focused element, the directional navigation input respective to the nav- property is ignored &mdash; there is no need to refocus the same element.
tantek@1903 1721 </p>
tantek@1903 1722 </dd>
tantek@1903 1723 <dt>&lt;target-name&gt;</dt>
tantek@1903 1724 <dd>
tantek@1903 1725 The &lt;target-name&gt; parameter indicates the target frame for the focus navigation. It is a string and it cannot start with the underscore "_" character. If the specified target frame does not exist, the parameter will be treated as the keyword '<span class="value">current</span>', which means to simply use the frame that the element is in. The keyword '<span class="value">root</span>' indicates that the user agent should target the full window.
tantek@1903 1726 </dd>
tantek@1903 1727 </dl>
tantek@1903 1728
tantek@1903 1729 <p>User agents for devices with directional navigation keys respond by navigating the focus according to four respective nav-* directional navigation properties (nav-up, nav-right, nav-down, nav-left). This specification does not define which keys of a device are directional navigational keys.
tantek@1903 1730 </p>
tantek@1903 1731
tantek@1903 1732 <div class="note"><p>
tantek@1903 1733 <em><strong>Note.</strong>
tantek@1903 1734 Typical personal computers have keyboards with four arrow keys. One possible implementation would be to use those four arrow keys for directional navigation. For accessibility and user convenience, user agents should allow configuration of which keys on a keyboard are used for directional navigation.
tantek@1903 1735 </em></p>
tantek@1903 1736 </div>
tantek@1903 1737
tantek@1903 1738 <div class="example">
tantek@3117 1739 <h5 class="no-num no-toc">Example: positioned buttons</h5>
tantek@1903 1740 <p>Here is an example of buttons positioned in a diamond shape whose navigation order and directional focus navigation is set in such a way to navigate the focus clockwise (or counter-clockwise) around the diamond shape when the user chooses to navigate sequentially or directionally.</p>
tantek@1903 1741 <pre><code class="css">
tantek@1903 1742 button { position:absolute }
tantek@1903 1743
tantek@1903 1744 button#b1 {
tantek@1903 1745 top:0; left:50%;
tantek@1903 1746 nav-index:1;
tantek@1903 1747 nav-right:#b2; nav-left:#b4;
tantek@1903 1748 nav-down:#b2; nav-up:#b4;
tantek@1903 1749 }
tantek@1903 1750
tantek@1903 1751 button#b2 {
tantek@1903 1752 top:50%; left:100%;
tantek@1903 1753 nav-index:2;
tantek@1903 1754 nav-right:#b3; nav-left:#b1;
tantek@1903 1755 nav-down:#b3; nav-up:#b1;
tantek@1903 1756 }
tantek@1903 1757
tantek@1903 1758 button#b3 {
tantek@1903 1759 top:100%; left:50%;
tantek@1903 1760 nav-index:3;
tantek@1903 1761 nav-right:#b4; nav-left:#b2;
tantek@1903 1762 nav-down:#b4; nav-up:#b2;
tantek@1903 1763 }
tantek@1903 1764
tantek@1903 1765 button#b4 {
tantek@1903 1766 top:50%; left:0;
tantek@1903 1767 nav-index:4;
tantek@1903 1768 nav-right:#b1; nav-left:#b3;
tantek@1903 1769 nav-down:#b1; nav-up:#b3;
tantek@1903 1770 }
tantek@1903 1771 </code></pre>
tantek@1903 1772 <p>Whatever markup sequence the buttons may have (which is not specified in this example) is irrelevant in this case because they are positioned, and yet, it is still important to ensure focus navigation behaviors which relate reasonably to the specified layout.</p>
tantek@1903 1773 </div>
tantek@1903 1774
tantek@4243 1775 <p class="note">
tantek@4243 1776 Note: The 'nav-up', 'nav-right', 'nav-down', and 'nav-left' properties
tantek@4243 1777 are at risk.
tantek@4243 1778 </p>
tantek@4243 1779
tantek@4243 1780
tantek@3117 1781 <h4 id="input-method-editor">Input method editor: the <span class="property">'ime-mode'</span> property</h4>
tantek@3117 1782
tantek@3117 1783 <table class="propdef"><tbody>
tantek@3117 1784 <tr><th>Name: </th><td><dfn>ime-mode</dfn></td></tr>
tantek@3117 1785 <tr><th>Value: </th><td>auto | normal | active | inactive | disabled | inherit</td></tr>
tantek@3117 1786 <tr><th>Initial:</th><td>auto</td></tr>
tantek@3117 1787 <tr><th>Applies to:</th><td>text fields</td></tr>
tantek@3117 1788 <tr><th>Inherited:</th><td>no</td></tr>
tantek@3117 1789 <tr><th>Percentages:</th><td>N/A</td></tr>
tantek@3117 1790 <tr><th>Media:</th><td>interactive</td></tr>
tantek@3733 1791 <tr><th>Computed&nbsp;value:</th><td>as specified</td></tr>
dbaron@7401 1792 <tr><th>Animatable:</th><td>no</td></tr>
tantek@3117 1793 </tbody></table>
tantek@3117 1794
tantek@3117 1795 <p>
tantek@3117 1796 The 'ime-mode' CSS property controls
tantek@3117 1797 the state of the input method editor for text fields.
tantek@3117 1798 </p>
tantek@3117 1799
tantek@3117 1800 <dl>
tantek@3117 1801 <dt>auto</dt>
tantek@3117 1802 <dd>
tantek@3117 1803 No change is made to the current input method editor state. This is the default.
tantek@3117 1804 </dd>
tantek@3117 1805 <dt>normal</dt>
tantek@3117 1806 <dd>
tantek@3117 1807 The IME state should be normal; this value can be used in a user style sheet to override the page setting.
tantek@3117 1808 </dd>
tantek@3117 1809 <dt>active</dt>
tantek@3117 1810 <dd>
tantek@3117 1811 The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it.
tantek@3117 1812 </dd>
tantek@3117 1813 <dt>inactive</dt>
tantek@3117 1814 <dd>
tantek@3117 1815 The input method editor is initially inactive, but the user may activate it if they wish.
tantek@3117 1816 </dd>
tantek@3117 1817 <dt>disabled</dt>
tantek@3117 1818 <dd>
tantek@3117 1819 The input method editor is disabled and may not be activated by the user.
tantek@3117 1820 </dd>
tantek@3117 1821 </dl>
tantek@3117 1822
tantek@3117 1823 <div class="example">
tantek@3117 1824 <h5 class="no-num no-toc">Example: disabling input method support</h5>
tantek@3117 1825 <pre><code class="html">&lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;initial value&quot; style=&quot;ime-mode: disabled&quot;&gt;
tantek@3117 1826 </code></pre>
tantek@3117 1827 <p>
tantek@3117 1828 This example disables input method support for a field;
tantek@3117 1829 this might be necessary for fields that enter data
tantek@3117 1830 into a database that doesn't support extended character sets,
tantek@3117 1831 for example.
tantek@3117 1832 </p>
tantek@3117 1833 </div>
tantek@3117 1834
tantek@3117 1835 <div class="example">
tantek@3117 1836 <h5 class="no-num no-toc">Example: user preference</h5>
tantek@3117 1837 <pre><code class="css">input[type=password] {
tantek@3117 1838 ime-mode: auto&nbsp;!important;
tantek@3117 1839 }
tantek@3117 1840 </code></pre>
tantek@3117 1841 <p>
tantek@3117 1842 This example CSS may be placed into a user style sheet file to force password input fields to behave in a default manner.
tantek@3117 1843 </p>
tantek@3117 1844 </div>
tantek@3117 1845
tantek@3117 1846 <p class="note">
tantek@4243 1847 Note: In general, it's not appropriate for a public web site
tantek@4243 1848 to manipulate the IME mode setting.
tantek@4243 1849 This property should be used for web applications and the like.
tantek@4243 1850 Authors should not rely on disabling IME
tantek@4243 1851 to prevent extended characters from passing through a form.
tantek@4243 1852 Even with IME disabled, users can still paste extended characters
tantek@4243 1853 into a form's fields.
tantek@4243 1854 </p>
tantek@4243 1855
tantek@4243 1856 <p class="note">
tantek@4243 1857 Note: The 'ime-mode' property is at risk.
tantek@3117 1858 </p>
tantek@1903 1859
tantek@1903 1860 <hr title="Separator from footer">
tantek@1903 1861
tantek@1903 1862
tantek@1903 1863 <h2 class="no-num" id="acknowledgments">Appendix A. Acknowledgments</h2>
tantek@1903 1864
tantek@1903 1865 <p>This appendix is <em>informative</em>.</p>
tantek@1903 1866
tantek@1903 1867 <p>Thanks to feedback and contributions from
tantek@1903 1868 L. David Baron, Bert Bos, Matthew Brealey, Ada Chan, Michael Day, Micah Dubinko,
tantek@1903 1869 Elika E., Steve Falkenburg, Al Gilman, Ian Hickson, Bjoern Hoehrmann, David Hyatt, Richard Ishida, Sho Kuwamoto, Susan Lesch, Peter Linss,
tantek@1903 1870 Brad Pettit, Alexander Savenkov, Sebastian Schnitzenbaumer,
tantek@1903 1871 Etan Wexler, David Woolley and Domel.
tantek@1903 1872 </p>
tantek@1903 1873
tantek@1903 1874 <h2 class="no-num" id="references">Appendix B. Bibiliography</h2>
tantek@1903 1875
tantek@1903 1876 <h3 class="no-num no-toc">Normative References</h3>
tantek@1903 1877
tantek@1903 1878 <!--normative-->
tantek@1903 1879
tantek@1903 1880 <h3 class="no-num no-toc" id="informative-references">Informative References</h3>
tantek@1903 1881
tantek@1903 1882 <!--informative-->
tantek@1903 1883
tantek@1903 1884 <h2 class="no-num" id="changes">Appendix C. Changes</h2>
tantek@1903 1885
tantek@1903 1886 <p>This appendix is <em>informative</em>.</p>
tantek@1903 1887
tantek@4243 1888 <p>In general this draft contains numerous
tantek@4243 1889 editorial/grammatical/spelling corrections,
tantek@4243 1890 and several new informative examples.
tantek@4243 1891 This appendix describes minor functional changes from the
tantek@4243 1892 <a href="http://www.w3.org/TR/2004/CR-css3-ui-20040511/"
tantek@4243 1893 >Candidate Recommendation (CR) of 11 May 2004</a>
tantek@4243 1894 that were made to reflect implementer adoption (or lack thereof)
tantek@4243 1895 in the seven years since.
tantek@4243 1896 In particular, changes since the CR fall into one of
tantek@4243 1897 three categories:
tantek@1903 1898 </p>
tantek@1903 1899
tantek@1903 1900 <ul>
tantek@1965 1901 <li>Minor refinements to features based on implementation experience.
tantek@1965 1902 <!-- e.g. cursor applying to border, padding, content areas -->
tantek@1965 1903 </li>
tantek@4243 1904 <li>Dropping features that were not implemented,
tantek@4243 1905 or were insufficiently implemented to exit CR.</li>
tantek@4114 1906 <!-- e.g. System Appearance -->
tantek@4243 1907 <li>Adding a small number of new but already interoperably
tantek@4243 1908 implemented features.
tantek@4114 1909 <!-- e.g. text-overflow, ime-mode -->
tantek@1965 1910 </li>
tantek@1965 1911 </ul>
tantek@1965 1912
tantek@4114 1913 <h3 class="no-num" id="changes-list">List of substantial changes</h3>
tantek@1965 1914
tantek@1965 1915 <ul>
tantek@4114 1916 <li>System Appearance has been dropped,
tantek@4114 1917 including appearance values &amp; property,
tantek@4114 1918 and system fonts / extension of the 'font' property shorthand.
tantek@4114 1919 </li>
tantek@4114 1920
tantek@4243 1921 <li>The ::selection pseudo-element has been dropped since
tantek@4243 1922 it was dropped from Selectors after testing found
tantek@4243 1923 interoperability problems and further details to explore/define.
tantek@4243 1924 </li>
tantek@4243 1925
tantek@3117 1926 <li>'<span class="property">box-sizing</span>' property. Added 'padding-box' value.</li>
tantek@3117 1927
tantek@1965 1928 <li>'<span class="property">cursor</span>' property. Added detail about applying to the border, padding, and content areas of the element.</li>
tantek@1965 1929
tantek@3117 1930 <li>'<span class="property">ime-mode</span>' property - new!</li>
tantek@3117 1931
tantek@3117 1932 <li>'<span class="property">text-overflow</span>' property - new!</li>
tantek@3117 1933
tantek@1903 1934 </ul>
tantek@1903 1935
tantek@1903 1936
tantek@1903 1937
tantek@4114 1938 <h2 class="no-num">Appendix D. Default style sheet additions for HTML</h2>
tantek@1903 1939
tantek@1903 1940 <p>This appendix is <em>informative</em>.</p>
tantek@1903 1941
tantek@4114 1942 <p>Potential additions to the base style sheet to express HTML form controls, and a few dynamic presentation attributes:</p>
tantek@1903 1943
tantek@1903 1944 <pre class="html4ss">
tantek@1903 1945
tantek@1903 1946 :enabled:focus {
tantek@1903 1947 outline: 2px inset;
tantek@1903 1948 }
tantek@1903 1949
tantek@1903 1950 button,
tantek@1903 1951 input[type=button],
tantek@1903 1952 input[type=reset],
tantek@1903 1953 input[type=submit],
tantek@1903 1954 input[type=checkbox],
tantek@1903 1955 input[type=radio],
tantek@1903 1956 textarea,
tantek@1903 1957 input,
tantek@1903 1958 input[type=text],
tantek@1903 1959 input[type=hidden],
tantek@1903 1960 input[type=password],
tantek@1903 1961 input[type=image]
tantek@1903 1962 {
tantek@1903 1963 display: inline-block;
tantek@1903 1964 white-space: nowrap;
tantek@1903 1965 }
tantek@1903 1966
tantek@1903 1967 button
tantek@1903 1968 {
tantek@1903 1969 /* white space handling of BUTTON tags in particular */
tantek@1903 1970 white-space:normal;
tantek@1903 1971 }
tantek@1903 1972
tantek@1903 1973 input[type=reset]
tantek@1903 1974 {
tantek@1903 1975 /* default content of HTML4/XHTML1 input type=reset button */
tantek@1903 1976 content: "Reset";
tantek@1903 1977 }
tantek@1903 1978
tantek@1903 1979 input[type=submit]
tantek@1903 1980 {
tantek@1903 1981 /* default content of HTML4/XHTML1 input type=submit button */
tantek@1903 1982 content: "Submit";
tantek@1903 1983 }
tantek@1903 1984
tantek@1903 1985 input[type=button],
tantek@1903 1986 input[type=reset][value],
tantek@1903 1987 input[type=submit][value]
tantek@1903 1988 {
tantek@1903 1989 /* text content/labels of HTML4/XHTML1 "input" buttons */
tantek@1903 1990 content: attr(value);
tantek@1903 1991 }
tantek@1903 1992
tantek@1903 1993 textarea
tantek@1903 1994 {
tantek@1903 1995 /* white space handling of TEXTAREA tags in particular */
tantek@1903 1996 white-space:pre-wrap;
tantek@1903 1997 }
tantek@1903 1998
tantek@1903 1999 input[type=hidden]
tantek@1903 2000 {
tantek@1903 2001 /* appearance of the HTML4/XHTML1 hidden text field in particular */
tantek@1903 2002 display: none;
tantek@1903 2003 }
tantek@1903 2004
tantek@1903 2005 input[type=image]
tantek@1903 2006 {
tantek@1903 2007 display: inline-block;
tantek@1903 2008 content: attr(src,url);
tantek@1903 2009 border: none;
tantek@1903 2010 }
tantek@1903 2011
tantek@1903 2012 select[size]
tantek@1903 2013 {
tantek@1903 2014 /* HTML4/XHTML1 &lt;select&gt; w/ size more than 1 - appearance of list */
tantek@1903 2015 display: inline-block;
tantek@1903 2016 height: attr(size,em);
tantek@1903 2017 }
tantek@1903 2018
tantek@1903 2019 select,select[size=1]
tantek@1903 2020 {
tantek@1903 2021 /* HTML4/XHTML1 &lt;select&gt; without size, or size=1 - popup-menu */
tantek@1903 2022 display: inline-block;
tantek@1903 2023 height: 1em;
tantek@1903 2024 overflow: hidden;
tantek@1903 2025 }
tantek@1903 2026
tantek@1903 2027 select[size]:active
tantek@1903 2028 {
tantek@1903 2029 /* active HTML4/XHTML &lt;select&gt; w/ size more than 1 - appearance of active list */
tantek@1903 2030 display: inline-block;
tantek@1903 2031 }
tantek@1903 2032
tantek@1903 2033 optgroup,option
tantek@1903 2034 {
tantek@1903 2035 display: block;
tantek@1903 2036 white-space: nowrap;
tantek@1903 2037 }
tantek@1903 2038
tantek@1903 2039 optgroup[label],option[label]
tantek@1903 2040 {
tantek@1903 2041 content: attr(label);
tantek@1903 2042 }
tantek@1903 2043
tantek@1903 2044 option[selected]::before
tantek@1903 2045 {
tantek@1903 2046 display: inline;
tantek@1903 2047 content: check;
tantek@1903 2048 }
tantek@1903 2049
tantek@1903 2050 *[tabindex] { nav-index:attr(tabindex,number) }
tantek@1903 2051
tantek@1903 2052
tantek@1903 2053 /* Though FRAME resizing is not directly addressed by this specification,
tantek@1903 2054 the following rules may provide an approximation of reasonable behavior. */
tantek@1903 2055
tantek@1903 2056 /*
tantek@1903 2057
tantek@1903 2058 frame { resize:both }
tantek@1903 2059 frame[noresize] { resize:none }
tantek@1903 2060
tantek@1903 2061 */
tantek@1903 2062
tantek@1903 2063 </pre>
tantek@1903 2064
tantek@1903 2065
tantek@4114 2066 <h2 class="no-num">Appendix E: Test Suite</h2>
tantek@1903 2067
tantek@1903 2068 <p>This appendix is <em>informative</em>.</p>
tantek@1903 2069
tantek@1903 2070 <p>
tantek@1903 2071 This specification shall refer to a test suite written according to the <a href="http://www.w3.org/Style/CSS/Test/testsuitedocumentation">CSS Test Suite Documentation</a> and following the <a href="http://www.w3.org/Style/CSS/Test/guidelines.html">CSS2.1 Test Case Authoring Guidelines</a>. The test suite shall allow user agents to verify their basic conformance to the specification. This test suite does not pretend to be exhaustive and does not cover all possible combinations of user interface related features. These tests will be made available from the <a href="http://www.w3.org/Style/CSS/Test/">CSS Test Suites</a> home page.
tantek@1903 2072 </p>
tantek@1903 2073
tantek@4114 2074 <p>Related issue:
tantek@2270 2075 <a href="http://wiki.csswg.org/spec/css3-ui#issue-1">1</a>.
tantek@2270 2076 </p>
tantek@2270 2077
tantek@1903 2078
tantek@1903 2079 <h2 class="no-num">Index</h2>
tantek@1903 2080
tantek@1903 2081 <p>This appendix is <em>informative</em>.</p>
tantek@1903 2082
tantek@1903 2083 <!--index-->
tantek@1903 2084
tantek@1903 2085 <h2 class="no-num">Property index</h2>
tantek@1903 2086
tantek@1903 2087 <p>This appendix is <em>informative</em>.</p>
tantek@1903 2088
tantek@1903 2089 <!-- properties -->
tantek@1903 2090
tantek@1903 2091 </body>
tantek@1903 2092 </html>
tantek@1903 2093 <!-- Keep this comment at the end of the file
tantek@1903 2094 Local variables:
tantek@1903 2095 mode: sgml
tantek@1903 2096 sgml-declaration:"~/SGML/HTML4.decl"
tantek@1903 2097 sgml-default-doctype-name:"html"
tantek@1903 2098 sgml-minimize-attributes:t
tantek@1903 2099 sgml-nofill-elements:("pre" "style" "br")
tantek@1903 2100 sgml-live-element-indicator:t
tantek@1903 2101 End:
tantek@1903 2102 -->

mercurial