| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
| "http://www.w3.org/TR/html4/strict.dtd"> |
| <html lang="en"> |
| <head> |
| <meta http-equiv="Content-type" content="text/html; charset=utf-8"> |
| <title> |
| The 'pointer-events' property |
| </title> |
| <link href="CSSVisualEffects/base.css" rel="stylesheet" type="text/css"> |
| <style type="text/css"> |
| |
| @media print { |
| |
| /* the following doesn't work for now, |
| instead we rely on a patched version of html2ps which has this built-in */ |
| .dlink { display: none } |
| |
| /* the following doesn't work for now, |
| instead we rely on a patched version of html2ps which has this built-in */ |
| div.navbar { |
| display: none; |
| } |
| |
| html { margin: 0 !important } |
| body { font-family: serif } |
| th, td { font-family: inherit } |
| a { color: inherit !important } |
| div.example:before { font-family: serif !important } |
| pre.example:before { font-family: serif !important } |
| a:link, a:visited { text-decoration: none !important } |
| a:link:after, a:visited:after { /* create a cross-ref "see..." */ } |
| } |
| @page { |
| margin: 1.5cm 1.1cm; |
| } |
| |
| /* html body { margin-left: 8.5em } /* Overrides 70px in base.css */ |
| |
| body {counter-reset: exampleno figure} |
| |
| h2, h3, h5, h6 { margin-top: 2em } |
| h1, h2, h3, h4, h5, h6 { page-break-after: avoid; font-family: inherit } |
| div.figure, div.sidefigure, pre, table.propdef, table.propdef-extra, |
| div.example { page-break-inside: avoid } |
| dt { page-break-after: avoid } |
| |
| span.id {float: right; font-weight: bold} |
| |
| /* p, p.note + p, p.testlink + p, p.note, p.issue { */ |
| p, p.testlink + p, p.issue, p.mtb { |
| /* text-indent: 2em; */ |
| margin-bottom: 0.6em; |
| margin-top: 0.6em |
| } |
| p + p, p + div.sidefigure + p { |
| /* text-indent: 2em; */ |
| margin-top: 0 |
| } |
| dd p { |
| margin-top: 0 |
| } |
| |
| h1 + h2 { |
| margin-top: 0; |
| } |
| |
| pre { |
| text-align: left; /* fixes justification in Mac IE 5 */ |
| text-indent: 0; /* fixes indent in Mac Netscape 6 */ |
| margin-top: 1em; |
| margin-bottom: 1em; |
| font-size: 90% /*smaller*/; |
| } |
| /* |
| var { |
| font-style: normal; |
| } |
| */ |
| img { |
| border-style: none; |
| color: white; |
| } |
| .toc { |
| text-indent: 0; |
| } |
| |
| |
| @media all { /* NS < 6 doesn't like borders around inline elements... */ |
| |
| body { |
| line-height: 1.3; |
| } |
| |
| a:link, a:visited { |
| /* color: inherit;*/ |
| } |
| a.logo:link, a.logo:visited { |
| padding: 0; |
| border-style: none; |
| } |
| |
| /* Hmm, this seems to confuse many browsers... */ |
| dt { margin-left: 0; margin-top: 1em; color: #030; font-weight: bold;} |
| dd { margin-left: 2em } |
| dl, ul, ol { margin-left: 1em; padding-left: 0 } |
| li { margin-left: 2em; padding-left: 0 } |
| |
| } |
| ul.indexlist { margin-left: 0; /*column-width: 13em; columns: 13em*/ } |
| ul.indexlist li { margin-left: 0; list-style: none } |
| ul.indexlist li li { margin-left: 1em } |
| |
| div.example:before { |
| content: "Example"; |
| content: "Example " counter(exampleno, upper-roman); |
| font: bold small sans-serif; |
| /*float: left;*/ |
| position: absolute; |
| top: -0.6em; |
| left: -2.5em; |
| width: 7.5em; |
| text-align: center; |
| line-height: 1em; |
| color: #FFF8DD; |
| background: #600; |
| padding: 0.1em; |
| border: thin solid #999; |
| /*margin: -1.3em 0 0.3em -2.5em;*/ |
| } |
| div.example { |
| counter-increment: exampleno; |
| } |
| pre.example:before { |
| content: "Example"; |
| content: "Example " counter(exampleno, upper-roman); |
| font: bold small sans-serif; |
| /*float: left;*/ |
| position: absolute; |
| top: -0.6em; |
| left: -2.5em; |
| width: 7.5em; |
| text-align: center; |
| line-height: 1em; |
| color: #FFF8DD; |
| background: #600; |
| padding: 0.1em; |
| border: thin solid #999; |
| /*margin: -1.3em 0 0.3em -2.5em;*/ |
| } |
| pre.example { |
| counter-increment: exampleno; |
| } |
| div.example, div.illegal-example, div.html, div.illegal-html, div.xml, |
| div.illegal-xml, pre.example, pre.illegal-example, pre.html, |
| pre.illegal-html, pre.xml, pre.illegal-xml { |
| background: #FFF8DD; |
| padding: 0.5em; |
| margin: 1em 0; |
| border: thin solid #999; |
| position: relative; |
| } |
| pre.example, pre.illegal-example, pre.html, |
| pre.illegal-html, pre.xml, pre.illegal-xml { |
| padding-top: 1.5em; |
| } |
| div.example { color: #600 } |
| pre.example { color: #600 } |
| pre.illegal-example { color: red } |
| div.illegal-example { color: red } |
| div.illegal-example p { color: black } |
| |
| div.html { color: #600 } |
| pre.html { color: #600 } |
| pre.illegal-html { color: red } |
| div.illegal-html { color: red } |
| div.illegal-html p { color: black } |
| pre.deprecated-html { color: red } |
| div.deprecated-html { color: red } |
| div.deprecated-html p { color: black } |
| |
| div.xml { color: #600 } |
| pre.xml { color: #600 } |
| pre.illegal-xml { color: red } |
| div.illegal-xml { color: red } |
| div.illegal-xml p { color: black } |
| |
| code { font-size: 90% } |
| .css { color: #800 } /* inline CSS code (SPAN/CODE) */ |
| code.css { font-family: inherit; font-size: 100% } |
| code.html { color: #600 } /* inline HTML */ |
| code.xml { color: #600 } /* inline XML */ |
| .property { } /* name of a CSS property (SPAN) */ |
| .prop-name { color: #2A2AA5; font-weight: bold; font-size: 90%} /* name of a CSS property (SPAN) */ |
| .prop-value { font-weight: bold; font-size: 90%} /* CSS property value (SPAN) */ |
| .descriptor { } /* name of a CSS descriptor (SPAN) */ |
| .issue { color: #c00 } /* editorial remark, open issue */ |
| .type { font-style: italic } /* A <type> value for a property */ |
| |
| dfn { font-weight: bolder; /*font-size: 1em*/ } |
| |
| /* Class note is a non-normative note. May be inline or a P or DIV */ |
| .note { |
| /* font-weight: bold; */ |
| background-color: #cfc; |
| margin-top: 2em; |
| padding: 1em; |
| border: 1px solid #6a6; |
| border-left: 8px solid #6a6; |
| } |
| p.note, div.note { |
| /* margin: 1em 2em; */ |
| } |
| p.note:before, span.note:before { content: "\25B6" " " } |
| div.note > p:first-child:before { content: "\25B6" " " } |
| |
| .normref { color: red } |
| .informref { color: green } |
| |
| |
| /* ToC not indented, but font style shows hierarchy */ |
| ul.toc {margin: 1em 0; padding: 0; font-weight: bold} |
| ul.toc ul {margin: 0; padding: 0; font-weight: normal} |
| ul.toc ul ul {margin: 0 /*0 0 2em*/; font-style: italic} |
| ul.toc ul ul ul {margin: 0} |
| ul.toc li {margin: 0.6em 0; padding: 0} |
| ul.toc li li {margin: 0} |
| /* |
| ul.toc li li li, ul.toc li li li ul {margin-left: 0; display: inline} |
| ul.toc li li li ul, ul.toc li li li ul li {margin-left: 0; display: inline} |
| */ |
| |
| @media all { /* NS4 doesn't align the floats properly :-( */ |
| |
| /* Section numbers in a column of their own */ |
| ul.toc span.secno {margin-right: 1em} /* workaround for Opera6 */ |
| ul.toc span.secno {float: left; width: 4em; margin-left: -5em} |
| /*ul.toc span.secno {text-align: right}*/ |
| ul.toc li {clear: both} |
| ul.toc {margin-left: 5em} |
| /* If we had 'tab', floats would not be needed here: |
| ul.toc span.secno {tab: 5em right; margin-right: 1em} |
| ul.toc li {text-indent: 5em hanging} |
| The second line in case items wrap |
| */ |
| } |
| |
| ul.index { |
| list-style: disc; /* Mac NS has problem with 'none' */ |
| list-style: none; |
| } |
| |
| s, del {text-decoration: line-through; color: red} |
| u, ins {text-decoration: underline; background: #bfa} |
| |
| div.figure, div.sidefigure { |
| text-align: center; |
| margin: 2.5em 0; |
| } |
| div.sidefigure { |
| float: right; |
| width: 50%; |
| margin: 0 0 0.5em 0.5em |
| } |
| div.figure img, div.sidefigure img { |
| display: block; |
| margin: auto; |
| max-width: 100% |
| } |
| p.caption, caption { |
| text-align: center; |
| font-style: italic; |
| font-size: 90%; |
| margin: 1.5em 2em; |
| text-indent: 0; |
| } |
| p.caption:before { |
| content: "Figure " counter(figure) ". "; |
| font-weight: bold; |
| } |
| p.caption { |
| counter-increment: figure; |
| } |
| |
| /* DL list is indented, but figure inside it is not */ |
| dd { margin-left: 2em } |
| dd div.figure { margin-left: -2em } |
| |
| sup { |
| vertical-align: super; |
| font-size: 80% |
| } |
| |
| /* "Equations" (not real MathML, but simple HTML) are put in a |
| blockquote and may have an equation number. We make sure the |
| blockquote has enough margin on the right and then put the equation |
| number there. */ |
| |
| blockquote { |
| margin: 0.5em 4em 0.5em 2em; |
| text-indent: 0; |
| } |
| .eqno { |
| text-align: right; |
| float: right; |
| width: 3em; |
| margin: 0 -4em 0 0; |
| font-weight: bold; |
| /* background: silver; color: black; padding: 0.1em */ |
| } |
| |
| table.equiv-table { border-spacing: 0; margin: 0.5em 0 } |
| table.equiv-table th, table.equiv-table td { padding: 0.3em } |
| table.equiv-table th { text-align: left } |
| /* table.equiv-table th:first-child { text-align: right } */ |
| table.equiv-table td, table.equiv-table th { border-bottom: thin solid #666 } |
| table.equiv-table { border-bottom: hidden } |
| table.equiv-table { empty-cells: show } |
| table.equiv-table caption { margin: 0.5em 0 0 0 } |
| |
| /* Style for table of properties */ |
| table.proptable { |
| font-size: small; |
| border-collapse: collapse; |
| border-spacing: 0; |
| text-align: left; |
| margin: 1em 0; |
| } |
| |
| @media print { /* Use the wide margin in print */ |
| table.proptable {margin: 1em 0 1em -8.5em} |
| } |
| |
| table.proptable td, table.proptable th { |
| padding: 0.4em; |
| border-style: solid none none dotted; |
| border-width: thin; |
| border-color: red; |
| } |
| table.proptable th:first-child, table.proptable td:first-child { |
| border-left-style: none; |
| } |
| |
| |
| /* Style for table that defines a property or a descriptor */ |
| table.propdef, table.propdef-extra, table.descdef { |
| border-spacing: 0; |
| border-collapse: collapse; |
| width: 100%; |
| table-layout: fixed; |
| background: #DEF; |
| margin-top: 1.2em; |
| margin-bottom: 1.2em |
| } |
| table.propdef td, table.propdef-extra td, table.descdef td { |
| padding: 0 0.3em; |
| vertical-align: baseline; |
| } |
| /* |
| table.propdef dfn, table.propdef-extra dfn, table.descdef dfn { |
| font-weight: bold; |
| font-style: normal |
| } |
| */ |
| table.propdef td:first-child, |
| table.propdef-extra td:first-child, |
| table.descdef td:first-child { |
| font-style: italic; |
| width: 8.1em |
| } |
| table.propdef td[colspan]:first-child, |
| table.propdef-extra td[colspan]:first-child, |
| table.descdef td[colspan]:first-child { |
| font-style: inherit |
| } |
| table.propdef tr:first-child, |
| table.propdef-extra tr:first-child, |
| table.descdef tr:first-child { |
| background: #005A9C; |
| color: white |
| } |
| /* table.propdef tr:first-child td { padding-top: 0.1em; padding-bottom: 0.1em } */ |
| |
| /* This would replace :first-child for Opera, but it confuses WinIE :-( */ |
| /* |
| table.propdef td { width: 8em } |
| table.propdef td + td { width: auto } |
| table.propdef tr { background: #005A9C; color: white } |
| table.propdef tr + tr { background: transparent; color: black } |
| */ |
| |
| /* CSS modules typically don't use MUST, SHOULD etc. from RFC 2119, |
| or, if they do, they don't put them in uppercase. But the following |
| class is provided in case a spec wants to use RFC 2119 terms in |
| uppercase in the source. */ |
| |
| em.rfc2119 { |
| text-transform: lowercase; |
| font-variant: small-caps; |
| font-style: normal |
| } |
| |
| /* In Profile specs, a table of required features: */ |
| |
| table.features th { |
| background: #00589f; |
| color: #fff; |
| text-align: left; |
| padding: 0.2em 0.2em 0.2em 0.5em; |
| } |
| table.features td { |
| vertical-align: top; |
| border-bottom: 1px solid #ccc; |
| padding: 0.3em 0.3em 0.3em 0.7em; |
| } |
| |
| body { line-height: 1.4; } |
| |
| .issue, .todo { |
| //display: none; |
| margin: 1em; |
| border: 2px solid; |
| padding: 1em; |
| } |
| span.issue, span.todo { |
| border-width: 1px; |
| margin: 0; padding: 0; |
| } |
| .issue { border-color: red; } |
| .todo { border-color: yellow; } |
| .issue:before, .todo:before { |
| content: attr(class) ": "; |
| text-transform: uppercase; |
| font-weight: bold; |
| } |
| .issue { background: rgb(255,224,224); color: black; } |
| .todo { background: rgb(255,255,192); color: black; } |
| |
| .syntax { |
| padding: 1em; |
| margin: 1em 0; |
| border: 1px black solid; |
| background: rgb(224,224,255); |
| color: black; |
| } |
| .idl-code { |
| margin: 0; |
| font-family: monospace; |
| border: 1px solid black; |
| color: black; |
| background-color: #dfdfdf; |
| } |
| |
| table { |
| border-collapse: collapse; |
| } |
| |
| th { |
| background-color: #dfdfdf; |
| } |
| |
| td, th { |
| text-align: left; |
| padding: 0.2em 1em; |
| border: 1px solid black; |
| } |
| |
| </style> |
| </head> |
| <body> |
| <h1> |
| The 'pointer-events' property |
| </h1> |
| <h2> |
| 25 November 2008 |
| </h2> |
| <dl> |
| <dt> |
| Authors: |
| </dt> |
| <dd> |
| Dean Jackson (<a href="mailto:dino@apple.com">dino@apple.com</a>), <a href="http://www.apple.com/">Apple</a> |
| </dd> |
| </dl> |
| <hr> |
| |
| <!-- ======================================================================================================= --> |
| |
| <div class="note"> |
| <p> |
| NOTE: This document is a work-in-progress proposal. It should not be |
| considered complete, nor does it represent the position of Apple or |
| the WebKit project. |
| </p> |
| <p> |
| For reference: |
| </p> |
| <ul> |
| <li><a href="https://bugs.webkit.org/show_bug.cgi?id=11395">WebKit bug on implementation</a></li> |
| <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=380573">Mozilla bug on implementation</a></li> |
| </ul> |
| </div> |
| |
| <h2> |
| 1 Introduction |
| </h2> |
| |
| <p> |
| This document describes how the <a |
| href="http://www.w3.org/TR/SVG/interact.html#PointerEventsProperty">SVG |
| pointer-events property</a> is extended for use in (X)HTML content. |
| </p> |
| |
| <!-- ======================================================================================================= --> |
| |
| <h2> |
| 2 The <span class="prop-name">pointer-events</span> property |
| </h2> |
| |
| <p> |
| In different circumstances, authors may want to control under what |
| circumstances particular elements can become the target of pointer |
| events. For example, the author might want a given element to ignore |
| pointer events under all circumstances so that elements underneath the |
| given element will become the target of pointer events. |
| </p> |
| |
| <p> |
| The 'pointer-events' property specifies under what circumstances a given |
| element can be the target element for a pointer event. It |
| affects the circumstances under which the following are processed: |
| </p> |
| |
| <ul> |
| <li>user interface events such as mouse clicks</li> |
| <li>dynamic pseudo-classes (i.e., :hover, :active and :focus)</li> |
| <li>hyperlinks</li> |
| </ul> |
| |
| <p> |
| The <span class="prop-name">pointer-events</span> property was originally defined for <a |
| href="http://www.w3.org/TR/SVG/interact.html#PointerEventsProperty">SVG content</a> |
| and, as such, accepts property values specific to vector graphics (eg. relating to |
| graphical fill and stroke). The following definition only applies to the property |
| when used with HTML content. Note that the property has a new initial value, "auto", |
| which behaves as "visiblePainted" in SVG content and "visible" in non-SVG content. |
| </p> |
| |
| <div class="propdef"> |
| <dl> |
| <dt><span class="prop-name">'pointer-events'</span></dt> |
| <dd> |
| <table summary="pointer-events property"> |
| <tr> |
| <td><em>Value:</em></td> |
| <td> |
| auto | visible | none | visiblePainted | visibleFill | visibleStroke | |
| painted | fill | stroke | all |
| </td> |
| </tr> |
| <tr> |
| <td><em>Initial:</em></td> |
| <td>auto</td> |
| </tr> |
| <tr> |
| <td><em>Applies to:</em></td> |
| <td>all |
| elements</td> |
| </tr> |
| <tr> |
| <td><em>Inherited:</em></td> |
| <td>yes</td> |
| </tr> |
| <tr> |
| <td><em>Percentages:</em></td> |
| <td>N/A</td> |
| </tr> |
| <tr> |
| <td><em>Media:</em></td> |
| <td>visual</td> |
| </tr> |
| </table> |
| </dd> |
| </dl> |
| </div> |
| <dl> |
| <dt><span class="prop-value">auto</span></dt> |
| <dd> |
| In SVG content, behave as <span class="prop-value">visiblePainted</span>. |
| Otherwise, behave as <span class="prop-value">visible</span>. |
| </dd> |
| <dt><span class="prop-value">visible</span></dt> |
| <dd> |
| The given element receives pointer events. |
| </dd> |
| <dt><span class="prop-value">none</span></dt> |
| <dd> |
| The given element does not receive pointer events. |
| </dd> |
| <dt><span class="prop-value">visiblePainted</span></dt> |
| <dt><span class="prop-value">visibleFill</span></dt> |
| <dt><span class="prop-value">visibleStroke</span></dt> |
| <dt><span class="prop-value">painted</span></dt> |
| <dt><span class="prop-value">fill</span></dt> |
| <dt><span class="prop-value">stroke</span></dt> |
| <dt><span class="prop-value">all</span></dt> |
| <dd> |
| In SVG content, behave as defined by the <a |
| href="http://www.w3.org/TR/SVG/interact.html#PointerEventsProperty">SVG |
| specification</a>. Otherwise, behave as <span |
| class="prop-value">visible</span>. |
| </dd> |
| </dl> |
| |
| |
| </body> |
| </html> |