зеркало из https://github.com/mozilla/gecko-dev.git
205 строки
6.1 KiB
CSS
205 строки
6.1 KiB
CSS
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/*** Status and progress indicator ***/
|
|
|
|
#downloads-indicator-anchor {
|
|
min-width: 16px;
|
|
min-height: 16px;
|
|
}
|
|
|
|
#downloads-indicator-progress-outer {
|
|
width: 16px;
|
|
height: 16px;
|
|
background-size: 16px;
|
|
background: url("chrome://browser/skin/downloads/download-icons.svg#default-bar") center no-repeat;
|
|
}
|
|
|
|
#downloads-button[attention="success"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-icon,
|
|
#downloads-button[attention="success"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-progress-outer {
|
|
-moz-context-properties: fill, fill-opacity;
|
|
fill: var(--toolbarbutton-icon-fill-attention);
|
|
fill-opacity: 1;
|
|
}
|
|
#downloads-button[progress] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-progress-outer {
|
|
background: url("chrome://browser/skin/downloads/download-icons.svg#progress-bar-bg") center no-repeat;
|
|
}
|
|
|
|
#downloads-indicator-icon {
|
|
-moz-context-properties: fill, fill-opacity;
|
|
background-image: url("chrome://browser/skin/downloads/download-icons.svg#arrow");
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
#downloads-indicator-progress-inner {
|
|
background: url("chrome://browser/skin/downloads/download-icons.svg#progress-bar-fg") left no-repeat;
|
|
margin-right: 16px;
|
|
-moz-context-properties: fill;
|
|
fill: var(--toolbarbutton-icon-fill-attention);
|
|
background-size: 16px;
|
|
/* From javascript side we use animation delay from 0s to -100s to show
|
|
* corresponding frames needed for progress.
|
|
* animation-delay is set to a positive value to make nothing shown.
|
|
*/
|
|
animation-play-state: paused;
|
|
animation-delay: 1s;
|
|
animation-duration: 100s;
|
|
animation-timing-function: linear;
|
|
animation-name: indicatorArrowProgress;
|
|
}
|
|
|
|
#downloads-indicator-progress-inner:-moz-locale-dir(rtl) {
|
|
background-position: right;
|
|
animation-name: indicatorArrowProgressRTL;
|
|
margin-left: 16px;
|
|
margin-right: 0;
|
|
}
|
|
|
|
@keyframes indicatorArrowProgress {
|
|
0% {
|
|
margin-right: 15px;
|
|
}
|
|
100% {
|
|
margin-right: 1px;
|
|
}
|
|
}
|
|
|
|
@keyframes indicatorArrowProgressRTL {
|
|
0% {
|
|
margin-left: 15px;
|
|
}
|
|
100% {
|
|
margin-left: 1px;
|
|
}
|
|
}
|
|
|
|
/*** Status badges ***/
|
|
|
|
#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
|
|
#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
|
|
display: -moz-box;
|
|
height: 8px;
|
|
width: 8px;
|
|
min-width: 0;
|
|
border-radius: 50%;
|
|
/* "!important" is necessary to override the rule in toolbarbutton.css */
|
|
margin-top: -1px !important;
|
|
margin-right: -2px !important;
|
|
}
|
|
|
|
#downloads-button[cui-areatype="toolbar"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
|
|
height: 7px;
|
|
width: 7px;
|
|
}
|
|
|
|
#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
|
|
background: #D90000;
|
|
}
|
|
|
|
#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
|
|
background: #FFBF00;
|
|
}
|
|
|
|
#downloads-button[attention="severe"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive,
|
|
#downloads-button[attention="warning"] > .toolbarbutton-badge-stack > .toolbarbutton-badge:-moz-window-inactive {
|
|
filter: none;
|
|
}
|
|
|
|
/*** Download notifications ***/
|
|
|
|
#downloads-button[notification="start"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-icon {
|
|
animation-name: downloadsIndicatorStartDip;
|
|
/* Upon changing the duration_delay below, please keep the delay time of
|
|
setTimeout() identical in indicator.js for this animation.
|
|
|
|
Timing here needs to align with the animation on #downloads-indicator-notification
|
|
*/
|
|
animation-duration: 360ms;
|
|
animation-delay: 400ms;
|
|
animation-iteration-count: 1;
|
|
}
|
|
|
|
@keyframes downloadsIndicatorStartDip {
|
|
0% {
|
|
transform: translateY(0);
|
|
animation-timing-function: linear;
|
|
}
|
|
50% {
|
|
transform: translateY(0);
|
|
animation-timing-function: ease-out;
|
|
}
|
|
88% {
|
|
transform: translateY(3px);
|
|
animation-timing-function: ease-out;
|
|
}
|
|
100% {
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes downloadsIndicatorFinishPulse {
|
|
from { transform: scale(1); }
|
|
37.5% { transform: scale(1.4); animation-timing-function: ease-out; }
|
|
to { transform: scale(1); animation-timing-function: ease-in; }
|
|
}
|
|
|
|
#downloads-button[notification="finish"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-icon {
|
|
animation-name: downloadsIndicatorFinishPulse;
|
|
animation-delay: 250ms;
|
|
animation-duration: 300ms;
|
|
animation-iteration-count: 2;
|
|
}
|
|
|
|
#downloads-animation-container {
|
|
min-height: 1px;
|
|
min-width: 1px;
|
|
height: 1px;
|
|
margin-bottom: -1px;
|
|
/* Makes the outermost animation container element positioned, so that its
|
|
contents are rendered over the main browser window in the Z order.
|
|
This is required by the animated event notification. */
|
|
position: relative;
|
|
/* The selected tab may overlap #downloads-indicator-notification */
|
|
z-index: 5;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* download start animation */
|
|
|
|
#downloads-notification-anchor {
|
|
width: 42px; /* Width of each frame within the SVG sprite */
|
|
height: 98px; /* Height of each frame within the SVG sprite */
|
|
overflow: hidden;
|
|
/* animation is not directional and shouldn't be reversed in RTL */
|
|
direction: ltr;
|
|
}
|
|
|
|
#downloads-indicator-notification {
|
|
opacity: 0;
|
|
min-width: 1344px;
|
|
height: 98px; /* Height is equal to height of each frame in the SVG animation */
|
|
-moz-context-properties: fill;
|
|
fill: #737373;
|
|
}
|
|
|
|
@keyframes downloadsIndicatorNotificationStart {
|
|
from {
|
|
transform: translateX(0);
|
|
}
|
|
to {
|
|
transform: translateX(-1302px);
|
|
}
|
|
}
|
|
|
|
#downloads-notification-anchor[notification="start"] > #downloads-indicator-notification {
|
|
opacity: 1;
|
|
background: url("chrome://browser/skin/downloads/notification-start-animation.svg") 0 center no-repeat;
|
|
transform: translateX(0px);
|
|
animation-name: downloadsIndicatorNotificationStart;
|
|
animation-duration: 540ms;
|
|
animation-delay: 64ms;
|
|
animation-timing-function: steps(31);
|
|
}
|