|
|

楼主 |
发表于 2023-4-6 13:13
|
显示全部楼层
本帖最后由 马黑黑 于 2023-4-6 13:22 编辑
代码
- <style>
- .mplayer {
- width: 200px;
- height: 30px;
- border: 1px solid darkgreen;
- border-radius: 6px;
- filter: drop-shadow(2px 2px 6px black);
- cursor: pointer;
- position: relative;
- --ww: 0; --bg: dargreen; --time: .2s;
- }
- .mplayer::before, .mplayer::after {
- position: absolute;
- content: '';
- background: var(--bg);
- }
- .mplayer::before {
- width: var(--ww);
- height: 100%;
- border-radius: 6px;
- opacity: .65;
- }
- .mplayer::after {
- width: 12px;
- height: 20px;
- top: 5px;
- right: -12px;
- opacity: 1;
- animation: flash var(--time) infinite alternate;
- }
- @keyframes charging { to { width: 100%; } }
- @keyframes flash { from { background: darkgreen; } to { background: red; } }
- </style>
- <div class="mplayer"></div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=27571858" autoplay loop></audio>
- <script>
- let mplayer = document.querySelector('.mplayer');
- let mState = () => aud.paused
- ? (mplayer.style.setProperty('--bg', 'gray'), mplayer.style.setProperty('--time','.2s'))
- : (mplayer.style.setProperty('--bg', 'darkgreen'), mplayer.style.setProperty('--time','1s'));
- mplayer.onclick = (e) => {
- let x = e.offsetX, w = mplayer.offsetWidth;
- if(x > w) aud.paused ? aud.play() : aud.pause();
- if(x < w) aud.currentTime = aud.duration*x/w;
- };
- mplayer.onmousemove = (e) => {
- let x = e.offsetX, w = mplayer.offsetWidth;
- if(x > w) mplayer.title = '播放/暂停';
- if(x < w) mplayer.title = '调节进度';
- };
- aud.addEventListener('play', mState, false);
- aud.addEventListener('pause', mState, false);
- aud.addEventListener('timeupdate', () => {
- mplayer.style.setProperty('--ww', aud.currentTime*mplayer.offsetWidth/aud.duration + 'px');
- });
- </script>
复制代码
|
|