醉美水芙蓉 发表于 2026-6-9 22:40:22

往事只能回味(半盏翻唱专辑)

<style>
#papa { margin:60px 0 0 calc(50% - 475px); display: grid; place-items: center; width: 1024px; height: 987px; background: gray url('https://pic1.imgdb.cn/item/6a25d06fd71dee7c941b9f41.jpg') no-repeat center/cover; background-blend-mode: normal, color; box-shadow: 5px 5px 22px #506FA4; overflow: hidden; user-select: none; position: relative; perspective: 3000px; z-index: 1; }
#papa::before, #papa::after { position: absolute; content: ''; pointer-events: none; }

#birthdayTitle{
position:absolute;
top:45px;
left:50%;
transform:translateX(-50%);
z-index:998;
text-align:center;
pointer-events:none;
}

.mainTitle{
font-family:"听松体","STXingkai","华文行楷",cursive;
font-size:46px;
color:#edf3f9;
letter-spacing:8px;
text-shadow:0 0 8px #fff,2px 2px 8px #000;
}

.subTitle{
margin-top:0px;
font-family:"听松体","STXingkai","华文行楷",cursive;
font-size:22px;
color:#6ca4d7;
letter-spacing:8px;
text-shadow:0 0 6px #fff,2px 2px 8px #000;
}

#maker{
position:absolute;
right:50px;
bottom:45px;
z-index:998;
font-family:"听松体","STXingkai","华文行楷",cursive;
font-size:22px;
color:#edf3f9;
letter-spacing:3px;
text-shadow:0 0 5px #fff,2px 2px 8px #000;
}
</style>

<div id="papa">

<div id="birthdayTitle">
<div class="mainTitle">《往事只能回味》</div>
<div class="subTitle">翻唱专辑</div>
</div>

<div id="maker">制作:半盏</div>

<image id="img" src="https://pic.imgdb.cn/item/62479cbe27f86abb2adbb9bd.gif" autoplay="" loop="" muted=""></image>

</div>

