html中css
<div id="container"> <ul class="Umusic"> <li class="clickMusic">打上火花</li> <li>Lemon</li> <li>You Are The Reason</li> <li>Dancing With Your Ghost</li> </ul> <audio src="" controls class="music"></audio> </div>
css樣式html
<style> *{ margin: 0; padding: 0; text-decoration: none; list-style: none; } #container{ width: 450px; height: 450px; margin: 20px auto; border: 1px solid gray; border-radius: 8px; background-image: url('./bg.jpg'); background-size: contain; } #container ul{ margin: 9px; background-color: rgba(1, 1, 1, .2); height: 380px; border-radius: 4px; } #container ul li{ text-align: center; padding: 8px 20px; line-height: 40px; color: #fff; } #container .music{ width: 100%; } #container ul li:hover{ height: 40px; background-color: #F0F8FF; border-radius: 6px; width: 390px; color: #000; cursor: pointer; opacity: .7; } #container .clickMusic{ height: 40px; background-color: #F0F8FF; border-radius: 6px; width: 390px; color: #000; } </style>
js中閉包
<script> // dom var Omusic = document.getElementsByClassName('music')[0]; var OUmusic = document.getElementsByClassName('Umusic')[0]; var Oli = document.getElementsByTagName('li'); // 用於存儲音樂,此處如下載爲例 var musicTemp = ['./DAOKO,米津玄師 - 打上花火.mp3', './Lemon.mp3', './You Are The Reason.mp3', './Dancing With Your Ghost.mp3']; Omusic.src = musicTemp[0]; for(var i = 0; i < Oli.length; i++){ // 避免閉包 (function(i){ // 點擊播放 var flag = true Oli[i].onclick = function(){ flag = !flag; if(flag && Oli[i].getAttribute('class') == 'clickMusic'){ // 點擊暫停 Omusic.pause(); }else{ Omusic.src = musicTemp[i]; Omusic.play(); // 將其他類名置空 for(var j = 0; j < Oli.length; j++){ Oli[j].className = ''; }; } Oli[i].className = 'clickMusic'; } })(i) } // 循環播放 Omusic.onended = function(){ var ended = getPlay(); if(ended == Oli.length - 1){ // 當前爲最後一首 Omusic.src = musicTemp[0]; Oli[0].className = 'clickMusic'; Oli[ended].className = ''; Omusic.play(); }else{ Omusic.src = musicTemp[ ended + 1 ]; Oli[ended + 1].className = 'clickMusic'; Oli[ended].className = ''; Omusic.play(); } } // 得到當前播放 function getPlay(){ for(var i = 0; i < Oli.length; i++){ if(Oli[i].className == 'clickMusic'){ return i; } } }