paper-checkbox.css revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1/*
2Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6Code distributed by Google as part of the polymer project is also
7subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8*/
9
10:host {
11  display: inline-block;
12  white-space: nowrap;
13}
14
15:host(:focus) {
16  outline: none;
17}
18
19#checkboxContainer {
20  position: relative;
21  width: 18px;
22  height: 18px;
23  cursor: pointer;
24  -webkit-transform: translateZ(0);
25  transform: translateZ(0);
26}
27
28#checkboxContainer.labeled {
29  display: inline-block;
30  vertical-align: middle;
31}
32
33#ink {
34  position: absolute;
35  top: -15px;
36  left: -15px;
37  width: 48px;
38  height: 48px;
39  color: #5a5f5a;
40}
41
42#ink[checked] {
43  color: #0f9d58;
44}
45
46#checkbox {
47  position: absolute;
48  box-sizing: border-box;
49  top: 0px;
50  left: 0px;
51  width: 18px;
52  height: 18px;
53  border: solid 2px;
54  border-color: #5a5a5a;
55  pointer-events: none;
56}
57
58/* checkbox checked animations */
59#checkbox.checked.box {
60  border: solid 2px;
61  -webkit-animation: box-shrink 140ms ease-out forwards;
62  animation: box-shrink 140ms ease-out forwards;
63}
64
65@-webkit-keyframes box-shrink {
66  0% {
67    -webkit-transform: rotate(0deg);
68    top: 0px;
69    left: 0px;
70    width: 18px;
71    height: 18px;
72  }
73  100% {
74    -webkit-transform: rotate(45deg);
75    top: 13px;
76    left: 5px;
77    width: 4px;
78    height: 4px;
79  }
80}
81
82@keyframes box-shrink {
83  0% {
84    transform: rotate(0deg);
85    top: 0px;
86    left: 0px;
87    width: 18px;
88    height: 18px;
89  }
90  100% {
91    transform: rotate(45deg);
92    top: 13px;
93    left: 5px;
94    width: 4px;
95    height: 4px;
96  }
97}
98
99#checkbox.checked.checkmark {
100  border-left: none;
101  border-top: none;
102  -webkit-animation: checkmark-expand 140ms ease-out forwards;
103  animation: checkmark-expand 140ms ease-out forwards;
104}
105
106@-webkit-keyframes checkmark-expand {
107  0% {
108    -webkit-transform: rotate(45deg);
109    top: 13px;
110    left: 5px;
111    width: 4px;
112    height: 4px;
113  }
114  100% {
115    -webkit-transform: rotate(45deg);
116    top: -4px;
117    left: 6px;
118    width: 10px;
119    height: 21px;
120    border-right-width: 2px;
121    border-bottom-width: 2px;
122  }
123}
124
125@keyframes checkmark-expand {
126  0% {
127    transform: rotate(45deg);
128    top: 13px;
129    left: 5px;
130    width: 4px;
131    height: 4px;
132  }
133  100% {
134    transform: rotate(45deg);
135    top: -4px;
136    left: 6px;
137    width: 10px;
138    height: 21px;
139    border-right-width: 2px;
140    border-bottom-width: 2px;
141  }
142}
143
144#checkbox.checked {
145  -webkit-transform: rotate(45deg);
146  transform: rotate(45deg);
147  top: -4px;
148  left: 6px;
149  width: 10px;
150  height: 21px;
151  border-top: none;
152  border-left: none;
153  border-right-width: 2px;
154  border-bottom-width: 2px;
155  border-color: #0f9d58;
156}
157
158/* checkbox unchecked animations */
159#checkbox.unchecked.checkmark {
160  -webkit-transform: rotate(45deg);
161  transform: rotate(45deg);
162  border-left: none;
163  border-top: none;
164  -webkit-animation: checkmark-shrink 140ms ease-out forwards;
165  animation: checkmark-shrink 140ms ease-out forwards;
166}
167
168@-webkit-keyframes checkmark-shrink {
169  0% {
170    top: -4px;
171    left: 6px;
172    width: 10px;
173    height: 21px;
174    border-right-width: 2px;
175    border-bottom-width: 2px;
176  }
177  100% {
178    top: 13px;
179    left: 5px;
180    width: 4px;
181    height: 4px;
182  }
183}
184
185@keyframes checkmark-shrink {
186  0% {
187    top: -4px;
188    left: 6px;
189    width: 10px;
190    height: 21px;
191    border-right-width: 2px;
192    border-bottom-width: 2px;
193  }
194  100% {
195    top: 13px;
196    left: 5px;
197    width: 4px;
198    height: 4px;
199  }
200}
201
202#checkbox.unchecked.box {
203  -webkit-animation: box-expand 140ms ease-out forwards;
204  animation: box-expand 140ms ease-out forwards;
205}
206
207@-webkit-keyframes box-expand {
208  0% {
209    -webkit-transform: rotate(45deg);
210    top: 13px;
211    left: 5px;
212    width: 4px;
213    height: 4px;
214  }
215  100% {
216    -webkit-transform: rotate(0deg);
217    top: 0px;
218    left: 0px;
219    width: 18px;
220    height: 18px;
221  }
222}
223
224@keyframes box-expand {
225  0% {
226    transform: rotate(45deg);
227    top: 13px;
228    left: 5px;
229    width: 4px;
230    height: 4px;
231  }
232  100% {
233    transform: rotate(0deg);
234    top: 0px;
235    left: 0px;
236    width: 18px;
237    height: 18px;
238  }
239}
240
241/* label */
242#checkboxLabel {
243  position: relative;
244  display: inline-block;
245  vertical-align: middle;
246  padding-left: 8px;
247  white-space: normal;
248  pointer-events: none;
249}
250
251#checkboxLabel[hidden] {
252  display: none;
253}
254
255/* disabled state */
256:host([disabled]) {
257  pointer-events: none;
258}
259
260:host([disabled]) #checkbox {
261  border-color: #eaeaea !important;
262}
263