代码:
<style>
#tz { --state: running; margin: auto; width: 460px; height: 640px; display: grid; place-items: center; }
#mypic { width: 100%; height: 100%; border-radius: 50%; }
@keyframes in1 {
0% { width: 0; height: 0; transform: rotate(0); }
60% { width: 100%; height: 100%; transform: rotate(-720deg) }
90% { width: 100%; height: 100%; transform: rotate(-720deg); }
100% { width: 0; height: 0; transform: rotate(0); }
}
@keyframes in2 {
0% { width: 0; height: 0; transform: rotate(0); }
60% { width: 100%; height: 100%; transform: rotate(720deg) }
90% { width: 100%; height: 100%; transform: rotate(720deg); }
100% { width: 0; height: 0; transform: rotate(0); }
}
</style>
<div id="tz">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1822435381" autoplay loop></audio>
<img id="mypic" src="https://n.sinaimg.cn/sinakd20118/500/w2000h2500/20200618/4de3-ivffpcs2449712.jpg" alt="" />
</div>
<p style="text-align: center"><button id="btnCtrl" type="button" value="controls">播放图片</button></p>
<script>
var picIdx = 0, pTimer = null, anis = ['in1', 'in2']; //图片索引、计时器标识、动画名称
var picAr = [
'图片1',
'图片2',
'图片3',
'图片N',
];
var showPics = (pics, time = 5000) => {
mypic.src = pics[picIdx];
mypic.style.animation = `${anis[picIdx % 2]} ${time}ms forwards var(--state)`;
picIdx = (picIdx + 1) % pics.length;
pTimer = setTimeout( () => {
showPics(pics, time);
}, time);
};
var mState = () => {
if(aud.paused) {
tz.style.setProperty('--state', 'paused');
btnCtrl.textContent = '播放';
clearTimeout(pTimer);
}else{
tz.style.setProperty('--state', 'running');
showPics(picAr, 10000);
btnCtrl.textContent = '暂停';
}
};
btnCtrl.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.onplaying = aud.onpause = () => mState();
</script>
|