音乐均衡器
本帖最后由 亚伦影音工作室 于 2024-11-14 02:16 编辑 <br /><br /><style>#papa{
position: relative;
width: 1286px;
height: 720px;
margin-left:-320px;
margin-top:10px;
border: 0px solid rgba(36, 201, 219,.95);
border-radius: 0px;
background:#000 url(https://pic.imgdb.cn/item/663f35c30ea9cb1403eface5.jpg)no-repeat center/cover;
overflow: hidden;
}
#mdiv {top:12%; left:85%;cursor: pointer;width:120px;height: 120px;animation:rot 10s linear infinite ;position: absolute;filter:drop-shadow(#000 0px 0 1px);z-index: 40;}
@keyframes rot { to { transform: rotate(2turn);} }
.equalizer {
display: flex;
margin-left:140px;
height: 10rem;
margin-top: 460px;
}
.equalizer-bar {
width: 1.5rem;
margin: 0 3px;
display: flex;
flex-direction: column-reverse;
}
.equalizer-bar span {
display: block;
height: 4px;
border-radius: 1px;
width: 100%;
margin: 2px 0;
background-color: #FFF;
transition: .2s ease all;
opacity: 1;
}
.equalizer-bar:nth-child(1) span {
background: #fc0127;
}
.equalizer-bar:nth-child(2) span {
background: #fff000;
}
.equalizer-bar:nth-child(3) span {
background: #00ffd3;
}
.equalizer-bar:nth-child(4) span {
background: #fff7fe9;
}
.equalizer-bar:nth-child(5) span {
background: #00ffa9;
}
.equalizer-bar:nth-child(6) span {
background: #f80ad7;
}
.equalizer-bar:nth-child(7) span {
background: #fff5e2;
}
.equalizer-bar:nth-child(8) span {
background: #ff0cfc;
}
.equalizer-bar:nth-child(9) span {
background: #f2fe46;
}
.equalizer-bar:nth-child(10) span {
background: #fffb0f;
}
.equalizer-bar:nth-child(11) span {
background: #f7f611;
}
.equalizer-bar:nth-child(12) span {
background: #00ff06;
}
.equalizer-bar:nth-child(13) span {
background: #f7a414;
}
.equalizer-bar:nth-child(14) span {
background: #fc6b02;
}
.equalizer-bar:nth-child(15) span {
background: #df1506;
}
</style>
<div id="papa">
<div class="equalizer">
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
<div class="equalizer-bar">
<span></span>
</div>
</div>
<div><img id="mdiv"src="https://pic.imgdb.cn/item/671d8801d29ded1a8cbb3fa7.png"></div>
<audio id="aud" src="https://s2.ananas.chaoxing.com/sv-w7/audio/94/e5/03/91ca6733d7423dca393c8008d7aa0374/audio.mp3" autoplay loop ></audio>
</div>
<script>
mdiv.onclick = () => aud.paused ? (aud.play()): (aud.pause());
aud.addEventListener('playing', () =>mdiv.style.animationPlayState = 'running');
aud.addEventListener('pause', () =>mdiv.style.animationPlayState = 'paused');
mdiv.style.animationPlayState = aud.paused ? 'paused' : 'running';
const MAX_BAR_HEIGHT = 18;
addBarSpans();
setInterval(() => {
setRandomBars();
}, 200);
// Main programm (repeats)
function setRandomBars(maxBarHeight) {if(!aud.paused) {
const bars = document.getElementsByClassName('equalizer-bar');
for(let i = 0; i < bars.length; i++) {
let spans = bars.getElementsByTagName('span');
let activeSpanCount = getActiveSpans(spans);
let newHeight = getRandomHeight(MAX_BAR_HEIGHT);
for(let j = 0; j < spans.length; j++) {
if(newHeight > activeSpanCount) {
spans.style.opacity = '1';
} else if(j > newHeight) {
spans.style.opacity = '0';
}
// set little opacity
let upperSpan = MAX_BAR_HEIGHT - j;
if(newHeight > MAX_BAR_HEIGHT-5 && upperSpan < 5) {
spans.style.opacity = '0.' + upperSpan;
}
}
}
}}
// Returns the number of active spans
function getActiveSpans(spans) {
let counter = 0;
for(let i = 0; i < spans.length; i++) {
if(spans.style.opacity > 0) counter++;
}
return counter;
}
// Returns a random number between 1 and 20
function getRandomHeight(maxBarHeight) {
return Math.round(Math.random() * (maxBarHeight - 1)) + 1;
}
// Add the default spans
function addBarSpans() {
const bars = document.getElementsByClassName('equalizer-bar');
let html = '';
for(let j = 0; j < MAX_BAR_HEIGHT; j++) {
html += '<span></span>';
}
for(let i = 0; i < bars.length; i++) {
bars.innerHTML = html;
}
}
</script>
好听好看,谢谢亚伦影音工作室友友精彩分享{:4_199:} 漂亮,加分后甩出论坛了,可能我手机的原因 音乐和效果都很完美{:4_178:} 这个均衡器还是代码做的呢,漂亮。
欣赏亚伦老师好帖{:4_199:} 问候老师好!精美音乐均衡器佳作,精心制作分享!为您点赞!向您学习!{:5_116:}{:4_204:} 亚伦太棒了{:4_178:} 这个效果真美,现在手机,等一下开电脑上去取代码,小辣椒学习套用玩一个{:4_205:} 感谢亚伦的精彩分享{:4_199:}
页:
[1]