叹 郁 孤 TO:亚伦老师
<style>@import url("https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&display=swap");#papa{
margin: 10px 0 30px calc(50% - 680px);
width: 1286px;
height: 720px;
background:url('https://pan.suyanw.cn/view.php/8cbb9db0440d09cce740214767cc2a95.jpg')no-repeat center/cover;
box-shadow: 3px 3px 20px #000;
user-select: none;
overflow: hidden;
position: relative;
z-index: 1;--state: paused;
}
/* ===== 播放器容器 ===== */
#amazingaudioplayer-1 {
width: 420px;
max-width: 100%;
margin: 0 60%;
margin-top: 150px;
/* 整体下移50px */
background: rgba(254, 252, 245, 0.1);
backdrop-filter: blur(20px);
border-radius: 16px;
box-shadow: 0 20px 35px rgba(0, 0, 0, 0.3);
padding: 6px 0 8px 0;
font-family: 'Segoe UI', 'Noto Sans', system-ui, 'Microsoft YaHei', sans-serif;
position: relative;
}
/* ===== 歌词区域 ===== */
#amazingaudioplayer-1 .amazingaudioplayer-text {
padding: 2px 12px 0px;
text-align: center;
}
.amazingaudioplayer-lyrics {
position: relative;
top: 10px;
display: inline-block;
max-width: 100%;
font-size: 18px;
font-weight: bold;
line-height: 1.3;
text-align: center;
letter-spacing: 1px;
white-space: nowrap;
min-height: 36px;
}
/* ===== 核心歌词元素(带颜色填充) ===== */
#lrc {
position: relative;
display: inline-block;
font-family:"Ma Shan Zheng","STKaiti","SimHei", cursive, serif;
font-size: 24px;
font-weight: 400;
color: #654123;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
white-space: nowrap;
background: transparent;
}
/* ===== 渐变填充伪元素 —— 流光效果 ===== */
#lrc::before {
position: absolute;
content: attr(data-lrc);
top: 0;
left: 0;
width: 100%;
height: 100%;
color: transparent;
overflow: hidden;
white-space: pre;
background: linear-gradient(45deg,#ff0000, #800000, #fff, #00ff00, #000078);
background-size: 200% auto;
-webkit-background-clip: text;
background-clip: text;
clip-path: inset(0 100% 0 0);
animation: shineFlow 2.8s linear infinite, lrcFill var(--tt) linear forwards;
animation-play-state: var(--state, paused);
text-shadow: 0 0 2px rgba(26, 77, 62, 0.2);
}
/* 流光移动动画 */
@keyframes shineFlow {
0% { background-position: 150% 60%; filter: hue-rotate(0deg)brightness(140%)contrast(350%);}
}
/* 歌词填充动画 */
@keyframes lrcFill {
0% { clip-path: inset(0 100% 0 0); }
100% { clip-path: inset(0 0% 0 0); }
}
/* 用于切换动画类名 */
#lrc::before {
animation-name: shineFlow, cover1;
}
#lrc::before {
animation-name: shineFlow, cover2;
}
@keyframes cover1 { to { clip-path: inset(0 0 0 0); } }
@keyframes cover2 { to { clip-path: inset(0 0 0 0); } }
/* ===== 控制栏 ===== */
#amazingaudioplayer-1 .amazingaudioplayer-bar {
position: relative;
height: 100px;top: 10px;
}
/* 播放/暂停 - 居中 */
#amazingaudioplayer-1 .amazingaudioplayer-playpause {
position: absolute;
left: 50%;
margin-left: -24px;
top: 12px;
}
#amazingaudioplayer-1 .amazingaudioplayer-play,
#amazingaudioplayer-1 .amazingaudioplayer-pause {
width: 48px;
height: 48px;
background-image: url('https://lkvv99.s3.cn-north-1.jdcloud-oss.com/lkl/wys/audioplayerengine/playpause-48-48-1.png');
background-repeat: no-repeat;
background-size: auto;
cursor: pointer;
}
#amazingaudioplayer-1 .amazingaudioplayer-play {
background-position: left top;
}
#amazingaudioplayer-1 .amazingaudioplayer-pause {
background-position: right top;
display: none;
}
/* 上一首 */
#amazingaudioplayer-1 .amazingaudioplayer-prev {
position: absolute;
left: 50%;
margin-left: -72px;
top: 12px;
width: 48px;
height: 48px;
background-image: url('https://lkvv99.s3.cn-north-1.jdcloud-oss.com/lkl/wys/audioplayerengine/prevnext-48-48-1.png');
background-repeat: no-repeat;
background-size: auto;
background-position: left top;
cursor: pointer;
}
/* 下一首 */
#amazingaudioplayer-1 .amazingaudioplayer-next {
position: absolute;
left: 50%;
margin-left: 24px;
top: 12px;
width: 48px;
height: 48px;
background-image: url('https://lkvv99.s3.cn-north-1.jdcloud-oss.com/lkl/wys/audioplayerengine/prevnext-48-48-1.png');
background-repeat: no-repeat;
background-size: auto;
background-position: right top;
cursor: pointer;
}
/* 循环按钮 */
#amazingaudioplayer-1 .amazingaudioplayer-loop {
position: absolute;
top: 24px;
left: 50%;
margin-left: 78px;
width: 24px;
height: 24px;
background-image: url('https://lkvv99.s3.cn-north-1.jdcloud-oss.com/lkl/wys/audioplayerengine/loop-24-24-2.png');
background-repeat: no-repeat;
background-size: auto;
background-position: left top;
cursor: pointer;
}
/* 列表切换按钮(SVG三横线) */
.playlist-btn {
position: absolute;
top: 24px;
left: 50%;
margin-left: 108px;
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
z-index: 35;
}
.playlist-btn svg {
stroke: #2b5e4f;
stroke-width: 2.2;
width: 20px;
height: 20px;
}
.playlist-btn:hover svg {
stroke: #1a392f;
}
/* 时间显示 */
#amazingaudioplayer-1 .amazingaudioplayer-time {
position: absolute;
top: 30px;
left: 20px;
color: #2b5e4f;
font-size: 12px;
font-weight: 600;
font-family: monospace;
background: rgba(255, 248, 225, 0);
padding: 0 8px;
border-radius: 20px;
}
/* ===== 音量控制(边框改细变淡) ===== */
#amazingaudioplayer-1 .amazingaudioplayer-volume {
position: absolute;
top: 24px;
left: 50%;
margin-left: 138px;
z-index: 40;
cursor: pointer;
}
#amazingaudioplayer-1 .amazingaudioplayer-volume-button {
width: 24px;
height: 24px;
background-image: url('https://lkvv99.s3.cn-north-1.jdcloud-oss.com/lkl/wys/audioplayerengine/volume-24-24-2.png');
background-repeat: no-repeat;
background-size: auto;
background-position: left top;
}
#amazingaudioplayer-1 .amazingaudioplayer-volume-bar {
position: absolute;
left: 50%;
margin-left: -10px;
bottom: 20%;
width: 6px;
height: 60px;
background-color:rgba(254, 252, 245, 0.4)
backdrop-filter: blur(0px);
border-radius: 3px;
padding: 8px 4px;
visibility: hidden;
opacity: 0;
transition: 0.15s;
margin-bottom: 8px;
border: 0.5px solid rgba(233, 226, 199, 0);
}
#amazingaudioplayer-1 .amazingaudioplayer-volume:hover .amazingaudioplayer-volume-bar,
#amazingaudioplayer-1 .amazingaudioplayer-volume-button:hover+.amazingaudioplayer-volume-bar {
visibility: visible;
opacity: 1;
}
#amazingaudioplayer-1 .amazingaudioplayer-volume-bar-adjust {
position: relative;
width: 100%;
height: 100%;
background-color:#d9d4b5;
border-radius: 20px;
overflow: hidden;
}
#amazingaudioplayer-1 .amazingaudioplayer-volume-bar-adjust-active {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 80%;
background:#429d7a;
border-radius: 20px;
}
/* ===== 进度条 ===== */
#amazingaudioplayer-1 .amazingaudioplayer-progress {
position: relative;
margin-top: 4px;
margin-bottom: 8px;
width: calc(100% - 32px);
height: 6px;
background-color: #d9d4b5;
cursor: pointer;
margin-left: auto;
margin-right: auto;
border-radius: 12px;
}
#amazingaudioplayer-1 .amazingaudioplayer-progress-loaded {
position: absolute;
left: 0;
top: 0;
height: 100%;
background-color: #bcb694;
width: 0%;
border-radius: 12px;
}
#amazingaudioplayer-1 .amazingaudioplayer-progress-played {
position: absolute;
left: 0;
top: 0;
height: 100%;
background:#429d7a;
width: 0%;
border-radius: 12px;
}
/* ===== 底部歌曲信息 ===== */
#amazingaudioplayer-1 .amazingaudioplayer-tracklist {
margin: 2px 16px 0;
background: rgba(235, 225, 200, 0.5);
border-radius: 20px;
padding: 4px 12px;
text-align: center;
}
.current-info {font-family:"Ma Shan Zheng","STKaiti","SimHei", cursive, serif;
font-size: 17px;
font-weight: 700;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #1f4e3f;
}
.current-sub {
font-size: 13px;
opacity: 0.7;
color: #2b5e4f;
}
/* ===== 播放列表浮层 ===== */
.playlist-dropdown {
position: absolute;
bottom: 110px;
right: 60%;
width: 320px;
max-height: 260px;
background: rgba(255, 251, 240, 0.2);
backdrop-filter: blur(14px);
border-radius: 20px;
box-shadow: 0 20px 32px rgba(0, 0, 0, 0.25);
border: 1px solid rgba(210, 195, 150, 0.7);
z-index: 200;
overflow: hidden;
display: none;
flex-direction: column;
}
.playlist-dropdown.show {
display: flex;
}
.dropdown-header {
padding: 10px 0px;
background: #efe6d2;
font-weight: 700;
color: #1f4e3f;
display: flex;
justify-content: space-between;
border-bottom: 1px solid #ddd2b6;
}
.close-dropdown {
cursor: pointer;
font-size: 22px;
line-height: 1;
color: #5f6b58;
}
.song-list {
list-style: none;
overflow-y: auto;
max-height: 220px;
margin: 0;
padding: 0;
}
.song-list li {
padding: 8px 16px;
font-size: 14px;
color: #2c4a3b;
cursor: pointer;
display: flex;
gap: 10px;
border-bottom: 1px solid #f0e9d6;
transition: 0.1s;
}
.song-list li.active-song {
background: #0000;
font-weight: 700;
color: #0d2f24;
}
.song-list li:hover {
background: #0000;
}
</style>
<div id="papa">
<!-- ===== 播放器主体 ===== -->
<div id="amazingaudioplayer-1">
<div class="amazingaudioplayer-player-wrapper">
<!-- 歌词区域 -->
<div class="amazingaudioplayer-text">
<div class="amazingaudioplayer-lyrics">
<div id="lrc" data-lrc="♪ 加载中..." data-motion="cover1">♪ 加载中...</div>
</div>
</div>
<!-- 控制栏 -->
<div class="amazingaudioplayer-bar">
<div class="amazingaudioplayer-playpause">
<div class="amazingaudioplayer-play" id="playBtn"></div>
<div class="amazingaudioplayer-pause" id="pauseBtn" style="display:none;"></div>
</div>
<div class="amazingaudioplayer-prev" id="prevBtn"></div>
<div class="amazingaudioplayer-next" id="nextBtn"></div>
<div class="amazingaudioplayer-loop" id="loopBtn"></div>
<div class="amazingaudioplayer-time" id="timeDisplay">00:00 / 00:00</div>
<div class="amazingaudioplayer-volume">
<div class="amazingaudioplayer-volume-button" id="volBtn"></div>
<div class="amazingaudioplayer-volume-bar">
<div class="amazingaudioplayer-volume-bar-adjust" id="volAdjust">
<div class="amazingaudioplayer-volume-bar-adjust-active" id="volFill"></div>
</div>
</div>
</div>
<button class="playlist-btn" id="playlistBtn" title="播放列表">
<svg viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</button>
</div>
<!-- 进度条 -->
<div class="amazingaudioplayer-progress" id="progressTrack">
<div class="amazingaudioplayer-progress-loaded" id="loadedBar"></div>
<div class="amazingaudioplayer-progress-played" id="playedBar"></div>
</div>
<!-- 底部歌曲信息 -->
<div class="amazingaudioplayer-tracklist">
<div class="current-info" id="currentSongName"></div>
<div class="current-sub" id="currentSongSub">mp3专用播放器</div>
</div>
</div>
</div>
<!-- 播放列表浮层 -->
<div id="playlistDropdown" class="playlist-dropdown">
<div class="dropdown-header">
<span>📖 播放列表</span>
<span class="close-dropdown" id="closeDropdownBtn">×</span>
</div>
<ul class="song-list" id="songListContainer"></ul>
</div>
</div>
<script>
// ========== 歌曲数据 ==========
const songs = [{
title: "叹郁孤",
src: "https://pan.suyanw.cn/view.php/079febf8d9400b5f61c31315eee0e4f4.mp3",
lrc: `
叹郁孤-涂一乐
词曲: 王壮
制作: 朵拉
寻常巷陌尽日暮 花深处 我误入
青山可怜遮不住 金缕衣 不辜负
众里寻她千百度 回首间 阑珊处
江山不记英雄舞 不经意 叹郁孤
饮尽 杯中遗下的落九天
自古情难断 意难全
和衣 栏下醉卧我笑陶潜
空庭梦 半生酣
只为 求得此生一寸心安
抬眼望 是狼烟
迟迟 不见当年的独我言
山水觅 却不现
饮尽 杯中遗下的落九天
自古情难断 意难全
和衣 栏下醉卧我笑陶潜
空庭梦 半生酣
只为 求得此生一寸心安
抬眼望 是狼烟
迟迟 不见当年的独我言
山水觅 却不现
`
}];
// ========== DOM 引用 ==========
var audio = new Audio();
var playBtn = document.getElementById('playBtn');
var pauseBtn = document.getElementById('pauseBtn');
var prevBtn = document.getElementById('prevBtn');
var nextBtn = document.getElementById('nextBtn');
var loopBtn = document.getElementById('loopBtn');
var timeDisplay = document.getElementById('timeDisplay');
var progressTrack = document.getElementById('progressTrack');
var loadedBar = document.getElementById('loadedBar');
var playedBar = document.getElementById('playedBar');
var volBtn = document.getElementById('volBtn');
var volFill = document.getElementById('volFill');
var volAdjust = document.getElementById('volAdjust');
var lrcElement = document.getElementById('lrc');
var currentSongNameSpan = document.getElementById('currentSongName');
var currentSongSub = document.getElementById('currentSongSub');
var playlistBtn = document.getElementById('playlistBtn');
var closeDropdownBtn = document.getElementById('closeDropdownBtn');
var dropdown = document.getElementById('playlistDropdown');
var songListContainer = document.getElementById('songListContainer');
// ========== 状态 ==========
var currentIndex = 0;
var isPlaying = false;
var loopMode = 0;
var volume = 0.80;
var isDragging = false;
var lyricsData = [];
var currentLrcIndex = -1;
var motionFlag = true;
// ========== 工具 ==========
function formatTime(sec) {
if (isNaN(sec) || !isFinite(sec) || sec < 0) return '00:00';
var m = Math.floor(sec / 60);
var s = Math.floor(sec % 60);
return String(m).padStart(2, '0') + ':' + String(s).padStart(2, '0');
}
function parseLrc(lrcStr) {
if (!lrcStr) return [];
var lines = lrcStr.split(/\r?\n/);
var items = [];
var regex = /\[(\d{2}):(\d{2}\.\d{2})\]/;
for (var i = 0; i < lines.length; i++) {
var line = lines;
var m = line.match(regex);
if (m) {
var t = parseInt(m) * 60 + parseFloat(m);
var txt = line.replace(regex, '').trim();
if (txt && !txt.includes('LRC编辑') && !txt.includes('歌手:') && !txt.includes('词:') && !txt.includes(
'曲:')) {
items.push({ time: t, lrc: txt });
}
}
}
items.sort(function(a, b) { return a.time - b.time; });
for (var j = 0; j < items.length; j++) {
items.duration = (j + 1 < items.length) ? items.time - items.time : 4.0;
if (items.duration <= 0.2) items.duration = 0.8;
}
return items;
}
function renderSongList() {
songListContainer.innerHTML = '';
for (var i = 0; i < songs.length; i++) {
var li = document.createElement('li');
li.className = i === currentIndex ? 'active-song' : '';
li.innerHTML = '<span>' + String(i + 1).padStart(2, '0') + '</span><span>' + songs.title + '</span>';
li.onclick = (function(idx) {
return function() {
if (currentIndex === idx) { closeDropdown(); return; }
loadSong(idx);
if (!isPlaying) play();
else audio.play().catch(function() {});
closeDropdown();
};
})(i);
songListContainer.appendChild(li);
}
}
function loadSong(idx) {
if (idx < 0) idx = 0;
if (idx >= songs.length) idx = songs.length - 1;
currentIndex = idx;
var s = songs;
var wasPlaying = isPlaying;
audio.pause();
audio.src = s.src;
audio.load();
lyricsData = parseLrc(s.lrc);
currentLrcIndex = -1;
if (lyricsData.length) {
lrcElement.innerText = lyricsData.lrc;
lrcElement.setAttribute('data-lrc', lyricsData.lrc);
lrcElement.style.setProperty('--tt', '0.8s');
lrcElement.style.setProperty('--state', 'paused');
} else {
lrcElement.innerText = "♪ ";
lrcElement.setAttribute('data-lrc', "♪");
}
currentSongNameSpan.innerText = s.title;
currentSongSub.innerText = "mp3专用播放器";
renderSongList();
if (wasPlaying) {
audio.play().then(function() {
isPlaying = true;
updateBtnUI();
lrcElement.style.setProperty('--state', 'running');
fullRefreshLyrics();
}).catch(function(e) { console.warn("自动播放被阻止"); });
} else {
isPlaying = false;
updateBtnUI();
lrcElement.style.setProperty('--state', 'paused');
fullRefreshLyrics();
}
}
function updateBtnUI() {
playBtn.style.display = isPlaying ? 'none' : 'block';
pauseBtn.style.display = isPlaying ? 'block' : 'none';
}
function applyLyrics(txt, dur) {
lrcElement.innerText = txt;
lrcElement.setAttribute('data-lrc', txt);
var newMotion = motionFlag ? 'cover1' : 'cover2';
lrcElement.setAttribute('data-motion', newMotion);
motionFlag = !motionFlag;
lrcElement.style.setProperty('--state', 'paused');
void lrcElement.offsetHeight;
var d = Math.max(0.3, Math.min(dur, 3.2));
lrcElement.style.setProperty('--tt', d + 's');
if (isPlaying && !audio.paused) lrcElement.style.setProperty('--state', 'running');
else lrcElement.style.setProperty('--state', 'paused');
}
function refreshLrc(ct) {
if (!lyricsData.length) return;
var idx = -1;
for (var i = lyricsData.length - 1; i >= 0; i--) {
if (ct >= lyricsData.time - 0.03) {
idx = i;
break;
}
}
if (idx === -1 && lyricsData.length) idx = 0;
if (idx === currentLrcIndex) {
if (currentLrcIndex >= 0 && isPlaying && !audio.paused) {
var remain = Math.max(0.2, lyricsData.duration - (ct - lyricsData
.time));
if (remain > 0.1) {
lrcElement.style.setProperty('--state', 'paused');
void lrcElement.offsetHeight;
lrcElement.style.setProperty('--tt', remain + 's');
lrcElement.style.setProperty('--state', 'running');
}
}
return;
}
if (idx >= 0 && idx < lyricsData.length) {
currentLrcIndex = idx;
var remain2 = lyricsData.duration;
if (ct > lyricsData.time) remain2 = Math.max(0.2, lyricsData.duration - (ct - lyricsData
.time));
applyLyrics(lyricsData.lrc, remain2);
}
}
function fullRefreshLyrics() {
if (audio.duration) refreshLrc(audio.currentTime);
}
function updateUI() {
if (!audio.duration) return;
var pct = (audio.currentTime / audio.duration) * 100;
playedBar.style.width = pct + '%';
timeDisplay.textContent = formatTime(audio.currentTime) + ' / ' + formatTime(audio.duration);
refreshLrc(audio.currentTime);
if (audio.buffered.length) {
var loaded = audio.buffered.end(audio.buffered.length - 1);
loadedBar.style.width = Math.min((loaded / audio.duration) * 100, 100) + '%';
}
}
function play() {
audio.play().then(function() {
isPlaying = true;
updateBtnUI();
lrcElement.style.setProperty('--state', 'running');
fullRefreshLyrics();
}).catch(function(e) { console.log("播放失败,请手动点击"); });
}
function pause() {
audio.pause();
isPlaying = false;
updateBtnUI();
lrcElement.style.setProperty('--state', 'paused');
}
function togglePlay() { isPlaying ? pause() : play(); }
function prevSong() {
var idx = (currentIndex - 1 + songs.length) % songs.length;
loadSong(idx);
if (!isPlaying) play();
else audio.play().catch(function() {});
}
function nextSong() {
var idx = (currentIndex + 1) % songs.length;
loadSong(idx);
if (!isPlaying) play();
else audio.play().catch(function() {});
}
function toggleLoop() {
loopMode = 1 - loopMode;
loopBtn.style.backgroundPosition = loopMode ? 'center top' : 'left top';
}
function setProgressByEvent(e) {
var rect = progressTrack.getBoundingClientRect();
var x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
if (audio.duration && !isNaN(audio.duration) && isFinite(audio.duration) && audio.duration > 0) {
audio.currentTime = x * audio.duration;
}
playedBar.style.width = (x * 100) + '%';
timeDisplay.textContent = formatTime(audio.currentTime) + ' / ' + formatTime(audio.duration);
}
function setVolume(val) {
volume = Math.max(0, Math.min(1, val));
audio.volume = volume;
volFill.style.height = (volume * 100) + '%';
volBtn.style.backgroundPosition = (volume === 0 ? 'right top' : 'left top');
}
function setVolumeByEvent(e) {
var rect = volAdjust.getBoundingClientRect();
var y = Math.max(0, Math.min(1, 1 - (e.clientY - rect.top) / rect.height));
setVolume(y);
}
function openDropdown() { renderSongList();
dropdown.classList.add('show'); }
function closeDropdown() { dropdown.classList.remove('show'); }
// ========== 事件绑定 ==========
playBtn.addEventListener('click', togglePlay);
pauseBtn.addEventListener('click', togglePlay);
prevBtn.addEventListener('click', prevSong);
nextBtn.addEventListener('click', nextSong);
loopBtn.addEventListener('click', toggleLoop);
progressTrack.addEventListener('click', function(e) { setProgressByEvent(e); });
progressTrack.addEventListener('mousedown', function(e) {
isDragging = true;
setProgressByEvent(e);
document.addEventListener('mousemove', onDragMove);
document.addEventListener('mouseup', onDragEnd);
e.preventDefault();
});
function onDragMove(e) { setProgressByEvent(e); }
function onDragEnd(e) {
isDragging = false;
setProgressByEvent(e);
document.removeEventListener('mousemove', onDragMove);
document.removeEventListener('mouseup', onDragEnd);
}
volBtn.addEventListener('click', function() { setVolume(volume > 0 ? 0 : 0.8); });
volAdjust.addEventListener('mousedown', function(e) {
setVolumeByEvent(e);
document.addEventListener('mousemove', onVolMove);
document.addEventListener('mouseup', onVolEnd);
e.preventDefault();
});
function onVolMove(e) { setVolumeByEvent(e); }
function onVolEnd(e) {
setVolumeByEvent(e);
document.removeEventListener('mousemove', onVolMove);
document.removeEventListener('mouseup', onVolEnd);
}
playlistBtn.addEventListener('click', function(e) {
e.stopPropagation();
dropdown.classList.contains('show') ? closeDropdown() : openDropdown();
});
closeDropdownBtn.addEventListener('click', closeDropdown);
document.addEventListener('click', function(e) {
if (dropdown.classList.contains('show') && !dropdown.contains(e.target) && e.target !== playlistBtn && !playlistBtn
.contains(e.target)) {
closeDropdown();
}
});
audio.addEventListener('timeupdate', updateUI);
audio.addEventListener('loadedmetadata', function() {
if (lyricsData.length) applyLyrics(lyricsData.lrc, lyricsData.duration);
updateUI();
if (isPlaying) play();
});
audio.addEventListener('ended', function() {
if (loopMode === 1) {
audio.currentTime = 0;
audio.play().catch(function() {});
fullRefreshLyrics();
} else {
nextSong();
}
});
document.addEventListener('keydown', function(e) {
if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') return;
if (e.code === 'Space') { e.preventDefault();
togglePlay(); }
});
// ========== 初始化 ==========
setVolume(0.8);
loopBtn.style.backgroundPosition = 'left top';
loadSong(0);
// 自动播放
setTimeout(function() {
play();
}, 500);
console.log(' 播放器已加载');
</script>
@亚伦影音工作室
亚伦老师 晚上好,学生交作业,请您多指正{:4_190:} 朵拉 发表于 2026-9-13 21:36
@亚伦影音工作室
亚伦老师 晚上好,学生交作业,请您多指正
很漂亮,聪明伶俐! 制作漂亮,歌曲好帖。欣赏朵宝好帖{:4_187:} 欣赏朵拉的美帖,是亚纶的制作?我去看看,这个播放器好像。。。。。 这个播放器皮肤设置了透明,背景黑的,出来就会黑的了,背景要稍微浅一点的颜色。否则旁边几个按钮会看不清楚
页:
[1]