《 锁 爱 》 - 笑 天(跟着小辣椒学习制作频谱播放器)
<meta charset="UTF-8"><style>
#papa {margin: 50px -100px;
width: 1200px;
height: 700px;
border: 6px solid rgba(36, 201, 219,.95);
border-radius: 20px;
background:#000000 ;
no-repeat center/cover;
box-shadow: 3px 3px 20px #000;
position: relative;
display: grid;
place-items: center;
user-select: none;
z-index: 1;
--opt: .25;
overflow: hidden;/*溢出:隐藏;*/
}
}
#mb{
position: absolute;
width: 100%;
height: 100%;
top:0%;
opacity: 1;
z-index: 2;
background:linear-gradient(0deg, #000000 10%,#Ffffff 11%,rgba(2, 2, 2, 0) 2%,rgba(52, 152, 219, 0) 47%,rgba(2, 2, 2, 0) 90%,#Ffffff 90%,black 1%);
}
#t{
position: absolute;
top:650px;
left:1000px;
width: 200px;
height: 35px;
z-index:4;
mix-blend-mode:screen;
}/*动画 图片1*/
#t1{
position: absolute;
top:0%;
left:0%;
width: 100%;
height: 100%;
z-index:3;
}/*动画 图片2*/
#papa:hover #mplayer { transition: .7s; opacity: .9; }
#mplayer {
z-index: 80;
position: absolute;
top:87.1%; left:65.9%;
bottom: 5px;
width: 30px;
height: 30px;
border: 0px solid #cccccc;
border-radius: 0%;
opacity: 1;
transition: .7s;
display: grid;
place-items: center;
--disp1: 0; --disp2: 1;
}/*播放器*/
#mplayer::before, #mplayer::after {
position: absolute;
content: '';
border-style: solid;
border-color: #FFFFFF;
cursor: pointer;
transition: .4s;
}
#mplayer::before {
width: 0;
height: 0;
left: 7px;
border-width: 6.5px 6.5px;
border-color: transparent transparent transparent #FFFFFF;
opacity: var(--disp1);
}/*播放按钮*/
#mplayer::after {
width: 2px;
height: 12px;
left: 28px;
border-width: 0 3px 0 3px;
opacity: var(--disp2);
}/*暂停按钮*/
@keyframes opa { to {opacity: 1;} }
#tmsg {
position: absolute;
z-index: 91;
font: normal 12px sans-serif;
color: #ffffff;
top:85%;
left:49%;
}/*播放时间进度*/
#prog {
position: absolute;z-index: 91;
width: 15.6%;
height: 0.3%;
cursor: pointer;
top:89.0%;
left:48.8%;
color: #cccccc;
box-shadow: 0px 0px 0.1px 0.1px #000000;
border-radius: 2px;
}/*播放进度条*/
#papa:hover #fullscreen { display:block ;opacity: 1;}
#wzsd1 { animation: wzsd 0.56s linear infinite ;}
@keyframes wzsd {
from {opacity: 1;filter:hue-rotate(360deg)contrast(180%)brightness(200%);}
50% {opacity: 1;}
to {opacity: 1;filter:hue-rotate(0deg)contrast(140%)brightness(100%);}}
#bt{
--w: 42%;
width: var(--w);
overflow: hidden;
color: #fff;
position: absolute;
left:65.5%;
top:91%;
font-size: 15px;
z-index: 21;
word-break: keep-all;
white-space: nowrap;
animation: bt 20s linear infinite;
}/*播放歌曲名称*/
@keyframes bt {50% { transform: translateX(calc(0% - var(--w))); }}
</style>
<div id="papa">
<span id="fullscreen"> </span>
<div id="mb"></div>
<div id="bt">《 锁 爱 》-笑 天 </div>
<div id="t"><img id="tu" src="https://ysj147.s3-us-east-1.ossfiles.com/zzsc/gif/ysjzxyyd.gif" width="80%" height="80%"></div>
<div id="t1"><img id="tu1" src="https://ysj147.s3-us-east-1.ossfiles.com/zzsc/gif/suoaipp.gif" width="100%" height="100%"></div>
<div id="tmsg">00:00 | 00:00</div>
<divid="prog"></div>
<div id="mplayer"></div>
<divclass="lrc" >
<div id="wzsd1"><ul id="ullrc">
</ul>
</div>
</div>
</div>
<audio id="aud" src="https://ysj147.s3-us-east-1.ossfiles.com/zzsc/mp3/suoai.mp3" loop autoplay></audio>
<style type="text/css">
.lrc{
z-index: 20;
width: 100%;
height: 120px;
overflow: hidden;filter:drop-shadow(#ffffff 1px 0 0)drop-shadow(#ffffff 0 1px 0)drop-shadow(#ffffff -1px 0 0) drop-shadow(#ffffff 0 -1px0);
display: block;
position: absolute;
top:5%;
left:15%;
z-index: 5;
margin: 0 auto;
}
.lrc #ullrc{
width: 100%;
padding: 0;list-style: none;transition: 0.3s all ease;
margin: 0;}
/*歌词普通样式*/
.lrc #ullrc li{
height: 70px;
line-height: 60px;
font-family:华文新魏;
font-size: 0px;
color: #000078;
font-weight: normal;
transition: .3s all ease;
list-style-type: none;
text-align: center;display: block;
width: 100%;
margin: 0 auto;}
/*动态歌词样式*/
.lrc #ullrc li.active{
font-size: 40px;
color: #ff0000;
text-align: center;
}
</style>
<script >
var lrc = ` 《 锁 爱 》
作词:周 兵
作曲:关 剑
编曲:关 剑
演唱:笑 天
歌词编辑:亦是金
- - - - - -
天空留不住雨的离开
就连风也忧伤了起来
抹不去的那一片云彩
在我梦里再一次存在
时光留不住爱的离开
痴心一颗已化作沧海
只愿你我若有缘再见
就用个微笑来释怀
我用回忆锁住你的爱
夜深时悄悄地打开
寂寞的感觉如片深海
誓言变成一颗尘埃
我用回忆锁住你的爱
至今在默默地等待
若你能回来算不算意外
也许是我太晚明白
- - - - - -
时光留不住爱的离开
痴心一颗已化作沧海
只愿你我若有缘再见
就用个微笑来释怀
我用回忆锁住你的爱
夜深时悄悄地打开
寂寞的感觉如片深海
誓言变成一颗尘埃
我用回忆锁住你的爱
至今在默默地等待
若你能回来算不算意外
也许是我太晚明白
我用回忆锁住你的爱
夜深时悄悄地打开
寂寞的感觉如片深海
誓言变成一颗尘埃
我用回忆锁住你的爱
至今在默默地等待
若你能回来算不算意外
也许是我太晚明白
-- 谢谢欣赏 --
`;
function $(id) {return document.getElementById(id);
}//这样写以后getid方便
function getLrcArray() {
var parts = lrc.split("\n");
for (let index = 0; index < parts.length; index++) {
parts = getLrcObj(parts);
}
return parts;
function getLrcObj(content) {
var twoParts = content.split("]");
var time = twoParts.substr(1);
var timeParts = time.split(":");
var seconds = +timeParts;
var min = +timeParts;
seconds = min * 60 + seconds;
var words = twoParts;
return{
seconds: seconds,
words: words,
};
}
}
var lrcArray = getLrcArray();
function inputLrc() {
for (let index = 0; index < lrcArray.length; index++) {
var li = document.createElement("li");
li.innerText = lrcArray.words;
$("ullrc").appendChild(li);
}
}
inputLrc();
function setPosition() {
var index = getLrcIndex();
if (index == -1) {
return;
}
var lrc_li_height = 70, lrc_ul_height = 60;
var top = index * lrc_li_height + lrc_li_height / 2 - lrc_ul_height / 2;
if (top < 0) {top = 0;}$("ullrc").style.marginTop = -top + "px";
var activeLi = $("ullrc").querySelector(".active");
if(activeLi){
activeLi.classList.remove("active");}
$("ullrc").children.classList.add("active");
}
var turn = 0;
function getLrcIndex(){
var time = $("aud").currentTime + turn;for (var index = 0; index < lrcArray.length; index++) {
if (lrcArray.seconds > time) {
return index - 1;
}
}
}
$("aud").ontimeupdate = setPosition;
(function(){let mState = () => aud.paused ? (mplayer.style.setProperty('--disp1','1'), mplayer.style.setProperty('--disp2','0')) : (mplayer.style.setProperty('--disp1','0'), mplayer.style.setProperty('--disp2','1'));
mplayer.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
aud.addEventListener('play', () => mState());
aud.addEventListener('pause', () => mState());
})();
let fs = true;
fullscreen.onclick = () => {
fs ? (fullscreen.innerText = '退出', papa.requestFullscreen()) : (fullscreen.innerText = '全屏', document.exitFullscreen());
fs = !fs;
};
prog.onclick = (e) => {
aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
}
aud.addEventListener('timeupdate', () => {
aud.addEventListener('timeupdate', () => {prog.style.background= 'linear-gradient(90deg, red, red, red ' + aud.currentTime / aud.duration * 100 + '%, snow 0)';});
tmsg.innerText = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);
});
let toMin = (val) => {
if (!val) return '00:00';
val = Math.floor(val);
let min = parseInt(val / 60),
sec = parseFloat(val % 60);
if (min < 10) min = '0' + min;
if (sec < 10) sec = '0' + sec;
return min + ':' + sec;
};
/*控制视频*/
vid=document.querySelector('#vid');
mplayer.onclick =function() { vid.paused ? vid.play() : vid.pause()};
/*结束*/
/*控制歌词*/
wzsd1.style.animationPlayState = aud.paused ? 'paused' : 'running';
aud.addEventListener('playing', () => wzsd1.style.animationPlayState = 'running');
aud.addEventListener('pause', () => wzsd1.style.animationPlayState = 'paused');
/*结束*/
</script>
<script>
if ('getContext' in document.createElement('canvas')) {
HTMLImageElement.prototype.play = function() {
if (this.storeCanvas) {
// 移除存储的canvas
this.storeCanvas.parentElement.removeChild(this.storeCanvas);
this.storeCanvas = null;
// 透明度还原
image.style.opacity = '';image1.style.opacity = '';
}
if (this.storeUrl) {
this.src = this.storeUrl;
}
};
HTMLImageElement.prototype.stop = function() {
var canvas = document.createElement('canvas');
// 尺寸
var width = this.width, height = this.height;
if (width && height) {
// 存储之前的地址
if (!this.storeUrl) {
this.storeUrl = this.src;
}
// canvas大小
canvas.width = width;
canvas.height = height;
// 绘制图片帧(第一帧)
canvas.getContext('2d').drawImage(this, 0, 0, width, height);
// 重置当前图片
try {
this.src = canvas.toDataURL("image/gif");
} catch(e) {
// 跨域
this.removeAttribute('src');
// 载入canvas元素
canvas.style.position = 'absolute';
// 前面插入图片
this.parentElement.insertBefore(canvas, this);
// 隐藏原图
this.style.opacity = '0';
// 存储canvas
this.storeCanvas = canvas;
}
}
};
}
var image= document.getElementById("tu");
var image1= document.getElementById("tu1");
mplayer.onclick =function() { aud.paused ? (image.stop(),image1.stop()):(image.play(),image1.play())};
</script> 亦是金老师的制作很漂亮,就是打开慢一点,等了一会儿才开 亦是金老师这个播放器不能一键停止? 感谢老师分享 亦是金老师,这个留着你自己修改看看效果 赞👍🏻 {:5_118:}{:5_117:}
页:
[1]