blob: ba167eec138d4c7e35c214f26f9d274da858c02a [file] [log] [blame]
/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file. */
.media-button {
height: 28px;
position: relative;
width: 26px;
}
.media-button > div {
height: 100%;
opacity: 0;
pointer-events: none;
position: absolute;
transition: opacity 100ms linear;
width: 100%;
}
.media-button[state='default']:not(.disabled):not(:hover):not(:active) >
.default.normal,
.media-button[state='default']:not(.disabled):hover > .default.hover,
.media-button[state='default']:not(.disabled):active > .default.active,
.media-button[state='playing']:not(.disabled):not(:hover):not(:active) >
.playing.normal,
.media-button[state='playing']:not(.disabled):hover > .playing.hover,
.media-button[state='playing']:not(.disabled):active > .playing.active,
.media-button[state='ended']:not(.disabled):not(:hover):not(:active) >
.ended.normal,
.media-button[state='ended']:not(.disabled):hover > .ended.hover,
.media-button[state='ended']:not(.disabled):active > .ended.active,
.media-button.disabled > .disabled {
opacity: 1;
}
/* Custom sliders for progress and volume. */
/* Customize the standard input[type='range']. */
.custom-slider > input[type='range'] {
-webkit-appearance: none !important; /* Hide the default thumb icon. */
background: transparent; /* Hide the standard slider bar */
height: 100%;
left: -2px; /* Required to align the input element with the parent. */
outline: none;
position: absolute;
top: -2px;
width: 100%;
}
/* Custom thumb icon. */
.custom-slider > input[type='range']::-webkit-slider-thumb {
-webkit-appearance: none;
background-position: center center;
background-repeat: no-repeat;
height: 24px;
position: relative;
z-index: 2;
}
/* Custom slider bar (we hide the standard one). */
.custom-slider > .bar {
/* In order to match the horizontal position of the standard slider bar
left and right must be equal to 1/2 of the thumb icon width. */
border-bottom-style: solid;
border-top-style: solid;
border-width: 1px;
bottom: 11px;
pointer-events: none; /* Mouse events pass through to the standard input. */
position: absolute;
top: 11px;
}
.custom-slider > .bar > .filled,
.custom-slider > .bar > .cap {
border-style: solid;
border-width: 1px;
bottom: -1px;
position: absolute;
top: -1px;
}
/* The filled portion of the slider bar to the left of the thumb. */
.custom-slider > .bar > .filled {
border-left-style: none;
border-right-style: none;
left: 0;
width: 0; /* The element style.width is manipulated from the code. */
}
/* Rounded caps to the left and right of the slider bar. */
.custom-slider > .bar > .cap {
width: 4px;
}
/* Left cap is always filled, should be the same color as .filled. */
.custom-slider > .bar > .cap.left {
border-bottom-left-radius: 4px;
border-right-style: none;
border-top-left-radius: 4px;
right: 100%;
}
/* Right cap is always not filled. */
.custom-slider > .bar > .cap.right {
border-bottom-right-radius: 4px;
border-left-style: none;
border-top-right-radius: 4px;
left: 100%;
}
.custom-slider > .bar,
.custom-slider > .bar > .cap.right {
background-color: rgba(0, 0, 0, 0.5);
border-color: #808080;
}
.custom-slider > .bar > .filled,
.custom-slider > .bar > .cap.left {
background-image: linear-gradient(#c3c3c3, #d9d9d9);
border-color: #d9d9d9;
}
.custom-slider.disabled > .bar > .filled,
.custom-slider.disabled > .bar > .cap.left {
background-color: rgba(0, 0, 0, 0.5);
background-image: none;
}
.custom-slider.disabled > .bar,
.custom-slider.disabled > .bar > .filled,
.custom-slider.disabled > .bar > .cap {
border-color: #404040;
}
.media-button.disabled,
.custom-slider.disabled,
.custom-slider.readonly {
pointer-events: none;
}
/* Progress seek marker (precise time shown on mouse hover. */
/* Thin vertical line across the slider bar */
.custom-slider > .bar > .seek-mark {
background-color: #202020;
bottom: -1px;
left: 0;
position: absolute;
top: -1px;
width: 0;
}
.custom-slider > .bar > .seek-mark.visible {
width: 1px;
}
.custom-slider > .bar > .seek-mark.inverted {
background-color: #808080;
}
/* Text label giving the precise time corresponding to the hover position. */
.custom-slider > .bar > .seek-mark > .seek-label {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
background: #202020;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
bottom: 19px;
color: white;
display: -webkit-box;
font-size: 13px;
height: 15px;
left: 0;
opacity: 0;
overflow: hidden;
position: absolute;
transition: opacity 150ms ease;
}
.custom-slider > .bar > .seek-mark.visible > .seek-label {
opacity: 1;
}
/* Media controls in order of appearance. */
/* Play/pause button. */
.media-button.play {
margin-left: -7px;
margin-right: -7px;
}
.media-button.play > .default.normal {
background-image: -webkit-image-set(
url('../images/media/media_play.png') 1x,
url('../images/media/2x/media_play.png') 2x);
}
.media-button.play > .default.hover {
background-image: -webkit-image-set(
url('../images/media/media_play_hover.png') 1x,
url('../images/media/2x/media_play_hover.png') 2x);
}
.media-button.play > .default.active {
background-image: -webkit-image-set(
url('../images/media/media_play_down.png') 1x,
url('../images/media/2x/media_play_down.png') 2x);
}
.media-button.play > .playing.normal {
background-image: -webkit-image-set(
url('../images/media/media_pause.png') 1x,
url('../images/media/2x/media_pause.png') 2x);
}
.media-button.play > .playing.hover {
background-image: -webkit-image-set(
url('../images/media/media_pause_hover.png') 1x,
url('../images/media/2x/media_pause_hover.png') 2x);
}
.media-button.play > .playing.active {
background-image: -webkit-image-set(
url('../images/media/media_pause_down.png') 1x,
url('../images/media/2x/media_pause_down.png') 2x);
}
.media-button.play > .ended.normal {
background-image: -webkit-image-set(
url('../images/media/media_loop.png') 1x,
url('../images/media/2x/media_loop.png') 2x);
}
.media-button.play > .ended.hover {
background-image: -webkit-image-set(
url('../images/media/media_loop_hover.png') 1x,
url('../images/media/2x/media_loop_hover.png') 2x);
}
.media-button.play > .ended.active {
background-image: -webkit-image-set(
url('../images/media/media_loop_down.png') 1x,
url('../images/media/2x/media_loop_down.png') 2x);
}
.media-button.play > .disabled {
background-image: -webkit-image-set(
url('../images/media/media_play_disabled.png') 1x,
url('../images/media/2x/media_play_disabled.png') 2x);
}
/* Time controls: a slider and a text time display. */
.time-controls {
-webkit-box-align: center;
-webkit-box-flex: 1;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -webkit-box;
height: 100%;
}
.custom-slider.progress {
-webkit-box-flex: 1;
display: -webkit-box;
height: 100%;
margin-left: -9px; /* Set the margins at the edges of the slider bar. */
margin-right: -9px;
position: relative;
}
.custom-slider.progress > input[type='range']::-webkit-slider-thumb {
background-image: -webkit-image-set(
url('../images/media/media_slider_thumb.png') 1x,
url('../images/media/2x/media_slider_thumb.png') 2x);
width: 28px;
}
.custom-slider.progress > input[type='range']::-webkit-slider-thumb:hover {
background-image: -webkit-image-set(
url('../images/media/media_slider_thumb_hover.png') 1x,
url('../images/media/2x/media_slider_thumb_hover.png') 2x);
}
.custom-slider.progress > input[type='range']::-webkit-slider-thumb:active {
background-image: -webkit-image-set(
url('../images/media/media_slider_thumb_down.png') 1x,
url('../images/media/2x/media_slider_thumb_down.png') 2x);
}
.custom-slider.progress.disabled > input[type='range']::-webkit-slider-thumb {
background-image: none;
}
.custom-slider.progress > .bar {
left: 14px; /* Exactly 1/2 of the thumb width */
right: 14px;
}
/* Time display. */
.time-controls > .time {
cursor: default;
height: 100%;
margin-left: 15px;
position: relative;
}
.time-controls > .time.disabled {
opacity: 0;
}
/* Invisible div used to compute the width required for the elapsed time. */
.time-controls > .time > .duration {
color: transparent;
}
.time-controls > .time > .current {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: end;
color: white;
display: -webkit-box;
height: 100%;
position: absolute;
right: 0;
top: -1px;
}
/* Volume controls: sound button and volume slider */
.volume-controls {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -webkit-box;
height: 100%;
}
/* Sound button */
.media-button.sound {
margin-left: -4px;
width: 31px;
}
.media-button.sound[level='0'] > .normal {
background-image: -webkit-image-set(
url('../images/media/media_sound_disabled.png') 1x,
url('../images/media/2x/media_sound_disabled.png') 2x);
}
.media-button.sound[level='0'] > .hover {
background-image: -webkit-image-set(
url('../images/media/media_sound_disabled_hover.png') 1x,
url('../images/media/2x/media_sound_disabled_hover.png') 2x);
}
.media-button.sound[level='0'] > .active {
background-image: -webkit-image-set(
url('../images/media/media_sound_disabled_down.png') 1x,
url('../images/media/2x/media_sound_disabled_down.png') 2x);
}
.media-button.sound[level='1'] > .normal {
background-image: -webkit-image-set(
url('../images/media/media_sound_level1.png') 1x,
url('../images/media/2x/media_sound_level1.png') 2x);
}
.media-button.sound[level='1'] > .hover {
background-image: -webkit-image-set(
url('../images/media/media_sound_level1_hover.png') 1x,
url('../images/media/2x/media_sound_level1_hover.png') 2x);
}
.media-button.sound[level='1'] > .active {
background-image: -webkit-image-set(
url('../images/media/media_sound_level1_down.png') 1x,
url('../images/media/2x/media_sound_level1_down.png') 2x);
}
.media-button.sound[level='2'] > .normal {
background-image: -webkit-image-set(
url('../images/media/media_sound_level2.png') 1x,
url('../images/media/2x/media_sound_level2.png') 2x);
}
.media-button.sound[level='2'] > .hover {
background-image: -webkit-image-set(
url('../images/media/media_sound_level2_hover.png') 1x,
url('../images/media/2x/media_sound_level2_hover.png') 2x);
}
.media-button.sound[level='2'] > .active {
background-image: -webkit-image-set(
url('../images/media/media_sound_level2_down.png') 1x,
url('../images/media/2x/media_sound_level2_down.png') 2x);
}
.media-button.sound[level='3'] > .normal {
background-image: -webkit-image-set(
url('../images/media/media_sound_full.png') 1x,
url('../images/media/2x/media_sound_full.png') 2x);
}
.media-button.sound[level='3'] > .hover {
background-image: -webkit-image-set(
url('../images/media/media_sound_full_hover.png') 1x,
url('../images/media/2x/media_sound_full_hover.png') 2x);
}
.media-button.sound[level='3'] > .active {
background-image: -webkit-image-set(
url('../images/media/media_sound_full_down.png') 1x,
url('../images/media/2x/media_sound_full_down.png') 2x);
}
.media-button.sound > .disabled {
background-image: -webkit-image-set(
url('../images/media/media_sound_full_disabled.png') 1x,
url('../images/media/2x/media_sound_full_disabled.png') 2x);
}
/* Volume slider. */
.custom-slider.volume {
height: 100%;
margin-left: -4px;
margin-right: -4px;
position: relative;
width: 60px;
}
.custom-slider.volume > input[type='range']::-webkit-slider-thumb {
background-image: -webkit-image-set(
url('../images/media/media_volume_slider_thumb.png') 1x,
url('../images/media/2x/media_volume_slider_thumb.png') 2x);
width: 20px;
}
.custom-slider.volume > input[type='range']::-webkit-slider-thumb:hover {
background-image: -webkit-image-set(
url('../images/media/media_volume_slider_thumb_hover.png') 1x,
url('../images/media/2x/media_volume_slider_thumb_hover.png') 2x);
}
.custom-slider.volume > input[type='range']::-webkit-slider-thumb:active {
background-image: -webkit-image-set(
url('../images/media/media_volume_slider_thumb_down.png') 1x,
url('../images/media/2x/media_volume_slider_thumb_down.png') 2x);
}
.custom-slider.volume.disabled > input[type='range']::-webkit-slider-thumb {
background-image: none;
}
.custom-slider.volume > .bar {
left: 10px; /* Exactly 1/2 of the thumb width */
right: 10px;
}
/* Horizontal video control bar, all controls in a row. */
.video-controls {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
background: #202020;
border-radius: 5px;
display: -webkit-box;
font-size: 15px;
height: 30px;
opacity: 0.8;
padding-left: 15px;
padding-right: 15px;
pointer-events: auto;
}
.video-controls .time-controls,
.video-controls .volume-controls {
margin-left: 15px;
}
/* Fullscreen button. */
/* There is no final decision whether we need a separate icon when toggled. */
.media-button.fullscreen {
margin-left: 9px; /* 15px visible margin - 6px whitespace in the icon. */
margin-right: -6px;
}
.media-button.fullscreen > .normal {
background-image: -webkit-image-set(
url('../images/media/media_fullscreen.png') 1x,
url('../images/media/2x/media_fullscreen.png') 2x);
}
.media-button.fullscreen > .hover {
background-image: -webkit-image-set(
url('../images/media/media_fullscreen_hover.png') 1x,
url('../images/media/2x/media_fullscreen_hover.png') 2x);
}
.media-button.fullscreen > .active {
background-image: -webkit-image-set(
url('../images/media/media_fullscreen_down.png') 1x,
url('../images/media/2x/media_fullscreen_down.png') 2x);
}
.media-button.fullscreen > .disabled {
background-image: -webkit-image-set(
url('../images/media/media_fullscreen_disabled.png') 1x,
url('../images/media/2x/media_fullscreen_disabled.png') 2x);
}
.playback-state-icon {
background-color: #202020;
background-position: center center;
background-repeat: no-repeat;
border-radius: 2.5px;
height: 32px;
left: 50%;
margin-left: -16px;
margin-top: -16px;
opacity: 0;
pointer-events: none;
position: absolute;
top: 50%;
width: 32px;
z-index: 2;
}
.text-banner {
background-color: black;
border-radius: 10px;
color: white;
font-size: 18px;
left: 50%;
margin-left: -250px;
opacity: 0;
padding: 10px;
pointer-events: none;
position: absolute;
text-align: center;
text-shadow: 0 0 10px black;
top: 20%;
width: 500px;
z-index: 2;
}
.text-banner[visible] {
-webkit-animation: text-banner-blowup 3000ms;
}
.playback-state-icon[state] {
-webkit-animation: blowup 500ms;
}
@-webkit-keyframes blowup {
from {
opacity: 1;
}
to {
-webkit-transform: scale(3);
opacity: 0;
}
}
@-webkit-keyframes text-banner-blowup {
from {
-webkit-transform: scale(0.5);
opacity: 0;
}
20% {
-webkit-transform: scale(1);
opacity: 0.75;
}
80% {
-webkit-transform: scale(1);
opacity: 0.75;
}
to {
-webkit-transform: scale(3);
opacity: 0;
}
}
.playback-state-icon[state='play'] {
background-image: -webkit-image-set(
url('../images/media/media_play.png') 1x,
url('../images/media/2x/media_play.png') 2x);
}
.playback-state-icon[state='pause'] {
background-image: -webkit-image-set(
url('../images/media/media_pause.png') 1x,
url('../images/media/2x/media_pause.png') 2x);
}