CSS音波條是一種視覺效果,通常用于音頻播放器中,以顯示音頻的強度和頻率。
實現這種效果的方法是使用CSS動畫和偽元素,并結合JavaScript代碼來實時獲取音頻數據。
.wave { position: relative; height: 200px; width: 100%; overflow: hidden; } .wave::before { content: ''; display: block; position: absolute; top: 50%; left: 0; height: 2px; width: 100%; background-color: #f00; animation: wave 2s linear infinite; transform: translateY(-50%); } @keyframes wave { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
上述代碼創建了一個高度為200px、寬度為100%的div容器,并配合偽元素before和CSS動畫來實現音波的效果。
同時,在JavaScript中需要實時獲取音頻數據,并將其轉化為CSS屬性值,以達到實時更新音波的目的。
const audio = document.querySelector('audio'); const wave = document.querySelector('.wave'); const before = document.querySelector('.wave::before'); audio.addEventListener('timeupdate', () =>{ const data = audioData(); // 獲取音頻數據 const scale = 2 * (data / 255) + 0.5; // 根據數據計算scale值 before.style.transform = `scaleX(${scale})`; });
上述代碼使用了addEventListener方法來監聽音頻播放時間的更新,接著獲取音頻數據,并根據數據計算scale值。
最后,將scale值設置為音波偽元素的transform屬性值,即可實現實時更新音波效果。
上一篇css超鏈接字體變粗