@no-framework/videoplayer
Version:
A no framework video player.you can use it as long as your program is in javascript environment
270 lines (237 loc) • 5.32 kB
text/less
.d-player-wrap {
position: relative;
overflow: hidden;
background-color: #000;
&.web-full-screen {
z-index: 9999999;
position: fixed;
left: 0;
top: 0;
width: 100vw ;
height: 100vh ;
}
.d-player-video {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
.d-player-video-poster {
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
}
.d-player-video-main {
width: 100%;
height: 100%;
transition: 0.2s;
&.video-mirror {
transform: rotateY(180deg);
}
}
}
.d-player-control {
transition: 0.1s;
transform: translateY(45px);
position: absolute;
z-index: 2;
left: 0;
bottom: 0;
height: 50px;
width: 100%;
color: #fff;
.d-control-progress {
width: 100%;
margin: 0 auto;
position: relative;
height: 5px;
cursor: pointer;
.d-progress-bar {
position: absolute;
left: 0;
right: 0;
bottom: 0;
width: 100%;
transition: height 0.1s;
height: 3px;
z-index: 1;
// pointer-events: none;
//对 d-slider内的组件样式修改
.d-slider__runway {
transition: height 0.1s;
height: 100%;
.d-slider__bar::before {
transform: translateY(-50%) scale(0, 0);
}
}
}
&:hover {
.d-progress-bar {
height: 100%;
.d-slider__bar::before {
transform: translateY(-50%) scale(1, 1) ;
}
}
}
}
.d-control-tool {
position: absolute;
padding: 0 10px;
box-sizing: border-box;
background-image: linear-gradient(
180deg,
transparent,
rgba(0, 0, 0, 0.37),
rgba(0, 0, 0, 0.75),
rgba(0, 0, 0, 0.75)
);
display: flex;
justify-content: space-between;
align-items: center;
top: 10px;
left: 0;
bottom: 0;
width: 100%;
box-sizing: border-box;
.d-tool-bar {
display: flex;
height: 100%;
.d-tool-item {
position: relative;
height: 100%;
cursor: pointer;
text-align: center;
padding: 0 8px;
display: flex;
align-items: center;
font-size: 13px;
.d-tool-item-main {
position: absolute;
white-space: nowrap;
z-index: 2;
bottom: 98%;
left: 50%;
padding: 6px 16px;
box-sizing: border-box;
display: none;
background: rgba(0, 0, 0, 0.95);
border-radius: 5px;
transform: translateX(-50%);
}
&:hover {
.d-tool-item-main {
display: flex;
}
}
}
}
// 时间
.d-tool-time {
font-size: 12px;
color: #fff;
font-weight: 300;
.total-time {
color: rgba(255, 255, 255, 0.8);
}
}
// 音量
.volume-box {
height: 160px;
width: 50px;
display: flex;
align-items: center;
justify-content: center;
.volume-main {
height: 90%;
display: flex;
width: 60px;
flex-direction: column;
align-items: center;
.volume-text-size {
margin-bottom: 10px;
font-size: 12px;
font-weight: 400;
}
&.is-muted {
.d-slider__bar {
height: 0 ;
}
}
}
}
.speed-main {
padding: 0 10px;
li {
cursor: pointer;
line-height: 34px;
font-size: 12px;
color: #fff;
&:hover {
opacity: 0.8;
}
&.speed-active {
color: var(--primary-color);
font-weight: bold;
}
}
}
}
}
&.d-player-wrap-hover {
.d-player-control {
transform: translateY(0px);
}
.d-control-progress {
width: 96%;
}
}
}
.d-player-state,
.d-player-input {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 40px;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
z-index: 1;
}
.d-player-input {
width: 100%;
border: none;
opacity: 0;
cursor: default;
}
.d-play-btn {
width: 90px;
height: 90px;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 50%;
}
// 黑幕
.d-player-lightoff {
position: fixed;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.9);
}
// 关灯模式
.is-lightoff {
z-index: 999998;
}