audio频谱按钮(有进度条)
<style>.mama { left: 20px; width: fit-content; height: fit-content; position: relative; cursor: pointer; }
.wrap { width: 60px; height: 60px;box-reflect: right; -webkit-box-reflect: right; position: relative; }
.mama meter { width: 120px; height: 20px; position: relative; }
.wrap span { --ww: 6px; width: var(--ww); height: 60px; bottom: -6px; background-color: rgba(255,0,0,.6); display: inline-block; position: absolute; }
.wrap span:nth-child(2) { left: var(--ww); }
.wrap span:nth-child(3) { left: calc(var(--ww) * 2); }
.wrap span:nth-child(4) { left: calc(var(--ww) * 3); }
.wrap span:nth-child(5) { left: calc(var(--ww) * 4); }
.wrap span:nth-child(6) { left: calc(var(--ww) * 5); }
.wrap span:nth-child(7) { left: calc(var(--ww) * 6); }
.wrap span:nth-child(8) { left: calc(var(--ww) * 7); }
.wrap span:nth-child(9) { left: calc(var(--ww) * 8); }
.wrap span:nth-child(10) { left: calc(var(--ww) * 9); }
</style>
<div class="mama">
<div class="wrap"></div>
<meter id="meter" value="0" min="0" max="100" low="33" high="66" optimum="70"></meter>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=33933040.mp3" autoplay="autoplay" loop="loop"></audio>
</div>
<script>
let mama = document.querySelector('.mama'), wrap = document.querySelector('.wrap'), aud = document.querySelector('#aud'), meter = document.querySelector('#meter');
let num = (min, max) => Math.floor(Math.random() * (max-min+1)) + min, prog = (tt, cc) => 100 * cc / tt;
Array.from({length: 10}).forEach((ele) => {
ele = document.createElement('span');
ele.className = 'sskey';
ele.style.backgroundColor = `rgba(${num(0,255)},${num(0,255)},${num(0,255)},.95)`;
wrap.appendChild(ele);
})
let sskey = document.querySelectorAll('.sskey');
mama.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.addEventListener('timeupdate', () => {
Array.from(sskey).forEach((ele) => {
ele.style.height = num(20, 60) + 'px';
})
meter.value = prog(aud.duration, aud.currentTime);
})
</script>
<style>
.mama { left: 20px; width: fit-content; height: fit-content; position: absolute; cursor: pointer; }
.wrap { width: 60px; height: 60px;box-reflect: right; -webkit-box-reflect: right; position: relative; }
.mama meter { width: 120px; height: 20px; position: relative; }
.wrap span { --ww: 6px; width: var(--ww); height: 60px; bottom: -6px; background-color: rgba(255,0,0,.6); display: inline-block; position: absolute; }
.wrap span:nth-child(2) { left: var(--ww); }
.wrap span:nth-child(3) { left: calc(var(--ww) * 2); }
.wrap span:nth-child(4) { left: calc(var(--ww) * 3); }
.wrap span:nth-child(5) { left: calc(var(--ww) * 4); }
.wrap span:nth-child(6) { left: calc(var(--ww) * 5); }
.wrap span:nth-child(7) { left: calc(var(--ww) * 6); }
.wrap span:nth-child(8) { left: calc(var(--ww) * 7); }
.wrap span:nth-child(9) { left: calc(var(--ww) * 8); }
.wrap span:nth-child(10) { left: calc(var(--ww) * 9); }
</style>
<div class="mama">
<div class="wrap"></div>
<meter id="meter" value="0" min="0" max="100" low="33" high="66" optimum="70"></meter>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=33933040.mp3" autoplay="autoplay" loop="loop"></audio>
</div>
<script>
let mama = document.querySelector('.mama'), wrap = document.querySelector('.wrap'), aud = document.querySelector('#aud'), meter = document.querySelector('#meter');
let num = (min, max) => Math.floor(Math.random() * (max-min+1)) + min, prog = (tt, cc) => 100 * cc / tt;
Array.from({length: 10}).forEach((ele) => {
ele = document.createElement('span');
ele.className = 'sskey';
ele.style.backgroundColor = `rgba(${num(0,255)},${num(0,255)},${num(0,255)},.95)`;
wrap.appendChild(ele);
})
let sskey = document.querySelectorAll('.sskey');
mama.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.addEventListener('timeupdate', () => {
Array.from(sskey).forEach((ele) => {
ele.style.height = num(20, 60) + 'px';
})
meter.value = prog(aud.duration, aud.currentTime);
})
</script>
黑黑这个按钮漂亮,小频谱的{:4_178:} 小辣椒 发表于 2022-5-29 14:34
黑黑这个按钮漂亮,小频谱的
作为按钮是不是大了点{:4_170:} 是大了一点{:4_173:} 小辣椒 发表于 2022-5-29 14:38
是大了一点
其实也可以调整,CSS里的尺寸配套就行,JS也有需要配套的 下面那白的进度条可以再短一点吗 进度条在细巧一点,更加漂亮 黑黑老师的这按钮漂亮{:4_187:} 这个更加完美了,连进度也有了{:4_199:} 漂亮的进度条。共10条。老黑厉害!{:4_199:} 小辣椒 发表于 2022-5-29 14:41
下面那白的进度条可以再短一点吗
可以,它的CSS样式由 .wrap meter 控制 加林森 发表于 2022-5-29 17:04
漂亮的进度条。共10条。老黑厉害!
进度条只有一条,频谱有20条 马黑黑 发表于 2022-5-29 17:32
进度条只有一条,频谱有20条
哦,我怎么放不进图片里面呢?烧脑~~~~~~~~~~~~~ 加林森 发表于 2022-5-29 17:33
哦,我怎么放不进图片里面呢?烧脑~~~~~~~~~~~~~
你把下面这个HTML代码,
<div class="mama">
<div class="wrap"></div>
<meter id="meter" value="0" min="0" max="100" low="33" high="66" optimum="70"></meter>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=33933040.mp3" autoplay="autoplay" loop="loop"></audio>
</div>
当成是A,那么:
<div .....>
你的帖子代码
A
你的帖子其他代码
</div>
马黑黑 发表于 2022-5-29 17:36
你把下面这个HTML代码,
好的好的,谢谢老黑。我等就去试一试。 加林森 发表于 2022-5-29 17:38
好的好的,谢谢老黑。我等就去试一试。
把HTML部分当做一个单位,然后完整放在你帖子的父容器里面,适当定位 马黑黑 发表于 2022-5-29 17:41
把HTML部分当做一个单位,然后完整放在你帖子的父容器里面,适当定位
嗯嗯。{:5_108:} 小辣椒 发表于 2022-5-29 14:43
进度条在细巧一点,更加漂亮
这都可以弄的,一切在CSS里