当前位置:首页 > 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;
}

响应式设计

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

css制作频谱

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

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

相关文章

网页制作css是什么

网页制作css是什么

CSS的定义与作用 CSS(Cascading Style Sheets,层叠样式表)是一种用于描述网页外观和格式的样式语言。它通过定义HTML元素的布局、颜色、字体等视觉属性,实现内容与表现的分离,…

css制作菜单

css制作菜单

CSS 制作菜单的方法 使用 CSS 可以制作多种风格的菜单,包括水平菜单、垂直菜单、下拉菜单等。以下是几种常见的实现方式。 水平菜单 水平菜单通常用于导航栏,可以通过 display: inlin…

css制作表格

css制作表格

CSS 制作表格的方法 使用 CSS 可以灵活地创建和样式化表格,以下是几种常见的方法: 使用 HTML 表格标签结合 CSS 样式 通过 HTML 的 <table>、<tr&g…

淘宝css导航栏制作

淘宝css导航栏制作

淘宝CSS导航栏制作 制作类似淘宝的导航栏需要关注几个关键点:结构清晰、响应式设计、悬停效果以及图标使用。以下是具体实现方法: HTML结构 <div class="nav-container…

css制作六边形

css制作六边形

使用 CSS 制作六边形 方法一:使用 clip-path 属性 通过 clip-path 直接定义六边形的路径,简单高效且支持动画效果。 .hexagon { width: 100px;…

css制作彩虹

css制作彩虹

使用CSS线性渐变制作彩虹 通过CSS的linear-gradient属性可以创建彩虹效果。彩虹通常由红、橙、黄、绿、蓝、靛、紫七种颜色组成。 .rainbow { width: 100%;…