src/cm/media/js/lib/yui/yui_3.10.3/docs/stylesheet/index.html
author gibus
Tue, 11 Feb 2014 12:33:25 +0100
changeset 572 93383e54e042
parent 525 89ef5ed3c48b
permissions -rw-r--r--
Font size for piwik optout iframe.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>StyleSheet</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        <a href="#toc" class="jump">Jump to Table of Contents</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
            <h1>StyleSheet</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
                <div class="content"><div class="intro component">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        The StyleSheet module normalizes the dynamic creation and modification
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        of CSS stylesheets on a page.  This makes it easy to manage the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        development, storage, and reapplication of personalized user
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        stylesheets.  Because it targets styles at the CSS level, it also
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        allows you to modify styles applied to a CSS pseudo-element such as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        <code>p::first-letter</code>, or pseudo-class such as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        <code>a:hover</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        StyleSheet is capable of creating new stylesheets from scratch or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        modifying existing stylesheets held as properties of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        <code>&lt;link&gt;</code> or <code>&lt;style&gt;</code> elements.  It
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        should be noted that not all browsers support reading or modifying
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        external stylesheets from other domains.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
<h2 id="getting-started">Getting Started</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
To include the source files for StyleSheet and its dependencies, first load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
the YUI seed file if you haven't already loaded it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
<pre class="code prettyprint">&lt;script src=&quot;http:&#x2F;&#x2F;yui.yahooapis.com&#x2F;3.10.3&#x2F;build&#x2F;yui&#x2F;yui-min.js&quot;&gt;&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
Next, create a new YUI instance for your application and populate it with the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
modules you need by specifying them as arguments to the <code>YUI().use()</code> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
YUI will automatically load any dependencies required by the modules you
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
specify.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
<pre class="code prettyprint">&lt;script&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
&#x2F;&#x2F; Create a new YUI instance and populate it with the required modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
YUI().use(&#x27;stylesheet&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    &#x2F;&#x2F; StyleSheet is available and ready for use. Add implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    &#x2F;&#x2F; code here.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
For more information on creating YUI instances and on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
<a href="http://yuilibrary.com/yui/docs/api/classes/YUI.html#method_use"><code>use()</code> method</a>, see the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
documentation for the <a href="../yui/index.html">YUI Global Object</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
<h2 id="using">Using the StyleSheet Utility</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
<h3 id="instantiating">Instantiating a <code>Y.StyleSheet</code></h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    The <code>Y.StyleSheet</code> constructor is written to support both
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    function syntax and normal constructor syntax making the <code>new</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    prefix unnecessary (but harmless).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    The constructor has no required parameters.  Passing no arguments will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
    create a new, empty StyleSheet instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
<pre class="code prettyprint">&#x2F;&#x2F; These are equivalent; both create new empty StyleSheets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
var myStyleSheet = new Y.StyleSheet();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
var myOtherStyleSheet = Y.StyleSheet();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    To seed a new StyleSheet with a number of CSS rules, you can pass the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    constructor any of the following:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
<ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        a <code>&lt;style&gt;</code> or <code>&lt;link&gt;</code> node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        reference,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        the id of a <code>&lt;style&gt;</code> or <code>&lt;link&gt;</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        node, or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
    <li>a string of CSS</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
</ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
<pre class="code prettyprint">&lt;link id=&quot;local&quot; type=&quot;text&#x2F;css&quot; rel=&quot;stylesheet&quot; href=&quot;local_file.css&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
&lt;style id=&quot;styleblock&quot; type=&quot;text&#x2F;css&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
    .some select.or {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        margin-right: 2em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
&lt;&#x2F;style&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
<pre class="code prettyprint">YUI().use(&#x27;node&#x27;,&#x27;stylesheet&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    &#x2F;&#x2F; Node or HTMLElement reference for a style or locally sourced link element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
    var sheet = Y.StyleSheet(Y.one(&quot;#styleblock&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    sheet = Y.StyleSheet(Y.DOM.byId(&#x27;local&#x27;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    &#x2F;&#x2F; OR the id of a style element or locally sourced link element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    sheet = Y.StyleSheet(&#x27;#local&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    &#x2F;&#x2F; OR string of css text
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    var css = &quot;.moduleX .alert { background: #fcc; font-weight: bold; } &quot; +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
              &quot;.moduleX .warn  { background: #eec; } &quot; +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
              &quot;.hide_messages .moduleX .alert, &quot; +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
              &quot;.hide_messages .moduleX .warn { display: none; }&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    sheet = new Y.StyleSheet(css);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
    Be aware that the <a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
    href="http://en.wikipedia.org/wiki/Same_origin_policy">Same Origin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
    policy</a> prevents access in some browsers to the style data of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
    <code>&lt;link&gt;</code> elements with <code>href</code>s pointing to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    other domains.  Attempts to seed a <code>Y.StyleSheet</code> instance with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    a cross-domain <code>&lt;link&gt;</code> may result in a security
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
<pre class="code prettyprint">&lt;link id=&quot;remote&quot; type=&quot;text&#x2F;css&quot; rel=&quot;stylesheet&quot; href=&quot;http:&#x2F;&#x2F;other.domain.com&#x2F;remote_file.css&quot;&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
<pre class="code prettyprint">&#x2F;&#x2F; ERROR - Same Origin Policy prevents access to remote stylesheets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
var styleSheet = Y.StyleSheet(&#x27;remote&#x27;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
<h3 id="registry">Getting a StyleSheet by registered name</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
    <code>Y.StyleSheet</code> supports registering instances by name allowing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    them to be recalled by that same name elsewhere in your code.  Internally,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    <code>Y.StyleSheet</code> maintains a registry of all created StyleSheet
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    instances, using a unique generated id that the host node is tagged with.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    This allows future attempts to create a StyleSheet instance from the same
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    node to return the previously created instance associated with that id.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
    Register a StyleSheet instance manually using the static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    <code>register</code> method or pass the desired name as a second parameter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    to the constructor.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
<pre class="code prettyprint">var sheetA = Y.StyleSheet(&#x27;my_stylesheet&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
&#x2F;&#x2F; Create a registry alias to sheetA.  We&#x27;ll call it bob.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
Y.StyleSheet.register(sheetA, &#x27;bob&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
&#x2F;&#x2F; Create another StyleSheet passing the name as the second parameter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
var css = &quot;.some .css { white-space: pre-wrap; color: pink; }&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
var sheetB = Y.StyleSheet(css, &#x27;my sheet&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
&#x2F;&#x2F; Meanwhile, elsewhere in your code
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
&#x2F;&#x2F; sheetA is the same instance as sheet1 and sheet2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
var sheet1 = Y.StyleSheet(Y.one(&#x27;#my_stylesheet&#x27;)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    sheet2 = Y.StyleSheet(&#x27;bob&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
&#x2F;&#x2F; sheetB is the same instance as sheet3
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
var sheet3 = Y.StyleSheet(&#x27;my sheet&#x27;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    If an unregistered name is passed as the <em>first</em> argument to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    constructor, a new empty StyleSheet will be created and registered with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    that name.  This allows you to use the following code pattern:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
<pre class="code prettyprint">&#x2F;&#x2F; Whichever of these executes first, an empty StyleSheet will be created
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
&#x2F;&#x2F; and registered as &#x27;MyApp&#x27;.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
&#x2F;&#x2F; In one area of your app
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
Y.StyleSheet(&#x27;MyApp&#x27;).set(&#x27;.module .messages&#x27;, { display: &#x27;none&#x27; });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
&#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
&#x2F;&#x2F; In another area of your app
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
Y.StyleSheet(&#x27;MyApp&#x27;).unset(&#x27;.module .messages&#x27;,&#x27;display&#x27;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
<h3 id="first_param">Summary of how the constructor handles the first argument</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    When nothing is passed as the first argument, a new StyleSheet instance is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    created.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    When a <code>&lt;style&gt;</code> or <code>&lt;link&gt;</code> element is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    passed as the first argument, it is inspected for the id stamp that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    StyleSheet tags known host nodes with.  If it finds one, it will return the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    associated StyleSheet from the registry.  If not, it will stamp the node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
    and seed the instance from the node's CSS content.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
    When a string is passed as the first argument, StyleSheet does the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
    following things in order:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
<ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        Check the registry for an instance associated to that name.  If found,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        return the instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        Check the DOM for a <code>&lt;style&gt;</code> or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        <code>&lt;link&gt;</code> node with that id.  If found, check the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
        registry for an instance associated to its tagged id if present.  If
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        found, return that instance.  If not, use that node to seed a new
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        StyleSheet instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        Check the string for a curly brace { character.  If found, create a new
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        instance seeded with the string as initial <code>cssText</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        Create a new empty StyleSheet and register the instance by the provided
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
</ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
<h3 id="set">Creating and modifying CSS style rules</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
    The core method of StyleSheet instances is <code>set(selector,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    style_properties)</code>.  It will create or alter a CSS rule using the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
    property:value pairs in <code>style_properties</code> targeting the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    provided <code>selector</code>.  In essence, it looks very much like
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
    natural CSS syntax, <em>except style properties must be in JavaScript's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    camelCase</em>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
<pre class="code prettyprint">Y.StyleSheet(&#x27;MyApp&#x27;).set(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
    &quot;q.uoted select.or[str=ing]&quot;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        fontSize   : &quot;150%&quot;,         &#x2F;&#x2F; note the camel casing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        background : &quot;#030 url(&#x2F;images&#x2F;bg_image.png) scroll repeat-y top left&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        cssFloat   : &quot;left&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        opacity    : 0.5
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
    });</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    Rather than continually add new rules that will override one another,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    StyleSheet manages one rule per selector and modifies them in place.  This
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    may be relevant if you have two or more rules with selectors of the same
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    specificity.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    As with regular CSS syntax, comma-separated selectors are supported, but
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    internally StyleSheet splits them up into individual rules because browser
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
    support for multiple selectors is not consistent.  This means calling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    <code>set(..)</code> with such a selector string <em>will incur multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    repaints or reflows</em>, but limited to the number of atomic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
    selectors.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
<pre class="code prettyprint">&#x2F;&#x2F; This is valid, but will trigger 3 reflows
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
Y.StyleSheet(&#x27;MyApp&#x27;).set(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    &#x27;.foo, .bar, .baz&#x27;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
        borderRight: &quot;1em solid #f00&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    });</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
<h3 id="normalized_properties">Some style properties are normalized</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
    Two style properties have differing implementation between browsers, namely
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    <code>float</code> and <code>opacity</code>.  StyleSheet instances will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
    normalize these properties for you.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
    Because &quot;float&quot; is a reserved word in JavaScript, it is supported
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
    by the name <code>cssFloat</code> in W3C compliant browsers and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
    <code>styleFloat</code> in IE.  StyleSheet will accept any of these to set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
    the <code>float</code> property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
<pre class="code prettyprint">&#x2F;&#x2F; Any of these will work
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
Y.StyleSheet(&#x27;MyApp&#x27;).set(&#x27;.foo&#x27;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
    &quot;float&quot;    : &quot;left&quot;,   &#x2F;&#x2F; &quot;float&quot; must be quoted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
    cssFloat   : &quot;right&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    styleFloat : &quot;none&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    IE does not support the <code>opacity</code> style property, but has
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
    equivalent functionality offered by its proprietary <code>filter</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
    property, though using a different value syntax.  StyleSheet will translate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
    <code>opacity</code> to <code>filter</code> for IE, but it <em>will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
    not</em> translate <code>filter</code> to <code>opacity</code> for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
    W3C-compliant browsers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
<h3 id="unset">Removing and resetting CSS style rules</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    When you want to remove a particular rule or style property from affecting
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
    the cascade, use <code>unset(selector,propert[y|ies])</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
    <code>unset(..)</code> can be called in any of the following ways, with the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
    noted result:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
<ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        <code>unset('.foo')</code> &mdash; removes the rule associated to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        selector entirely.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
        <code>unset('.foo','font')</code> &mdash; unsets the <code>font</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        property and any child properties (e.g.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
        'font-weight','font-variant','font-size','line-height', and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
        'font-family').  If there are no set properties left, the rule is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
        removed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    <li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
        <code>unset('.foo',['font','border',...])</code> &mdash; same as above,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
        but the rule is modified only once with the final applicable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
        <code>cssText</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
    </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    It is important to note that there is a difference between setting a style
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
    property to its default value and unsetting it.  The former can be achieved
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
    by calling <code>set(selector, { property: &quot;auto&quot; })</code> (or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
    the respective default value for that property).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
    However, as the CSS is reapplied to the page, the &quot;auto&quot; value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
    will override any value for that property that may have cascaded in from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
    another rule.  This is different than removing the property assignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
    entirely, as this allows cascading values through.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
<pre class="code prettyprint">Y.StyleSheet(&#x27;MyApp&#x27;).set(&#x27;.foo&#x27;, { background: &#x27;auto&#x27; });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
&#x2F;&#x2F; is NOT the same as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
Y.StyleSheet(&#x27;MyApp&#x27;).unset(&#x27;.foo&#x27;,&#x27;background&#x27;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
<h3 id="not_selector">A note on selector strings</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
    Though the StyleSheet Utility takes selector strings as input to its API,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    it <em>does not</em> leverage the YUI selector engine.  YUI's selector
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
    functionality supplements native CSS support for DOM access, but
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    accomplishes this through efficient DOM traversal.  Since the StyleSheet
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
    Utility uses the browser's built-in stylesheet and rule objects, it can not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
    handle selectors that are not supported by the browser's native CSS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    parser.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
<pre class="code prettyprint">&#x2F;&#x2F; This will not cause a style change in IE 6, for example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
Y.StyleSheet(&#x27;MyApp&#x27;).set(&#x27;input[type=checkbox]:checked&#x27;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
    verticalAlign : &#x27;super&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
<h3 id="disable">Disabling and enabling a StyleSheet</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
    Disabling a StyleSheet effectively turns it off; no CSS from that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
    stylesheet is applied to the page.  Disabling a StyleSheet does not remove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
    the host node from the page, and style can be reapplied by enabling the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
    StyleSheet again.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
    When StyleSheets are disabled, it is still possible to change their style
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
    rules via <code>set</code> and <code>unset</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
<pre class="code prettyprint">var sheet = Y.StyleSheet(styleNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
sheet.disable();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
sheet.set(&#x27;.foo&#x27;, { backgroundColor: &#x27;#900&#x27;, color: &#x27;#fff&#x27; });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
sheet.set(&#x27;.bar&#x27;, { borderBottomColor: &#x27;#369&#x27; });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
sheet.unset(&#x27;.baz&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
sheet.enable();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
<h3 id="static">Static methods</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
    <code>Y.StyleSheet</code> exposes a few static methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
<div class="apisummary">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
<table>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
<thead>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        <th>Method</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
        <th>Use for</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
</thead>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
<tbody>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        <td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
<pre class="code prettyprint">Y.StyleSheet.register(instance, name)</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        </td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        <td>Use to assign a named registry entry for a StyleSheet instance.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
        <td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
<pre class="code prettyprint">Y.StyleSheet.toCssText(property_obj, starting_cssText)</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        </td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
        <td>Use to translate an object of style property:value pairs to a single <code>cssText</code> string.  The optional second argument is a <code>cssText</code> string of a style's &quot;before&quot; state.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
</tbody>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
</table>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
    <code>Y.StyleSheet.toCssText</code> is used internally to assemble the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    <code>cssText</code> strings for updating the stylesheet rules.  However,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
    it may also be helpful for avoiding reflow overhead when substantially
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
    modifying a single element's style.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
<pre class="code prettyprint">var el           = Y.one(&#x27;some_element&#x27;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
    changes      = { color : &#x27;#684&#x27;, fontWeight: &#x27;bold&#x27;, padding: &#x27;2em&#x27; },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
    currentStyle = el.getStyle(&#x27;cssText&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
el.setStyle(&#x27;cssText&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
    Y.StyleSheet.toCssText(changes, currentStyle));</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
<h2 id="mechanism">How <code>Y.StyleSheet</code> works</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
    Browsers grant access via the DOM API to stylesheets included in markup as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
    <code>&lt;link&gt;</code> or <code>&lt;style&gt;</code> elements.  Despite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
    differing implementations across the browser spectrum, they all support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
    adding, removing, and modifying CSS rules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
    CSS rules are comprised of a selector and collection of style
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
    property:value pairs enclosed in curly braces.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
<pre class="code prettyprint">&#x2F;* |            This is a CSS rule          |
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
   |    selectorText    |  style properties | *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
   div.this-is a .rule  { font-color: #f00; }</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
    In JavaScript, each rule object has a <code>selectorText</code> property
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
    and a <code>style</code> property that operates in the same way as the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
    <code>style</code> property on regular DOM elements, such as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
    <code>&lt;p&gt;</code> or <code>&lt;strong&gt;</code> elements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
    Arguably the most valuable property of the style collection is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
    <code>cssText</code> which corresponds to the serialized summary of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
    property:value pairs applied by this collection (e.g. "font-size: 100%;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
    color: #FF0000;").  The reason this property is important is that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
    modifications to the string value will cause changes to repopulate the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
    individual style properties <em>while only triggering a single repaint or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
    reflow</em> by the browser.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
<pre class="code prettyprint">var el = document.getElementById(&#x27;some_element&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
el.style.borderBottom = &#x27;3px solid #eee&#x27;; &#x2F;&#x2F; reflow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
el.style.borderTop    = &#x27;3px solid #ccc&#x27;; &#x2F;&#x2F; another reflow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
el.style.fontWeight   = &#x27;bold&#x27;;           &#x2F;&#x2F; another reflow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
&#x2F;&#x2F; Vs. three changes in one reflow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
el.style.cssText += &#x27;; border-bottom: 3px solid #eee; border-top: 3px solid #ccc; font-weight: bold&#x27;;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
    <code>Y.StyleSheet</code> leverages this mechanism in addition to applying
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
    modifications at the CSS rule level rather than modifying each targeted DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
    node directly.  This means changing multiple style properties on multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
    elements (that can be identified by a single selector) will only ever incur
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
    one repaint or reflow.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    It must be noted that all reflows are not the same.  The scope of a reflow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    is greatly affected by what element triggered it.  For example, changing a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
    style of an absolutely positioned element will trigger a very limited
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
    reflow because the browser understands that not much <em>could</em> change
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
    as a result.  Stylesheet modifications on the other hand are not tied to an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
    element, but the page as a whole.  The CSS cascade must be recalculated and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
    applied, resulting in a full page reflow.  This means it may be more
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
    efficient to individually update many elements than to change the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
    stylesheet.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
<h2 id="knownissues">Known Issues</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    <strong>Unable to set style values with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
    <code>!important</code></strong>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
    CSS syntax for declaring that a style value has <code>important</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
    priority is to include the <code>!important</code> flag after the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
<pre class="code prettyprint">.some-class {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
    color: #000 !important;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
    However, the DOM API for modifying stylesheets does not parse out the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
    <code>!important</code> flag from the assigned value string, and thus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
    considers the entire string to be an invalid value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
<pre class="code prettyprint">el.style.color = &quot;#000 !important&quot;; &#x2F;&#x2F; Error</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
    StyleSheet will support <code>!important</code> in the value string in a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
    future release, but for now the only way to assign an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
    <code>!important</code> style is by creating a new StyleSheet, passing a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
    CSS text string to the constructor.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
<pre class="code prettyprint">var sheet = new Y.StyleSheet();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
sheet.set(&quot;.foo&quot;, { color: &quot;#000 !important&quot; }); &#x2F;&#x2F; FAIL
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
new Y.StyleSheet(&quot;.foo { color: #000 !important; }&quot;); &#x2F;&#x2F; WORKS</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
                    <div id="toc" class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
                            <h2 class="no-toc">Table of Contents</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
                            <ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
<a href="#getting-started">Getting Started</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
<a href="#using">Using the StyleSheet Utility</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
<a href="#instantiating">Instantiating a <code>Y.StyleSheet</code></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
<a href="#registry">Getting a StyleSheet by registered name</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
<a href="#first_param">Summary of how the constructor handles the first argument</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
<a href="#set">Creating and modifying CSS style rules</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
<a href="#normalized_properties">Some style properties are normalized</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
<a href="#unset">Removing and resetting CSS style rules</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
<a href="#not_selector">A note on selector strings</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
<a href="#disable">Disabling and enabling a StyleSheet</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
<a href="#static">Static methods</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
<a href="#mechanism">How <code>Y.StyleSheet</code> works</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
<a href="#knownissues">Known Issues</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
                                        <li data-description="Use StyleSheet to adjust the CSS rules applying a page theme from user input">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
                                            <a href="stylesheet-theme.html">Adjusting a Page Theme on the Fly</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
                            <h2 class="no-toc">Examples That Use This Component</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
                                        <li data-description="Example Photo Browser application.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
                                            <a href="../dd/photo-browser.html">Photo Browser</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
    assets: '../assets/stylesheet',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
    name: 'stylesheet',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
    title: 'StyleSheet',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
YUI.Env.Tests.examples.push('stylesheet-theme');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
YUI.Env.Tests.examples.push('photo-browser');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
</html>