<script>
(function() {
(function(mkPlayer) {
let defaults = {
player_css: 'bottom: 0; left: 50%; transform: translateX(-50%);',
mlist_css: 'top: 0; left: 0;',
fs_btn: 'left: 0; top: 0;',
playerCode: `<style>
#mplayer {position: absolute;display: grid;grid-template-areas: 'cur btnplay dur''prog prog prog';gap: 8px 2px;place-items: end center;color: var(--color);font: normal 16px sans-serif;padding-bottom: 35px;z-index: 999;--ww: 260px;--color: hsla(0,0%,100%,.75);--track: hsla(90,100%,95%,.65);--prog: linear-gradient(90deg,hsla(90,30%,50%,.55),hsla(280,40%,50%,.75),hsla(30,100%,50%,.65));}
#cur { grid-area: cur; color: var(--color); }
#dur { grid-area: dur; color: var(--color); }
#btnplay {--state: paused;grid-area: btnplay;background: conic-gradient(red,orange,yellow,green,teal,blue,purple);mask: radial-gradient(transparent 3px,red 0);-webkit-mask: radial-gradient(transparent 3px,red 0);border-radius: 50%;width: 35px;height: 35px;cursor: pointer;animation: rot linear 3s infinite;animation-play-state: var(--state);}
#prog {--xx: 0px;grid-area: prog;width: var(--ww);height: 4px;background: var(--track);position: relative;display: grid;place-items: center;border-radius: 4px;}
#prog::before, #prog::after { position: absolute; content: ''; }
#prog::before {left: 0;width: var(--xx);height: 100%;background: var(--prog);border-radius: 4px;}
#prog::after {left: calc(var(--xx) - 12px);opacity: .85;width: 16px;height: 16px;background: radial-gradient(transparent 2px, teal 0, black);border-radius: 50%;cursor: pointer;}
#mlist { --color1: #f5fff2; --color2: #ffd0d0; position: absolute; padding: 0; font-size:13px; line-height:27px; font-family:"听松体","STXingkai","华文行楷",cursive; z-index:999;}
#mlist > a { color: var(--color1); cursor: pointer; text-shadow: 2px 2px 3px black; text-decoration: none; }
#mlist >a:hover { color: var(--color2); }
.sColor { color: var(--color2); }
#btnMsg {position: absolute;color: snow;background: black;opacity: 0;border: 2px solid snow;border-radius: 8px;padding: 4px;transition: all .75s;cursor: pointer;z-index: 1000;}
@keyframes rot { to { transform: rotate(1turn); } }
</style>
<div id="mlist"></div>
<div id="mplayer"><span id="btnplay"></span><span id="prog"></span><span id="cur">00:00</span><span id="dur">00:00</span></div>
<span id="btnMsg">全屏观赏</span>`
};

let playCode = (user_config) => {
let data = Object.assign({}, defaults, user_config);
papa.innerHTML += data.playerCode;
mplayer.style.cssText += data.player_css;
mlist.style.cssText += data.mlist_css;
btnMsg.style.cssText += data.fs_btn;

let mDrag = false, timerId, fs = false;
let aud = document.createElement('audio');
papa.appendChild(aud);

(function addList() {
let str = '';
data.m_ar.forEach((item,key) => {
str += `<a onclick="javascript:mplay(${key})">${key+1} ${data.m_ar}</a><br>`;
});
mlist.innerHTML = str;
})();

btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();
btnMsg.onclick = () => fs ? document.exitFullscreen() : papa.requestFullscreen();

papa.onmousemove = () => {
clearTimeout(timerId);
btnMsg.style.opacity = '.95';
timerId = setTimeout('btnMsg.style.opacity = "0"', 3000);
};

aud.addEventListener('timeupdate', () => {
cur.innerText = toMin(aud.currentTime);
dur.innerText = toMin(aud.duration);
if(mDrag===false) prog.style.setProperty('--xx', aud.currentTime * prog.offsetWidth / aud.duration + 'px');
});

aud.addEventListener('pause', () => mState());
aud.addEventListener('play', () => mState());
aud.addEventListener('ended', () => mplay());
aud.onerror = () => mplay();

prog.onmousedown = () => mDrag = true;
document.onmouseup = () => mDrag = false;

mplayer.onmouseup = (e) => {
if(mDrag) aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
};

mplayer.onmousemove = (e) => {
if(mDrag) moveBar(e.offsetX);
};

let mState = () => aud.paused ? btnplay.style.setProperty('--state', 'paused') : btnplay.style.setProperty('--state', 'running');

mplay = (idx=-1) => {
if (idx < 0) idx = Math.floor(Math.random() * data.m_ar.length);
aud.src = data.m_ar;
aud.play();
setRed(idx);
};

document.addEventListener("fullscreenchange", () => {
if (document.fullscreenElement !== null) {
fs = true;
btnMsg.innerText = '退出全屏';
} else {
fs = false;
btnMsg.innerText = '全屏观赏';
}
});

let setRed= (idx) => {
let str = mlist.innerHTML;
str = str.replace(/<\/?span[^\>]*\>/g,'');
str = str.replace(`${idx+1} ${data.m_ar}`, `${idx+1} <span class="sColor">${data.m_ar}</span>`);
mlist.innerHTML = str;
};

let moveBar = (x) => {
if(x < 0) x = 0;
if(x > prog.offsetWidth - 5) x = prog.offsetWidth - 5;
prog.style.setProperty('--xx', x + 'px');
};

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;
};

mplay();
};

mkPlayer.HCPlayer = playCode;
})(this);

let m_ar = [
['https://i.uik.cc/view.php/22557d4b356d0e8af10d0ccde4ebef8e.mp3','虫儿飞'],
['https://i.uik.cc/view.php/fb2d44e90b22affc110834378efcbb14.mp3','隐形的翅膀'],
['https://i.uik.cc/view.php/618c98abecb0ff105efd917f433b1802.mp3','你笑起来真好看'],
['https://i.uik.cc/view.php/2667beef7af21b02bf7a88abdffef1b0.mp3','我们好像在哪见过'],
['https://i.uik.cc/view.php/8228e94faa7c5bafc24eb36686f03736.mp3','红尘情歌'],
['https://i.uik.cc/view.php/9ddc63240ef4d039b69c73789cef3e33.mp3','逆流成河'],
['https://i.uik.cc/view.php/16d79c153ae7e9fa85a9b8ae97b81ad1.mp3','尘埃里的花'],
['https://i.uik.cc/view.php/3082d38ac040541e725b05fa59e87ec1.mp3','蒙上眼 锁上心'],
['https://i.uik.cc/view.php/760f39eb4e70934a85a53469e796faaf.mp3','第二道彩虹'],
['https://i.uik.cc/view.php/30a1207fc7e0e0f695d7fb77abdfaf56.mp3','一棵开花的树'],
['https://i.uik.cc/view.php/03abc3da4125cf3f456b566843db021b.mp3','你的眼神'],
['https://i.uik.cc/view.php/1c01796324c7472c5fe756a9dc06ee5f.mp3','爱的思念'],
['https://i.uik.cc/view.php/5520851a4fc56d3d5f58d3385f292500.mp3','潇洒走一回'],
['https://i.uik.cc/view.php/ac9023a3f117d6c8899e0fde834c82b9.mp3','我知道你会来'],
['https://i.uik.cc/view.php/2defc8d314a2c4eaf7b93d790e245546.mp3','吻你'],
['https://i.uik.cc/view.php/044375308aaa88e15e67e02479f0ee87.mp3','又见炊烟'],
['https://i.uik.cc/view.php/0d08eb7aa0b9d4267edee9c64234460c.mp3','那段美丽时光'],
['https://i.uik.cc/view.php/d2aa0e959ed6bcbcfb326ce81ab64213.mp3','亲爱的你在哪里'],
['https://i.uik.cc/view.php/a4eb84e26a5a44fa93b8f0bc258fbfec.mp3','这一生关于你的风景'],
['https://i.uik.cc/view.php/11cf54af747f0a97c225c6670280297f.mp3','往事只能回味'],
];
HCPlayer({
m_ar: m_ar,
mlist_css: '--color1:#edf3f9; --color2:#a6c1da; top:155px; left:100px; padding:0;',
fs_btn: 'left: 760px; bottom: 80px; background: transparent;'
});
})();
</script>
页: [1]
查看完整版本: 往事只能回味(半盏翻唱专辑)