ovenplayer
Version:
OvenPlayer is Open-Source HTML5 Player. OvenPlayer supports WebRTC Signaling from OvenMediaEngine for Sub-Second Latency Streaming.
1,984 lines (1,638 loc) • 36.5 kB
text/less
@charset "UTF-8";
/**
* @brief Animation
* */
@keyframes op-spinner {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@-webkit-keyframes op-slideOutDown {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
@keyframes op-slideOutDown {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
@-webkit-keyframes op-slideInUp {
from {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
opacity: 1;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes op-slideInUp {
from {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
opacity: 1;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@font-face {
font-family: "frameIcon";
src: url("../assets/images/ic-player-frame-jump.ttf?rxg7gj") format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'op-icons';
src: url('../assets/fonts/fontello.ttf?13010392') format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'op-seek-icons';
src: url('../assets/fonts/seek-icons.ttf?13010392') format('truetype');
font-weight: normal;
font-style: normal;
}
/**
* @brief common style
* */
:root {
--op-accent-color: #50e3c2;
}
.op-fullscreen-helper {
overflow: hidden;
// for preventing scroll on iOS
position: fixed;
}
.op-wrapper.ovenplayer {
position: relative;
max-height: 100%;
overflow: hidden;
zoom: 1 ;
width: 100%;
display: block;
font-family: Helvetica, Arial, sans-serif;
background-color: #000;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
font-size: 14px;
font-weight: 100;
outline: 0;
-webkit-touch-callout: none;
user-select: none;
* {
box-sizing: inherit;
}
object {
width: 100%;
height: 100%;
position: absolute;
}
&:before,
&:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
& *,
& *:before,
& *:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
&.op-fullscreen {
width: 100vw ;
height: 100vh ;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 9999;
margin: 0;
position: fixed;
.op-watermark-container,
.op-thumbnail-container {
width: 100vw;
max-width: calc(100vh * 16 / 9);
height: calc(100vw * 9 / 16);
max-height: 100vh;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
&.op-autohide {
cursor: none;
.op-bottom-panel {
-webkit-animation-name: op-slideOutDown;
animation-name: op-slideOutDown;
-webkit-animation-duration: 0.2s;
animation-duration: 0.2s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.op-progressbar-container,
.op-controls .op-button {
cursor: none;
}
.op-caption-text-container {
bottom: 25px;
}
}
&.op-no-controls {
.op-controls-container {
display: none ;
}
}
.op-ratio {
padding-bottom: 56.25%;
/*16:9*/
}
& ::-webkit-scrollbar {
width: 5px;
height: 8px;
}
& ::-webkit-scrollbar-button:start:decrement,
::-webkit-scrollbar-button:end:increment {
display: block;
height: 3px;
background: #2f2f3e;
}
& ::-webkit-scrollbar-track {
background: #2f2f3e;
-webkit-border-radius: 10px;
border-radius: 10px;
}
& ::-webkit-scrollbar-thumb {
height: 50px;
width: 50px;
background: #606071;
-webkit-border-radius: 8px;
border-radius: 8px;
}
.op-clear {
color: inherit;
background-color: transparent;
padding: 0;
margin: 0;
float: none;
font-family: Helvetica, Arial, sans-serif;
font-size: 1em;
line-height: 1em;
list-style: none;
text-transform: none;
vertical-align: baseline;
border: 0;
font-variant: inherit;
font-stretch: inherit;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
}
}
.op-player {
position: absolute;
top: 0;
height: 100%;
width: 100%;
.op-core-ui-wrapper {
position: relative;
height: 100%;
}
.op-media-element-container {
/* display: block;
height: 100%;
width: auto;
position : relative;*/
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
transform: scale(var(--mediaZoom));
video {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
object {
width: 100%;
height: 100%;
}
}
.op-ui {
/*position : absolute;
bottom : 0px;
left : 0px;
width: 100%;
height: 100%;*/
.op-controls-container {}
.op-helpers-container {}
}
}
.op-ads {
position: absolute;
height: 100%;
width: 100%;
padding-bottom: 34px;
//pointer-events: none;
top: 0;
&>div {
position: absolute ;
width: 100% ;
height: 100% ;
iframe {
pointer-events: auto;
}
}
video.op-ads-vast-video {
background-color: rgb(0, 0, 0);
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
z-index: 1;
}
.op-ads-button {
bottom: 36px;
cursor: default;
margin-right: 4px;
pointer-events: auto;
position: absolute;
right: 0;
z-index: 1;
width: auto ;
height: auto ;
border-radius: 4px;
background-color: rgba(18, 18, 28, 0.7);
min-width: 155px;
display: none;
.op-ads-textview {
color: #e6e6e6;
//font-family: arial,sans-serif;
font-weight: normal;
font-size: 11px;
padding: 6px 12px;
text-align: center;
display: inline-block;
width: 100%;
vertical-align: middle;
}
.videoAdUiAction {
padding: 8px 24px;
cursor: pointer;
direction: ltr;
font-weight: normal;
font-size: 20px;
border: 1px solid rgba(255, 255, 255, 0.5);
&:hover {
border-radius: 4px;
border: 1px solid rgba(255, 255, 255, 1);
}
i {
display: inline-block;
width: auto;
}
}
}
}
/**
* @brief common components
* */
.op-button {
display: inline-block;
border: none;
background: transparent;
padding: 0;
color: inherit;
text-align: inherit;
overflow: hidden;
font-weight: 100;
text-indent: 0 ;
&:focus,
& {
outline: 0;
}
}
i.op-con {
font-family: "op-icons", "op-seek-icons";
font-style: normal;
font-weight: normal;
speak: none;
font-size: inherit;
width: auto;
font-size: 30px;
line-height: 30px;
display: block;
text-decoration: inherit;
text-align: center;
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* Font smoothing. That was taken from TWBS */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
cursor: pointer;
&.disable {
color: #4f4f4f;
}
&.op-close-icon {
&::before {
content: "\e900";
}
}
&.op-pause-big {
&::before {
content: "\e911";
}
}
&.op-fullscreen-compress {
&::before {
content: "\e901";
}
}
&.op-fullscreen-expand {
&::before {
content: "\e902";
}
}
&.op-arrow-left {
&::before {
content: "\e903";
}
}
&.op-arrow-right {
&::before {
content: "\e909";
}
}
&.op-empty-video {
&::before {
content: "\e904";
}
}
&.op-play {
&::before {
content: "\e906";
}
}
&.op-replay {
&::before {
content: "\e908";
}
}
&.op-seek-back {
&::before {
content: "\e920";
}
}
&.op-seek-forward {
&::before {
content: "\e921";
}
}
&.op-playlist-icon {
&::before {
content: "\e907";
}
}
&.op-replay-big {
&::before {
content: "\e908";
}
}
&.op-setting {
&::before {
content: "\e90A";
}
}
&.op-pause {
&::before {
content: "\e90C";
}
}
&.op-volume-small {
display: none;
margin-top: -1px;
&::before {
content: "\e90D";
}
}
&.op-volume-mute {
display: none;
&::before {
content: "\e90E";
}
}
&.op-volume-max {
&::before {
content: "\e90F";
}
}
&.op-play-big {
&::before {
content: "\e910";
}
}
&.op-warning {
&::before {
content: "\e912";
}
}
}
.op-badge {
display: inline-block;
padding: .75em .714em .714em .680em;
font-size: 1em;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.286em;
background-color: #12121c;
}
.op-playlist {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
padding: 2.857em;
background: #000;
z-index: 6;
.op-badge {
position: absolute;
top: 0.857em;
right: 0.857em;
opacity: 0.7;
}
.btn-left {
float: left;
font-size: 2.857em;
}
.btn-right {
float: right;
font-size: 2.857em;
}
.op-playlist-header {
font-size: 2.857em;
font-weight: bold;
&:after {
display: block;
content: '';
clear: both;
}
.op-con.op-close-icon {
float: right;
}
}
.op-playlist-body {
height: 100%;
overflow: hidden;
position: relative;
.op-playlist-body-arrows {
margin-top: -15px;
position: absolute;
top: 50%;
height: 30px;
-ms-transform: translateY(-50%);
transform: translateY(-50%);
width: 100%;
left: 0;
}
.op-playlist-body-container {
width: 100%;
height: 100%;
position: relative;
margin-right: auto;
margin-left: auto;
max-width: 992px;
.op-playlist-body-center {
margin: 0;
position: absolute;
top: 50%;
padding-right: 3em;
padding-left: 3em;
-ms-transform: translateY(-50%);
transform: translateY(-50%);
width: 100%;
}
}
.op-playlist-body-row {
margin-right: -15px;
margin-left: -15px;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
.op-playlist-card {
padding-right: 15px;
padding-left: 15px;
margin: 15px 0;
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
cursor: pointer;
&.active {
color: #50e3c2;
color: var(--op-accent-color);
.op-playlist-card-thumbnail {
border-color: #50e3c2;
border-color: var(--op-accent-color);
}
}
.op-playlist-card-thumbnail {
position: relative;
display: block;
width: 100%;
padding: 0;
overflow: hidden;
border: 0.214em solid transparent;
background-color: #000;
img {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
&.empty {
background-color: #bababa;
&>i {
margin: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #fff ;
font-size: 1.6em ;
}
}
&::before {
padding-top: 56.25%;
display: block;
content: "";
}
}
.op-playlist-card-title {
margin-top: 0.857em;
font-size: 1.429em;
padding: 2px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
}
/**
* @brief Message Box
* */
.op-message-box {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 4;
.op-message-container {
position: absolute;
top: 45%;
margin-top: -35px;
width: 100%;
padding: 0 12px;
text-align: center;
.op-message-text {
display: inline-block;
background-color: rgba(18, 18, 28, .3);
padding: 0.8em 1.2em;
word-wrap: break-word;
max-width: 80%;
border-radius: 4px;
cursor: pointer;
.op-message-description {
font-size: 12px;
margin-top: 12px;
color: #999;
}
}
.op-message-icon {
display: inline-block;
margin-top: 12px;
width: 100%;
i.op-con {
cursor: pointer;
font-size: 80px;
width: 80px;
height: 80px;
line-height: 80px;
display: inline-block;
text-shadow: 2px 2px 7px rgb(0 0 0 / 80%), 0px 0px 1px rgb(0 0 0);
}
}
/*.op-message-button{
display: inline-block;
padding : 1em;
margin-left : 0.4em;
background-color: rgba(28,28,28,.4);
cursor : pointer;
}*/
}
}
.op-message-box.op-message-box-default-cursor .op-message-container .op-message-text {
cursor: default;
}
.op-message-box.op-message-box-default-cursor .op-message-container .op-message-icon i.op-con {
cursor: default;
}
/**
* @brief Big button
* */
.op-bigbutton-container {
cursor: pointer;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
z-index: 5;
.op-bigbutton {
width: 80px;
height: 80px;
display: block;
font-size: 80px;
line-height: 80px;
text-shadow: 2px 2px 7px rgb(0 0 0 / 80%), 0px 0px 1px rgb(0 0 0);
}
}
/**
* @brief Thumbnail
* */
.op-thumbnail-container {
position: absolute;
width: 100%;
height: 100%;
//padding-bottom: 56.25%;
top: 0;
left: 0;
//transform: translate(-50%, -50%);
z-index: 2;
pointer-events: none;
.op-thumbnail-wrapper {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
img {
width: 100%;
height: 100%;
}
.op-thumbnail-header {
position: absolute;
left: 1rem;
top: 1rem;
padding: 0 0.5rem;
font-size: 2.857em;
font-weight: bold;
line-height: 1.4;
text-shadow: 2px 2px 7px rgb(0 0 0 / 80%), 0px 0px 1px rgb(0 0 0);
&:after {
display: block;
content: '';
clear: both;
}
}
}
}
/**
* @brief WaterMark
* */
.op-watermark-container {
position: absolute;
width: 100%;
height: 100%;
//padding-bottom: 56.25%;
top: 0;
left: 0;
//transform: translate(-50%, -50%);
z-index: 3;
.op-watermark {
position: absolute;
display: inline-block;
img {
width: 100%;
height: auto;
}
.op-watermark-text {
font-size: 14px;
}
}
}
/**
* @brief Setting panel
* */
.op-setting-panel {
position: absolute;
bottom: 55px;
right: 12px;
overflow-y: auto;
max-height: 100%;
width: 260px;
//font-size: 0.8em;
user-select: none;
background-color: rgba(28, 28, 28, .9);
text-shadow: 0 0 2px rgba(0, 0, 0, .5);
z-index: 8;
&.background {
//opacity: 0;
//background-color: rgba(28,28,28,.0);
display: none;
}
.op-setting-title,
.op-setting-item {
width: 100%;
height: 38px;
line-height: 38px;
cursor: pointer;
outline: none;
text-align: left;
}
.op-setting-title-container {
.op-setting-title {
.op-setting-title-title {
padding-left: 12px;
font-weight: bold;
//font-size: 0.9rem;
}
.op-setting-title-previcon {
padding: 0 0 0 12px;
margin-right: -6px;
}
}
}
.op-setting-item-container {
.op-setting-item {
&:hover {
background-color: rgba(255, 255, 255, .1);
}
.op-setting-item-title {
padding-left: 12px;
}
.op-setting-item-nexticon {
float: right;
padding-right: 12px;
margin-left: -6px;
}
span.op-setting-item-value {
float: right;
padding-right: 12px;
}
.op-setting-item-checked {
padding-left: 12px;
visibility: hidden;
}
.op-setting-item-checked.op-show {
visibility: visible;
}
}
}
}
/**
* @brief Controls (container)
* */
.op-controls-container {
display: none;
.op-bottom-panel {
position: absolute;
left: 0px;
bottom: 0px;
width: 100%;
z-index: 5;
.op-gradient-bottom {
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(18, 18, 18, 0.5);
pointer-events: none;
/*-moz-transition: opacity .25s cubic-bezier(0.0,0.0,0.2,1);
-webkit-transition: opacity .25s cubic-bezier(0.0,0.0,0.2,1);
transition: opacity .25s cubic-bezier(0.0,0.0,0.2,1);*/
}
-webkit-animation-name: op-slideInUp;
animation-name: op-slideInUp;
-webkit-animation-duration: 0.5s;
animation-duration: 0.5s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
.op-progressbar-container {
display: block;
position: relative;
width: 100%;
height: 4px;
bottom: 50px;
&.op-progressbar-container-disabled {
cursor: default;
}
.op-progressbar-padding {
position: absolute;
width: 100%;
height: 15px;
bottom: -5px;
cursor: pointer;
}
}
/*contols container*/
.op-controls {
position: relative;
width: 100%;
height: 50px;
text-align: left;
overflow: hidden;
&:after {
content: '';
clear: both;
}
.op-setting-button {
position: relative;
margin-right: 12px;
}
.op-playlist-button {
position: relative;
margin-right: 12px;
}
.op-navigators {
float: left;
height: 30px;
line-height: 30px;
}
.op-left-controls {
position: absolute;
top: 0;
left: 0;
padding: 14px 0 10px 0;
&:after {
content: '';
clear: both;
}
}
.op-right-controls {
position: absolute;
top: 0;
right: 0;
padding: 14px 0 10px 0;
&:after {
content: '';
clear: both;
}
}
/*maybe not use*/
.op-frame-buttons {
position: relative;
display: inline-block;
margin-left: 14px;
overflow: hidden;
font-weight: 100;
height: 30px;
.op-frame-button {
margin-right: 6px;
position: relative;
text-align: center;
color: #fff;
.frame-icon {
position: relative;
&.reverse {
&:after {
content: '\e900';
}
}
&:after {
font-family: 'frameIcon' ;
speak: none;
content: '\e901';
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
position: absolute;
font-size: 2.4em;
left: 0;
line-height: 30px;
height: 30px;
}
.btn-text {
font-weight: bold;
font-size: 0.8em;
line-height: 30px;
height: 30px;
}
}
}
}
}
}
}
/**
* @brief Progressbar
* */
.op-progressbar {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
outline: none;
margin-top: 10px;
.op-play-background-color {
background-color: #50e3c2; // for ie 11
background-color: var(--op-accent-color);
}
.op-progress-list {
cursor: pointer;
position: relative;
height: 100%;
background: rgba(255, 255, 255, 0.2);
.op-load-progress,
.op-play-progress,
.op-hover-progress {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
}
.op-play-progress {
width: 0;
}
.op-load-progress {
width: 0;
background-color: rgba(255, 255, 255, .5);
}
.op-hover-progress {
left: 0;
width: 0;
background-color: rgba(255, 255, 255, .6);
}
}
.op-progressbar-knob-container {
position: absolute;
top: -5px;
left: 0;
.op-progressbar-knob {
width: 14px;
height: 14px;
border-radius: 7px;
cursor: pointer;
}
}
.op-progressbar-time {
display: none;
position: absolute;
bottom: 15px;
left: auto;
width: auto;
background-color: rgba(28, 28, 28, 0.9);
border-radius: 2px;
padding: 5px 9px;
font-size: 0.8em;
line-height: 15px;
user-select: none;
white-space: nowrap;
opacity: 0.7;
}
}
.op-progressbar-hover .op-progressbar-time {
display: inline-block;
}
.op-on-error .op-progressbar-time {
display: none;
}
.op-progressbar-section-start,
.op-progressbar-section-end {
display: none;
position: absolute;
width: 3px;
height: 14px;
bottom: -5px;
background-color: #50e3c2;
background-color: var(--op-accent-color);
}
.op-progressbar-preview {
position: absolute;
display: none;
bottom: 50px;
border: 2px solid #fff;
border-radius: 2px;
background-color: #000;
z-index: 9;
}
.op-play-controller {
margin-left: 15px;
}
/**
* @brief Seek button
* */
.op-seek-button {
//display: none;
position: relative;
top: 0px;
&.op-seek-button-back {
margin-left: 12px;
}
&.op-seek-button-forward {
margin-left: 6px;
}
i {
padding-top: 1px;
font-size: 26px;
}
span {
position: absolute;
top: 10.5px;
left: 0;
right: 0;
text-align: center;
font-size: 10px;
line-height: 10px;
cursor: pointer;
}
}
/**
* @brief Volume button
* */
.op-volume-controller {
display: inline-block;
position: relative;
margin-left: 12px;
&:after {
content: '';
clear: both;
}
.op-volume-button {
float: left;
}
@-webkit-keyframes slide {
100% {
left: 0;
}
}
@keyframes slide {
100% {
left: 0;
}
}
.op-volume-slider-container {
/*display: inline-block;*/
float: left;
opacity: 0;
position: relative;
width: 0px;
margin-right: 0;
line-height: 30px;
height: 30px;
cursor: pointer;
user-select: none;
outline: none;
&.active {
width: 70px;
opacity: 1;
margin-left: 8px;
-moz-transition: opacity .4s cubic-bezier(0.0, 0.0, 0.2, 1);
-webkit-transition: opacity .4s cubic-bezier(0.0, 0.0, 0.2, 1);
transition: opacity .4s cubic-bezier(0.0, 0.0, 0.2, 1);
}
.op-volume-silder {
height: 100%;
position: relative;
.op-volume-slider-bg,
.op-volume-slider-value {
position: absolute;
display: block;
left: 0;
top: 50%;
height: 4px;
margin-top: -2px;
border-radius: 10px;
}
.op-volume-slider-bg {
width: 100%;
background: #fff;
}
.op-volume-slider-value {
width: 100%;
background: #50e3c2;
background: var(--op-accent-color);
border-radius: 10px 0 0 10px;
//-moz-transition: width .2s cubic-bezier(0.0,0.0,0.2,1);
//-webkit-transition: width .2s cubic-bezier(0.0,0.0,0.2,1);
//transition: width .2s cubic-bezier(0.0,0.0,0.2,1);
}
.op-volume-slider-handle {
position: absolute;
top: 50%;
left: 30px;
width: 12px;
height: 12px;
border-radius: 10px;
margin-top: -6px;
background: #fff;
//-moz-transition: left .2s cubic-bezier(0.0,0.0,0.2,1);
//-webkit-transition: left .2s cubic-bezier(0.0,0.0,0.2,1);
//transition: left .2s cubic-bezier(0.0,0.0,0.2,1);
}
}
}
}
/**
* @brief Time Display
* */
.op-time-display {
float: left;
position: relative;
margin-left: 14px;
height: 30px;
line-height: 30px;
white-space: nowrap;
vertical-align: top;
font-size: 14px;
user-select: none;
/*흠 이부분 어떻게 처리하지*/
.op-time-current,
.op-time-separator,
.op-time-duration {}
.op-live-badge {
opacity: 1;
width: auto;
display: inline-block;
&:before {
background: #ff0000;
display: inline-block;
position: relative;
top: -2px;
width: 6px;
height: 6px;
margin-right: 5px;
content: '';
border-radius: 6px;
}
&.op-live-badge-delayed:before {
background: #fff;
}
&.op-live-badge-none:before {
display: none;
}
.op-live-badge-lowlatency {
display: inline-block;
margin-right: 5px;
}
.op-live-text {
cursor: pointer;
}
}
}
/**
* @brief Context Panel
* */
.op-context-panel {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
display: block;
position: absolute;
overflow: hidden;
width: 200px;
padding: 6px 0;
z-index: 8;
background: rgba(28, 28, 28, 0.9);
text-shadow: 0 0 2px rgba(0, 0, 0, .5);
font-weight: lighter;
user-select: none;
&:before,
&:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
& *,
& *:before,
& *:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.op-context-item {
width: 100%;
height: 38px;
padding-left: 12px;
line-height: 38px;
cursor: pointer;
outline: none;
font-size: 0.8em;
font-weight: lighter;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
&:hover {
background-color: rgba(255, 255, 255, .1);
}
}
}
/**
* @brief FullScreen button
* */
.op-fullscreen-button {
position: relative;
margin-right: 15px;
.op-fullscreen-compress {
display: none;
}
}
/**
* @brief spinner
* */
.op-spinner-container {
position: absolute;
top: 50%;
width: 64px;
left: 50%;
margin-left: -32px;
margin-top: -32px;
z-index: 7;
display: none;
.op-spinner {
display: inline-block;
position: relative;
width: 64px;
height: 64px;
border: 4px solid transparent;
border-top: 4px solid #50e3c2;
border-top: 4px solid var(--op-accent-color);
border-radius: 50%;
animation: spin 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
}
}
/**
* @brief caption.
* */
.op-caption-viewer {
.op-caption-text-container {
position: absolute;
bottom: 60px;
width: 100%;
padding: 0 12px;
text-align: center;
-moz-transition: bottom .25s cubic-bezier(0.0, 0.0, 0.2, 1);
-webkit-transition: bottom .25s cubic-bezier(0.0, 0.0, 0.2, 1);
transition: bottom .25s cubic-bezier(0.0, 0.0, 0.2, 1);
.op-caption-text {
color: #fff;
font-size: 1em;
line-height: 1.2em;
text-shadow: 2px 2px 2px gray;
padding: .1em .3em;
user-select: none;
word-break: break-word;
white-space: pre-line;
border: none;
background: none;
}
}
}
.op-caption-button {
width: 36px;
}
.op-caption-button>i {
font-size: 18px;
-moz-transition: color .25s cubic-bezier(0.0, 0.0, 0.2, 1);
-webkit-transition: color .25s cubic-bezier(0.0, 0.0, 0.2, 1);
transition: color .25s cubic-bezier(0.0, 0.0, 0.2, 1);
}
.op-caption-active .op-caption-button>i {
color: #F36446;
}
/*Responsive */
.op-wrapper.ovenplayer.large {
font-size: 14px;
.op-caption-text {
font-size: 2em;
line-height: 2em;
}
}
.op-wrapper.ovenplayer.medium {
font-size: 12px;
.op-caption-text {
font-size: 1.4em;
line-height: 1.4em;
}
}
.op-wrapper.ovenplayer.small {
font-size: 10px;
.op-caption-text {
font-size: 1.4em;
line-height: 1.4em;
}
.op-playlist {
padding: 1rem;
.op-playlist-card {
margin: 5px 0;
}
}
}
.op-wrapper.ovenplayer.xsmall {
font-size: 10px;
.op-bigbutton-container {
.op-bigbutton {
width: 60px;
height: 60px;
font-size: 60px;
line-height: 60px;
}
}
.op-caption-text {
font-size: 1.4em;
line-height: 1.4em;
}
.op-playlist {
padding: 1rem;
.op-playlist-header {
font-size: 2em;
}
.op-playlist-card {
margin: 5px 0;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
padding: 0 6em;
.op-playlist-card-title {
margin-top: 0;
}
}
}
.op-message-box {
.op-message-container {
top: 50%;
font-weight: bold;
.op-message-icon {
margin-top: 0;
.op-con {
font-size: 40px;
width: 40px;
height: 40px;
line-height: 40px;
}
}
}
}
.op-ads-button {
bottom: 22px;
.videoAdUiAction {
padding: 4px;
font-size: 14px;
}
}
}
.op-wrapper.ovenplayer.xxsmall {
.op-left-controls {
max-width: 240px; // for small layout
overflow: hidden; // for small layout
}
.op-live-badge-lowlatency {
max-width: 75px;
}
}
/*AD MODE*/
.op-wrapper.ovenplayer.linear-ad {
.op-bottom-panel {
height: 34px;
.op-controls {
top: 4px;
.op-left-controls {
height: 30px;
padding: 0;
}
.op-right-controls {
height: 30px;
padding: 0;
}
}
}
.op-ads {
top: 0;
bottom: 0;
}
.op-button {
i.op-con {
width: 24px;
height: 24px;
font-size: 24px;
}
}
.op-right-controls {
.op-button {
//margin-top: -2px;
}
}
.op-controls-container .op-bottom-panel .op-progressbar-container {
bottom: 50px;
}
}
/**
* @brief Animation
* */
.op-player {
@keyframes fade {
from {
opacity: 0.3;
}
/*5% { opacity: 0.3; }*/
/*40% { opacity: 1; }*/
/*50% { opacity: 1; }*/
55% {
opacity: 1;
}
75% {
opacity: 1;
}
to {
opacity: 0.3;
}
}
@-webkit-keyframes bounceIn {
from,
20%,
40%,
60%,
80%,
to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: scale3d(0.5, 0.5, 0.5);
transform: scale3d(0.5, 0.5, 0.5);
}
20% {
-webkit-transform: scale3d(1.1, 1.1, 1.1);
transform: scale3d(1.1, 1.1, 1.1);
}
40% {
-webkit-transform: scale3d(0.9, 0.9, 0.9);
transform: scale3d(0.9, 0.9, 0.9);
}
60% {
opacity: 1;
-webkit-transform: scale3d(1.03, 1.03, 1.03);
transform: scale3d(1.03, 1.03, 1.03);
}
80% {
-webkit-transform: scale3d(0.97, 0.97, 0.97);
transform: scale3d(0.97, 0.97, 0.97);
}
to {
opacity: 1;
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
@keyframes bounceIn {
from,
20%,
40%,
60%,
80%,
to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
20% {
-webkit-transform: scale3d(1.1, 1.1, 1.1);
transform: scale3d(1.1, 1.1, 1.1);
}
40% {
-webkit-transform: scale3d(0.9, 0.9, 0.9);
transform: scale3d(0.9, 0.9, 0.9);
}
60% {
opacity: 1;
-webkit-transform: scale3d(1.03, 1.03, 1.03);
transform: scale3d(1.03, 1.03, 1.03);
}
80% {
-webkit-transform: scale3d(0.97, 0.97, 0.97);
transform: scale3d(0.97, 0.97, 0.97);
}
to {
opacity: 1;
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
.bounceIn {
-webkit-animation-duration: 0.75s;
animation-duration: 0.75s;
-webkit-animation-name: bounceIn;
animation-name: bounceIn;
}
@-webkit-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fadeIn {
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
@media (prefers-reduced-motion) {
.animated {
-webkit-animation: unset ;
animation: unset ;
-webkit-transition: none ;
transition: none ;
}
}
/* Pulse Shrink */
/*.op-button {
//display: inline-block;
//vertical-align: middle;
transform: translateZ(0);
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
backface-visibility: hidden;
-moz-osx-font-smoothing: grayscale;
transition-duration: 0.3s;
transition-property: transform;
}
.op-button:hover,
.op-button:focus,
.op-button:active {
transform: scale(1.1);
}*/
}
@media only screen and (max-width: 399px) {
.op-seek-button {
display: none ;
}
}