|
|

楼主 |
发表于 2023-3-25 08:47
|
显示全部楼层
帖子代码
- <style>
- #papa {
- margin: 80px 0 0 calc(50% - 593px);
- width: 1024px;
- height: 640px;
- background: url('https://638183.freep.cn/638183/t23/1/dswu.jpg') center/cover no-repeat;
- position: relative;
- --state: running;
- }
- #papa:hover #mplayer { display: block; }
- #mplayer {
- position: absolute;
- width: 80px;
- height: 160px;
- left: 15px;
- bottom: 15px;
- background: darkgreen;
- border-radius: 6px;
- box-shadow: 2px 2px 4px lightgreen;
- pointer-events: none;
- transition: all .8s;
- display: none;
- }
- #mplayer::before, #mplayer::after {
- position: absolute;
- content: '';
- }
- #mplayer::before {
- width: 30px;
- height: 30px;
- left: calc(50% - 15px);
- bottom: 15px;
- border-radius: 50%;
- background: green;
- pointer-events: auto;
- cursor: pointer;
- border: 2px solid snow;
- box-shadow: 0 0 10px white inset, 0 0 10px white;
- animation: flash .35s infinite alternate var(--state);
- }
- #mplayer::after {
- content: attr(data-tt);
- top: 6px;
- right: 6px;
- bottom: 60px;
- left: 6px;
- font-size: 14px;
- text-align: center;
- white-space: pre;
- padding: 6px 2px;
- background: lightgreen;
- }
- #mplayer:hover { transform: rotate(10deg); }
- #mplayer:hover::before { background: red; }
- #canv {
- position: absolute;
- display: block;
- mix-blend-mode: difference;
- }
- #vid { display: none; }
- @keyframes flash { to { box-shadow: 0 0 50px green inset, 0 0 10px white; } }
- </style>
- <div id="papa">
- <canvas id="canv"></canvas>
- <div id="mplayer" data-tt="HCPlayer
- 00:00
- 00:00"></div>
- </div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=484088500" loop autoplay></audio>
- <video id="vid" src="https://img.tukuppt.com/video_show/2629112/00/01/91/5b4d7c5becb5a.mp4" loop muted></video>
- <script>
- let ctx = canv.getContext('2d');
- let ww = canv.width = 1024, hh = canv.height = 300;
- let loop = () => {ctx.drawImage(vid, 0, 50, ww, hh, 0, 0, ww + 70, hh);if(!vid.paused) {requestAnimationFrame(loop);return;}};
- 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;};
- let mState = () => aud.paused ? (papa.style.setProperty('--state', 'paused'),vid.pause()) : (papa.style.setProperty('--state', 'running'),vid.play());vid.playbackRate = 0.5;
- vid.addEventListener('play', loop, false);
- aud.addEventListener('play', () => mState());
- aud.addEventListener('pause', () => mState());
- aud.addEventListener('timeupdate', () => mplayer.dataset.tt = '东吴\x0a\x0a' + toMin(aud.duration) + '\x0a' + toMin(aud.currentTime));
- mplayer.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
- </script>
复制代码
|
|