UNPKG

@ionic/core

Version:
162 lines (143 loc) • 5.04 kB
:host { /** * @prop --background: Same as --buffer-background when using a determinate progress bar, otherwise it styles the background of the ion-progress-bar itself. * @prop --progress-background: Color of the progress bar * @prop --buffer-background: Color of the buffer bar */ --background: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.2); --progress-background: var(--ion-color-primary, #3880ff); --buffer-background: var(--background); display: block; position: relative; width: 100%; contain: strict; overflow: hidden; } :host(.ion-color) { --progress-background: var(--ion-color-base); --buffer-background: rgba(var(--ion-color-base-rgb), 0.2); } :host(.progress-bar-indeterminate) { background: var(--buffer-background); } .progress, .progress-indeterminate, .indeterminate-bar-primary, .indeterminate-bar-secondary, .progress-buffer-bar, .progress-buffer-bar:before, .buffer-circles { left: 0; right: 0; top: 0; bottom: 0; position: absolute; width: 100%; height: 100%; } .progress, .progress-buffer-bar { transform-origin: left top; transition: transform 150ms linear; } :host-context([dir=rtl]) .progress, :host-context([dir=rtl]) .progress-buffer-bar { transform-origin: right top; } .progress, .progress-indeterminate { background: var(--progress-background); z-index: 2; } .progress-buffer-bar { background: #fff; z-index: 1; } .progress-buffer-bar:before { background: var(--buffer-background); content: ""; } .indeterminate-bar-primary { left: -145.16661%; right: 0; top: 0; bottom: 0; animation: primary-indeterminate-translate 2s infinite linear; } :host-context([dir=rtl]) .indeterminate-bar-primary { left: 0; right: -145.16661%; } .indeterminate-bar-primary .progress-indeterminate { animation: primary-indeterminate-scale 2s infinite linear; animation-play-state: inherit; } .indeterminate-bar-secondary { left: -54.88889%; right: 0; top: 0; bottom: 0; animation: secondary-indeterminate-translate 2s infinite linear; } :host-context([dir=rtl]) .indeterminate-bar-secondary { left: 0; right: -54.88889%; } .indeterminate-bar-secondary .progress-indeterminate { animation: secondary-indeterminate-scale 2s infinite linear; animation-play-state: inherit; } .buffer-circles { background: radial-gradient(ellipse at center, var(--buffer-background) 0%, var(--buffer-background) 30%, transparent 30%) repeat-x 5px center; background-size: 10px 10px; z-index: 0; animation: buffering 450ms infinite linear; } :host(.progress-bar-reversed) .progress, :host(.progress-bar-reversed) .progress-buffer-bar { transform-origin: right top; } :host([dir=rtl].progress-bar-reversed) .progress, :host([dir=rtl].progress-bar-reversed) .progress-buffer-bar { transform-origin: left top; } :host(.progress-bar-reversed) .buffer-circles, :host(.progress-bar-reversed) .indeterminate-bar-primary, :host(.progress-bar-reversed) .indeterminate-bar-secondary, :host(.progress-bar-reversed) .progress-indeterminate { animation-direction: reverse; } :host(.progress-paused) .indeterminate-bar-secondary, :host(.progress-paused) .indeterminate-bar-primary, :host(.progress-paused) .buffer-circles { animation-play-state: paused; } @keyframes primary-indeterminate-translate { 0% { transform: translateX(0); } 20% { animation-timing-function: cubic-bezier(0.5, 0, 0.70173, 0.49582); transform: translateX(0); } 59.15% { animation-timing-function: cubic-bezier(0.30244, 0.38135, 0.55, 0.95635); transform: translateX(83.67142%); } 100% { transform: translateX(200.61106%); } } @keyframes primary-indeterminate-scale { 0% { transform: scaleX(0.08); } 36.65% { animation-timing-function: cubic-bezier(0.33473, 0.12482, 0.78584, 1); transform: scaleX(0.08); } 69.15% { animation-timing-function: cubic-bezier(0.06, 0.11, 0.6, 1); transform: scaleX(0.66148); } 100% { transform: scaleX(0.08); } } @keyframes secondary-indeterminate-translate { 0% { animation-timing-function: cubic-bezier(0.15, 0, 0.51506, 0.40969); transform: translateX(0); } 25% { animation-timing-function: cubic-bezier(0.31033, 0.28406, 0.8, 0.73371); transform: translateX(37.65191%); } 48.35% { animation-timing-function: cubic-bezier(0.4, 0.62704, 0.6, 0.90203); transform: translateX(84.38617%); } 100% { transform: translateX(160.27778%); } } @keyframes secondary-indeterminate-scale { 0% { animation-timing-function: cubic-bezier(0.20503, 0.05705, 0.57661, 0.45397); transform: scaleX(0.08); } 19.15% { animation-timing-function: cubic-bezier(0.15231, 0.19643, 0.64837, 1.00432); transform: scaleX(0.4571); } 44.15% { animation-timing-function: cubic-bezier(0.25776, -0.00316, 0.21176, 1.38179); transform: scaleX(0.72796); } 100% { transform: scaleX(0.08); } } @keyframes buffering { to { transform: translateX(-10px); } } :host { height: 3px; }