当前位置:首页 > CSS

css制作频谱

2026-02-13 04:37:17CSS

使用 CSS 制作音频频谱

使用 CSS 动画和伪元素

通过 CSS 动画和伪元素可以模拟简单的频谱效果。定义一个容器,内部包含多个条形元素,每个条形通过 @keyframes 动画实现高度变化。

<div class="spectrum">
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
  <!-- 更多条形 -->
</div>
.spectrum {
  display: flex;
  align-items: flex-end;
  height: 100px;
  gap: 2px;
}

.bar {
  width: 10px;
  background: linear-gradient(to top, #ff00ff, #00ffff);
  animation: equalize 1.5s infinite alternate;
}

@keyframes equalize {
  0% { height: 10%; }
  100% { height: 100%; }
}

/* 为每个条形设置不同的动画延迟 */
.bar:nth-child(1) { animation-delay: 0.1s; }
.bar:nth-child(2) { animation-delay: 0.3s; }
.bar:nth-child(3) { animation-delay: 0.5s; }

结合 JavaScript 和 CSS 变量

通过 JavaScript 动态更新 CSS 变量,实现更真实的频谱效果。使用 AudioContext 分析音频数据,将频率数据映射到条形高度。

<div class="spectrum" id="spectrum"></div>
<audio id="audio" src="music.mp3" controls></audio>
const audio = document.getElementById('audio');
const spectrum = document.getElementById('spectrum');
const ctx = new AudioContext();
const analyser = ctx.createAnalyser();
const source = ctx.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(ctx.destination);

// 创建频谱条形
for (let i = 0; i < 32; i++) {
  const bar = document.createElement('div');
  bar.className = 'bar';
  bar.style.setProperty('--height', '0');
  spectrum.appendChild(bar);
}

function updateSpectrum() {
  const dataArray = new Uint8Array(analyser.frequencyBinCount);
  analyser.getByteFrequencyData(dataArray);
  const bars = document.querySelectorAll('.bar');

  bars.forEach((bar, i) => {
    const height = dataArray[i] / 2;
    bar.style.setProperty('--height', `${height}%`);
  });
  requestAnimationFrame(updateSpectrum);
}

audio.addEventListener('play', () => {
  ctx.resume();
  updateSpectrum();
});
.spectrum {
  display: flex;
  align-items: flex-end;
  height: 200px;
  gap: 2px;
}

.bar {
  width: 8px;
  background: linear-gradient(to top, #ff00ff, #00ffff);
  height: var(--height);
  transition: height 0.1s ease-out;
}

使用 CSS 滤镜增强效果

通过 filter 属性为频谱添加发光或颜色效果,提升视觉冲击力。

.spectrum {
  filter: drop-shadow(0 0 5px rgba(0, 255, 255, 0.7));
}

.bar {
  mix-blend-mode: screen;
}

响应式设计

通过媒体查询调整频谱大小和布局,确保在不同设备上正常显示。

@media (max-width: 600px) {
  .spectrum {
    height: 120px;
  }
  .bar {
    width: 4px;
  }
}

css制作频谱

标签: 频谱css
分享给朋友:

相关文章

css如何制作圆

css如何制作圆

使用 border-radius 属性制作圆 通过设置 border-radius 属性为元素添加圆角效果。当 border-radius 的值等于元素宽度和高度的一半时,元素会呈现圆形。 .ci…

css制作按钮

css制作按钮

基础按钮样式 创建一个基础的CSS按钮样式,可以通过以下代码实现。这个例子包含了按钮的基本属性,如背景色、边框、内边距和文字样式。 .button { background-color: #4…

css样式表制作

css样式表制作

CSS样式表制作基础 CSS(层叠样式表)用于控制网页的视觉呈现。通过CSS可以定义字体、颜色、布局等样式属性。 内联样式 直接在HTML标签中使用style属性定义样式: <p style…

min.css制作

min.css制作

使用 min.css 制作轻量级样式 min.css 是一个极简的 CSS 框架,专注于轻量化和快速加载。以下是如何使用 min.css 进行开发的步骤。 引入 min.css 通过 CDN 直接引…

css焦点图制作

css焦点图制作

使用纯CSS制作焦点图 通过CSS的动画和过渡效果实现简单焦点图轮播,无需JavaScript。以下是一个基础实现方案: <div class="slider"> <div c…

css制作滑动页面

css制作滑动页面

使用CSS实现滑动页面 通过CSS可以实现多种滑动页面效果,包括横向滑动、纵向滑动以及视差滚动等。以下是几种常见的实现方法: 横向滑动效果 横向滑动通常用于展示一组卡片或图片,可以通过CSS的ove…