Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1281)

Side by Side Diff: third_party/polymer/v0_8/components-chromium/paper-spinner/paper-spinner.css

Issue 1162563004: Upgrade to 1.0 and switch clients to dom-repeat where needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a layout import and remove the gzipped webanimation in reproduce.sh Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /**
2 @license
3 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
7 Code distributed by Google as part of the polymer project is also
8 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
9
10 */
11 /**************************/
12 /* STYLES FOR THE SPINNER */
13 /**************************/
14
15 /*
16 * Constants:
17 * STROKEWIDTH = 3px
18 * ARCSIZE = 270 degrees (amount of circle the arc takes up)
19 * ARCTIME = 1333ms (time it takes to expand and contract arc)
20 * ARCSTARTROT = 216 degrees (how much the start location of the arc
21 * should rotate each time, 216 gives us a
22 * 5 pointed star shape (it's 360/5 * 3).
23 * For a 7 pointed star, we might do
24 * 360/7 * 3 = 154.286)
25 * CONTAINERWIDTH = 28px
26 * SHRINK_TIME = 400ms
27 */
28
29 :host {
30 display: inline-block;
31 position: relative;
32 width: 28px; /* CONTAINERWIDTH */
33 height: 28px; /* CONTAINERWIDTH */
34 }
35
36 #spinnerContainer {
37 width: 100%;
38 height: 100%;
39 }
40
41 #spinnerContainer.active {
42 /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */
43 -webkit-animation: container-rotate 1568ms linear infinite;
44 animation: container-rotate 1568ms linear infinite;
45 }
46
47 @-webkit-keyframes container-rotate {
48 to { -webkit-transform: rotate(360deg) }
49 }
50
51 @keyframes container-rotate {
52 to { transform: rotate(360deg) }
53 }
54
55 .spinner-layer {
56 position: absolute;
57 width: 100%;
58 height: 100%;
59 opacity: 0;
60 }
61
62 .layer-1 {
63 border-color: var(--paper-spinner-layer-1-color, --google-blue-500);
64 }
65
66 .layer-2 {
67 border-color: var(--paper-spinner-layer-2-color, --google-red-500);
68 }
69
70 .layer-3 {
71 border-color: var(--paper-spinner-layer-3-color, --google-yellow-500);
72 }
73
74 .layer-4 {
75 border-color: var(--paper-spinner-layer-4-color, --google-blue-500);
76 }
77
78 /**
79 * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):
80 *
81 * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't
82 * guarantee that the animation will start _exactly_ after that value. So we avo id using
83 * animation-delay and instead set custom keyframes for each color (as layer-2un dant as it
84 * seems).
85 *
86 * We write out each animation in full (instead of separating animation-name,
87 * animation-duration, etc.) because under the polyfill, Safari does not recogni ze those
88 * specific properties properly, treats them as -webkit-animation, and overrides the
89 * other animation rules. See https://github.com/Polymer/platform/issues/53.
90 */
91 .active .spinner-layer.layer-1 {
92 /* durations: 4 * ARCTIME */
93 -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) in finite both, layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
94 animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite b oth, layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
95 }
96
97 .active .spinner-layer.layer-2 {
98 /* durations: 4 * ARCTIME */
99 -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) in finite both, layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
100 animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite b oth, layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
101 }
102
103 .active .spinner-layer.layer-3 {
104 /* durations: 4 * ARCTIME */
105 -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) in finite both, layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
106 animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite b oth, layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
107 }
108
109 .active .spinner-layer.layer-4 {
110 /* durations: 4 * ARCTIME */
111 -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) in finite both, layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
112 animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite b oth, layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
113 }
114
115 @-webkit-keyframes fill-unfill-rotate {
116 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */
117 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */
118 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */
119 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */
120 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */
121 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */
122 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */
123 to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */
124 }
125
126 @keyframes fill-unfill-rotate {
127 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */
128 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */
129 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */
130 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */
131 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */
132 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */
133 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */
134 to { transform: rotate(1080deg); } /* 4 * ARCSIZE */
135 }
136
137 /**
138 * HACK: Even though the intention is to have the current .spinner-layer at
139 * `opacity: 1`, we set it to `opacity: 0.99` instead since this forces Chrome
140 * to do proper subpixel rendering for the elements being animated. This is
141 * especially visible in Chrome 39 on Ubuntu 14.04. See:
142 *
143 * - https://github.com/Polymer/paper-spinner/issues/9
144 * - https://code.google.com/p/chromium/issues/detail?id=436255
145 */
146 @-webkit-keyframes layer-1-fade-in-out {
147 from { opacity: 0.99; }
148 25% { opacity: 0.99; }
149 26% { opacity: 0; }
150 89% { opacity: 0; }
151 90% { opacity: 0.99; }
152 100% { opacity: 0.99; }
153 }
154
155 @keyframes layer-1-fade-in-out {
156 from { opacity: 0.99; }
157 25% { opacity: 0.99; }
158 26% { opacity: 0; }
159 89% { opacity: 0; }
160 90% { opacity: 0.99; }
161 100% { opacity: 0.99; }
162 }
163
164 @-webkit-keyframes layer-2-fade-in-out {
165 from { opacity: 0; }
166 15% { opacity: 0; }
167 25% { opacity: 0.99; }
168 50% { opacity: 0.99; }
169 51% { opacity: 0; }
170 }
171
172 @keyframes layer-2-fade-in-out {
173 from { opacity: 0; }
174 15% { opacity: 0; }
175 25% { opacity: 0.99; }
176 50% { opacity: 0.99; }
177 51% { opacity: 0; }
178 }
179
180 @-webkit-keyframes layer-3-fade-in-out {
181 from { opacity: 0; }
182 40% { opacity: 0; }
183 50% { opacity: 0.99; }
184 75% { opacity: 0.99; }
185 76% { opacity: 0; }
186 }
187
188 @keyframes layer-3-fade-in-out {
189 from { opacity: 0; }
190 40% { opacity: 0; }
191 50% { opacity: 0.99; }
192 75% { opacity: 0.99; }
193 76% { opacity: 0; }
194 }
195
196 @-webkit-keyframes layer-4-fade-in-out {
197 from { opacity: 0; }
198 65% { opacity: 0; }
199 75% { opacity: 0.99; }
200 90% { opacity: 0.99; }
201 100% { opacity: 0; }
202 }
203
204 @keyframes layer-4-fade-in-out {
205 from { opacity: 0; }
206 65% { opacity: 0; }
207 75% { opacity: 0.99; }
208 90% { opacity: 0.99; }
209 100% { opacity: 0; }
210 }
211
212 /**
213 * Patch the gap that appear between the two adjacent div.circle-clipper while t he
214 * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).
215 *
216 * Update: the gap no longer appears on Chrome when .spinner-layer's opacity is 0.99,
217 * but still does on Safari and IE.
218 */
219 .gap-patch {
220 position: absolute;
221 box-sizing: border-box;
222 top: 0;
223 left: 45%;
224 width: 10%;
225 height: 100%;
226 overflow: hidden;
227 border-color: inherit;
228 }
229
230 .gap-patch .circle {
231 width: 1000%;
232 left: -450%;
233 }
234
235 .circle-clipper {
236 display: inline-block;
237 position: relative;
238 width: 50%;
239 height: 100%;
240 overflow: hidden;
241 border-color: inherit;
242 }
243
244 .circle-clipper .circle {
245 width: 200%;
246 }
247
248 .circle {
249 box-sizing: border-box;
250 height: 100%;
251 border-width: 3px; /* STROKEWIDTH */
252 border-style: solid;
253 border-color: inherit;
254 border-bottom-color: transparent !important;
255 border-radius: 50%;
256 -webkit-animation: none;
257 animation: none;
258
259 @apply(--layout-fit);
260 }
261
262 .circle-clipper.left .circle {
263 border-right-color: transparent !important;
264 -webkit-transform: rotate(129deg);
265 transform: rotate(129deg);
266 }
267
268 .circle-clipper.right .circle {
269 left: -100%;
270 border-left-color: transparent !important;
271 -webkit-transform: rotate(-129deg);
272 transform: rotate(-129deg);
273 }
274
275 .active .circle-clipper.left .circle {
276 /* duration: ARCTIME */
277 -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite bo th;
278 animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
279 }
280
281 .active .circle-clipper.right .circle {
282 /* duration: ARCTIME */
283 -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite b oth;
284 animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
285 }
286
287 @-webkit-keyframes left-spin {
288 from { -webkit-transform: rotate(130deg); }
289 50% { -webkit-transform: rotate(-5deg); }
290 to { -webkit-transform: rotate(130deg); }
291 }
292
293 @keyframes left-spin {
294 from { transform: rotate(130deg); }
295 50% { transform: rotate(-5deg); }
296 to { transform: rotate(130deg); }
297 }
298
299 @-webkit-keyframes right-spin {
300 from { -webkit-transform: rotate(-130deg); }
301 50% { -webkit-transform: rotate(5deg); }
302 to { -webkit-transform: rotate(-130deg); }
303 }
304
305 @keyframes right-spin {
306 from { transform: rotate(-130deg); }
307 50% { transform: rotate(5deg); }
308 to { transform: rotate(-130deg); }
309 }
310
311 #spinnerContainer.cooldown {
312 /* duration: SHRINK_TIME */
313 -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cub ic-bezier(0.4, 0.0, 0.2, 1);
314 animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezie r(0.4, 0.0, 0.2, 1);
315 }
316
317 @-webkit-keyframes fade-out {
318 from { opacity: 0.99; }
319 to { opacity: 0; }
320 }
321
322 @keyframes fade-out {
323 from { opacity: 0.99; }
324 to { opacity: 0; }
325 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698