隨著現代科技的日益發展,人們對于音樂的體驗也越來越高要求,音樂可視化便應運而生。本文將介紹如何使用CSS來實現音樂可視化。
//CSS代碼 #audio { display: none; } #canvas { position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; width: 100%; height: 100%; //設置背景色或圖片 background-color: #000; } @media screen and (max-width: 767px) { #canvas { width: 100%; height: 100%; } } @media screen and (min-width: 768px) and (max-width: 991px) { #canvas { width: 70%; height: 70%; } } @media screen and (min-width: 992px) { #canvas { width: 60%; height: 60%; } }
在這里我們定義了一個音頻文件和一個畫布元素,音頻文件默認不顯示。
接下來,我們需要通過JavaScript來獲取音頻信息并將其傳遞到CSS中。
//JavaScript代碼 var audio = document.getElementById("audio"); var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); audio.src = "music.mp3"; audio.controls = true; audio.loop = true; audio.autoplay = true; var audioContext = new(window.AudioContext || window.webkitAudioContext)(); var analyser = audioContext.createAnalyser(); var source = audioContext.createMediaElementSource(audio); source.connect(analyser); analyser.connect(audioContext.destination); analyser.fftSize = 256; var bufferLength = analyser.frequencyBinCount; var dataArray = new Uint8Array(bufferLength); function draw() { requestAnimationFrame(draw); analyser.getByteFrequencyData(dataArray); ctx.fillStyle = "#000"; ctx.fillRect(0, 0, canvas.width, canvas.height); var barWidth = canvas.width / bufferLength * 2.5; var barHeight; var x = 0; for (var i = 0; i< bufferLength; i++) { barHeight = dataArray[i]; ctx.fillStyle = "#FFF"; ctx.fillRect(x, canvas.height - barHeight, barWidth, barHeight); x += barWidth + 1; } } draw();
這段JavaScript代碼負責創建一個AudioContext對象以及創建音頻源,之后通過createMediaElementSource()和createAnalyser()方法連接起來,這樣就可以獲取音頻數據了。
在函數draw()內獲取到音頻信息后,我們通過Canvas API來繪制可視化圖形。
最后附上HTML代碼:
//HTML代碼
以上就是使用CSS來實現音樂可視化的全部內容。
上一篇css制作首頁
下一篇mysql數據獨立馬