爱情里没有谁对谁错--学习图片转换效果
<style>#papa { --state: running; --showbackface: visible; margin: 130px 0 30px calc(50% - 781px); width: 1400px; height: 710px; background: url('https://xlaj.cn/upfile/2025/02/14/002.jpg') no-repeat center/cover; box-shadow: 2px 2px 8px rgba(0,0,0,.5); perspective: 4000px; z-index: 1; position: relative; }
#papa:hover #backface { display: inline-block; }
#mplayer { position: absolute; left: 320px; top: 110px; width: 150px; height: 260px; transform-style: preserve-3d; display: grid;place-item: center; animation: rot 20s linear infinite var(--state); }
#mplayer:hover { --state: paused; }
.image { position: absolute; width: 100%; height: 100%; border-radius: 8px; filter: drop-shadow(2px 2px 20px #000); cursor: pointer; transition: .7s; backface-visibility: var(--showbackface); transform: rotateY(var(--deg)) translateZ(300px); }
.image:hover { transform: rotateY(var(--deg)) translateZ(300px) scale(1.2); }
#backface { position: absolute; bottom: 35%;left: 35%; border-radius: 6px; cursor: pointer; display: none; }
@keyframes rot { to { transform: rotateY(360deg); } }
</style>
<div id="papa">
<div id="mplayer"></div>
<input id="backface" type="button" value="隐藏背面" />
<audio id="aud" src="https://i.mp3.wf/223347596.mp3" autoplay loop></audio>
</div>
<script>
var mState = () => {
papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
mplayer.title = aud.paused ? '点击播放' : '点击暂停';
};
var pics = [
'https://xlaj.cn/upfile/2025/02/14/01.jpg',
'https://xlaj.cn/upfile/2025/02/14/02.jpg',
'https://xlaj.cn/upfile/2025/02/14/03.jpg',
'https://xlaj.cn/upfile/2025/02/14/04.jpg',
'https://xlaj.cn/upfile/2025/02/14/05.jpg',
'https://xlaj.cn/upfile/2025/02/14/06.jpg',
'https://xlaj.cn/upfile/2025/02/14/07.jpg',
'https://xlaj.cn/upfile/2025/02/14/08.jpg',
];
Array.from({length: pics.length}).forEach((img,key) => {
img = document.createElement('img');
img.className = 'image';
img.style.cssText += `--deg: ${key * 360 / pics.length}deg`;
img.src = pics;
mplayer.appendChild(img);
});
aud.onpause = aud.onplaying = () => mState();
mplayer.onclick = () => aud.paused ? aud.play() : aud.pause();
backface.onclick = () => {
if(backface.value === '隐藏背面') {
papa.style.setProperty('--showbackface', 'hidden');
backface.value = '显示背面';
}else{
papa.style.setProperty('--showbackface', 'visible');
backface.value = '隐藏背面';
}
};
papa.scrollIntoView(true);
</script> 一样的歌曲,一样的背景,不一样的特效{:5_150:} 欣赏小辣椒的图片转换特效{:5_150:}
页:
[1]