真正的小播?
<style>#mplayer {
position: absolute;
width: 30px;
height: 30px;
border: 2px solid var(--bd);
border-radius: 50%;
box-shadow: 0 0 10px var(--sd);
transition: .7s;
cursor: pointer;
display: grid;
place-items: center;
--play: 1; --pause: 0; --bd: black; --sd: black;
}
#mplayer::before, #mplayer::after {
position: absolute;
content: '';
border-style: solid;
border-color: var(--bd);
transition: .4s;
}
#mplayer::before {
width: 0;
height: 0;
left: 10px;
border-width: 10px 12px;
border-color: transparent transparent transparent var(--bd);
opacity: var(--play);
}
#mplayer::after {
width: 2px;
height: 16px;
border-width: 0 4px 0 4px;
opacity: var(--pause);
}
#mplayer:hover { box-shadow: 0 0 10px var(--sd), 0 0 10px var(--sd) inset; }
</style>
<div id="mplayer"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=304943" loop></audio>
<script>
let mState = () => aud.paused ? (mplayer.style.setProperty('--play', '1'), mplayer.style.setProperty('--pause', '0')) : (mplayer.style.setProperty('--play', '0'),mplayer.style.setProperty('--pause', '1'));
mplayer.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.addEventListener('play', mState,false);
aud.addEventListener('pause', mState,false);
</script> 代码
<style>
#mplayer {
position: absolute;
width: 30px;
height: 30px;
border: 2px solid var(--bd);
border-radius: 50%;
box-shadow: 0 0 10px var(--sd);
transition: .7s;
cursor: pointer;
display: grid;
place-items: center;
--play: 1; --pause: 0; --bd: black; --sd: black;
}
#mplayer::before, #mplayer::after {
position: absolute;
content: '';
border-style: solid;
border-color: var(--bd);
transition: .4s;
}
#mplayer::before {
width: 0;
height: 0;
left: 10px;
border-width: 10px 12px;
border-color: transparent transparent transparent var(--bd);
opacity: var(--play);
}
#mplayer::after {
width: 2px;
height: 16px;
border-width: 0 4px 0 4px;
opacity: var(--pause);
}
#mplayer:hover { box-shadow: 0 0 10px var(--sd), 0 0 10px var(--sd) inset; }
</style>
<div id="mplayer"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=304943" loop></audio>
<script>
let mState = () => aud.paused ? (mplayer.style.setProperty('--play', '1'), mplayer.style.setProperty('--pause', '0')) : (mplayer.style.setProperty('--play', '0'),mplayer.style.setProperty('--pause', '1'));
mplayer.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.addEventListener('play', mState,false);
aud.addEventListener('pause', mState,false);
</script>
这么小个东东,这么多代码 雨中悄然 发表于 2023-3-26 19:41
这么小个东东,这么多代码
都是CSS代码。CSS使用描述性属性去指定 <div id="mplayer"></div> 的样式,一个HTML单标签,它能如此交互,CSS做了大量的工作,还有多数的动态交互,由JS完成。 这个还挺好看的呢{:4_187:} opacity: var(--play); 这个做法有点不明白。这个使用透明度来回切换的么? 红影 发表于 2023-3-26 20:06
opacity: var(--play); 这个做法有点不明白。这个使用透明度来回切换的么?
播放按钮是三角形,暂停按钮是两个竖杠(中队长?),它们放在同一个位置,一个时间里只显示其中的一个。所以用不透明度来处理它们:
opacity: var(--play); 中,--paly 变量指播放按钮的不透明度;--pause 变量则是停止按钮的不透明度。
然后,根据音频播放状态,JS 给这些CSS变量进行赋值(mState函数)。
这样,就达成了预期的只显示一个按钮的效果。 红影 发表于 2023-3-26 20:04
这个还挺好看的呢
好看不好看不重要,关键是小而美{:4_170:} 小而美的播放器,好看{:4_187:} 千羽 发表于 2023-3-26 21:06
小而美的播放器,好看
谢谢 我看到一个按钮。 庶民 发表于 2023-3-27 05:51
我看到一个按钮。
就是一个按钮 这个小播放器,小巧玲珑{:4_199:} 最早黑黑分享的有个播放器有加滚动条的,和这个好像差不多的 这个小播加了阴影效果 漂亮的,做小帖最合适了 小辣椒 发表于 2023-3-27 13:28
漂亮的,做小帖最合适了
{:4_181:} 马黑黑 发表于 2023-3-27 17:22
大图也是可以做的,简洁,反而漂亮 小辣椒 发表于 2023-3-27 17:25
大图也是可以做的,简洁,反而漂亮
说得好像也有道理 马黑黑 发表于 2023-3-27 17:25
说得好像也有道理
这个应该是人人喜欢的,玩纯音画的也是可以用的