OLD | NEW |
| (Empty) |
1 <!-- | |
2 Copyright (c) 2014 The Polymer Project Authors. All rights reserved. | |
3 This code may only be used under the BSD style license found at http://polymer.g
ithub.io/LICENSE.txt | |
4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | |
5 The complete set of contributors may be found at http://polymer.github.io/CONTRI
BUTORS.txt | |
6 Code distributed by Google as part of the polymer project is also | |
7 subject to an additional IP rights grant found at http://polymer.github.io/PATEN
TS.txt | |
8 --><!-- | |
9 | |
10 The `core-style` element helps manage styling inside other elements and can | |
11 be used to make themes. The `core-style` element can be either a producer | |
12 or consumer of styling. If it has its `id` property set, it's a producer. | |
13 Elements that are producers should include css styling as their text content. | |
14 If a `core-style` has its `ref` property set, it's a consumer. A `core-style` | |
15 typically sets its `ref` property to the value of the `id` property of the | |
16 `core-style` it wants to use. This allows a single producer to be used in | |
17 multiple places, for example, in many different elements. | |
18 | |
19 It's common to place `core-style` producer elements inside HTMLImports. | |
20 Remote stylesheets should be included this way, the @import css mechanism is | |
21 not currently supported. | |
22 | |
23 Here's a basic example: | |
24 | |
25 <polymer-element name="x-test" noscript> | |
26 <template> | |
27 <core-style ref="x-test"></core-style> | |
28 <content></content> | |
29 </template> | |
30 </polymer-element> | |
31 | |
32 The `x-test` element above will be styled by any `core-style` elements that have | |
33 `id` set to `x-test`. These `core-style` producers are separate from the element | |
34 definition, allowing a user of the element to style it independent of the author
's | |
35 styling. For example: | |
36 | |
37 <core-style id="x-test"> | |
38 :host { | |
39 backgound-color: steelblue; | |
40 } | |
41 </core-style> | |
42 | |
43 The content of the `x-test` `core-style` producer gets included inside the | |
44 shadowRoot of the `x-test` element. If the content of the `x-test` producer | |
45 `core-style` changes, all consumers of it are automatically kept in sync. This | |
46 allows updating styling on the fly. | |
47 | |
48 The `core-style` element also supports bindings, in which case the producer | |
49 `core-style` element is the model. Here's an example: | |
50 | |
51 <core-style id="x-test"> | |
52 :host { | |
53 background-color: {{myColor}}; | |
54 } | |
55 </core-style> | |
56 <script> | |
57 document._currentScript.ownerDocument.getElementById('x-test').myColor = '
orange'; | |
58 </script> | |
59 | |
60 Finally, to facilitate sharing data between `core-style` elements, all | |
61 `core-style` elements have a `g` property which is set to the global | |
62 `CoreStyle.g`. Here's an example: | |
63 | |
64 <core-style id="x-test"> | |
65 :host { | |
66 background-color: {{g.myColor}}; | |
67 } | |
68 </core-style> | |
69 <script> | |
70 CoreStyle.g.myColor = 'tomato'; | |
71 </script> | |
72 | |
73 Finally, one `core-style` can be nested inside another. The `core-style` | |
74 element has a `list` property which is a map of all the `core-style` producers. | |
75 A `core-style` producer's content is available via its `cssText` property. | |
76 Putting this together: | |
77 | |
78 <core-style id="common"> | |
79 :host { | |
80 font-family: sans-serif; | |
81 } | |
82 </core-style> | |
83 | |
84 <core-style id="x-test"> | |
85 {{list.common.cssText}} | |
86 | |
87 :host { | |
88 background-color: {{g.myColor}}; | |
89 } | |
90 </core-style> | |
91 | |
92 | |
93 @group Polymer Core Elements | |
94 @element core-style | |
95 @homepage github.io | |
96 --><html><head><link rel="import" href="../polymer/polymer.html"> | |
97 | |
98 </head><body><polymer-element name="core-style" hidden="" assetpath=""> | |
99 | |
100 </polymer-element> | |
101 <script charset="utf-8" src="core-style-extracted.js"></script></body></html> | |
OLD | NEW |