<script type="module">
var per = 0,
step = 0.008,
aniCounter = 0,
raf,
baseInterval = 24000,
interval = baseInterval,
isPlaying = true,
isAudioPlaying = true,
animationTimeout;
var pics = [
'https://image.hnol.net/c/2025-08/24/16/202508241636173411-5083785.jpg',
'https://image.hnol.net/c/2025-08/24/16/202508241636349341-5083785.jpg',
'https://image.hnol.net/c/2025-08/24/16/202508241636495991-5083785.jpg',
'https://image.hnol.net/c/2025-08/24/16/202508241636173411-5083785.jpg',
];
// 获取DOM元素
const loadingIndicator = document.querySelector('.loading-indicator');
const audioElement = document.getElementById('aud');
const pa = document.getElementById('pa');
// 音频控制函数
function toggleAudio() {
if (audioElement.paused) {
audioElement.play().then(() => {
isAudioPlaying = true;
}).catch(e => {
console.log('播放:', e);
});
} else {
audioElement.pause();
isAudioPlaying = false;
}
}
// 页面交互触发自动播放
function handleInteraction() {
if (!isAudioPlaying) {
audioElement.play().then(() => {
isAudioPlaying = true;
}).catch(e => {
console.log('交互触发播放:', e);
});
}
document.removeEventListener('click', handleInteraction);
document.removeEventListener('touchstart', handleInteraction);
}
function preloadImages() {
loadingIndicator.style.display = 'block';
let loadedCount = 0;
pics.forEach(src => {
const img = new Image();
img.src = src;
img.onload = img.onerror = () => {
loadedCount++;
if (loadedCount === pics.length) {
loadingIndicator.style.display = 'none';
}
};
});
}
let animationStartTime;
function startAnimationLoop() {
if (isPlaying) {
clearTimeout(animationTimeout);
animationStartTime = Date.now();
animationTimeout = setTimeout(() => {
changeToNextPic();
}, interval);
}
}
function changeToNextPic() {
loadingIndicator.style.display = 'block';
aniCounter = (aniCounter + 1) % pics.length;
updateCurtainAndBackground(() => {
loadingIndicator.style.display = 'none';
});
}
function updateCurtainAndBackground(callback) {
const picIdx = aniCounter % pics.length;
document.querySelectorAll('.curtain-transition').forEach(el => el.remove());
const leftCurtain = document.createElement('div');
leftCurtain.className = 'curtain-transition curtain-left';
leftCurtain.style.backgroundImage = `url(${pics[picIdx]})`;
pa.appendChild(leftCurtain);
const rightCurtain = document.createElement('div');
rightCurtain.className = 'curtain-transition curtain-right';
rightCurtain.style.backgroundImage = `url(${pics[picIdx]})`;
pa.appendChild(rightCurtain);
const img = new Image();
img.src = pics[picIdx];
img.onload = img.onerror = callback;
setTimeout(() => {
pa.style.setProperty('--bg1', `url(${pics[picIdx]}) no-repeat center/cover`);
}, 2000);
const video = document.querySelector('.qk-vid');
video.style.opacity = '0.3';
setTimeout(() => {
video.style.opacity = '0.6';
}, 2000);
cancelAnimationFrame(raf);
per = 0;
changePic();
if (isPlaying) {
startAnimationLoop();
}
}
function changePic() {
if (per > 100) {
per = 0;
} else if (isPlaying) {
per += step;
document.documentElement.style.setProperty('--per', per + '%');
raf = requestAnimationFrame(changePic);
}
}
// 绑定交互事件
document.addEventListener('click', handleInteraction);
document.addEventListener('touchstart', handleInteraction);
document.addEventListener('keydown', (e) => {
if (e.key.toLowerCase() === 'm') {
toggleAudio();
e.preventDefault();
}
});
// 初始化
preloadImages();
startAnimationLoop();
changePic();
// 尝试自动播放音乐
window.addEventListener('load', () => {
if (audioElement.paused) {
audioElement.play().then(() => {
isAudioPlaying = true;
}).catch(e => {
console.log('等待用户交互:', e);
});
}
});
</script>