经过了两周的实训,最后两天时间开始这个项目的设计和制作,技术不够成熟,还未能连上数据库,大部分的时间花在了组内成员各页面的整合之上,效果不胜理想。在此先简单做一个总结,记录一些东西。

html5 audio顺序播放多个音频文件 html播放音乐按钮_html

音乐播放功能

功能描述:点击歌曲名字,出现单曲播放界面,底端播放器进行播放,歌曲名与歌手名显现对应名字,切换页面的同时,歌曲不间断播放,播放按钮点击实现暂停,重播按钮点击实现重播。

html5 audio顺序播放多个音频文件 html播放音乐按钮_html5_02


html5 audio顺序播放多个音频文件 html播放音乐按钮_html5_03


歌名设置onclick事件start,id起名,以便于针对性的设置事件

设 href=“javascript:void(0)” 可以使鼠标悬浮时变成手状

<a  href="javascript:void(0)" class="a"  id="起风了">
	<span onclick="start(1);" id="name_qfl">起风了</span><!--开始按钮-->
</a>

第一个start函数,关闭之前开启的所有歌曲控制器,播放现在点击的歌曲

<script>
function start(num){
        var max = 6;
        var audio;

        for(var i=1;i<=max;i++){//遍历关闭所有播放控制器
            document.getElementById('player'+i).style = "display:none";
            audio = document.getElementById('music'+i);
            audio.currentTime = 0;
            audio.pause();
            
        }
        audio = document.getElementById('music'+num); //获取对象
        document.getElementById('player'+num).style = "display:block";//显示当前目标的播放器
        audio.play();


    }
</script>

第二个显示对应的歌名与歌手
用的是javaquery的清除文本以及在文本末尾添加文字的函数

<script type="text/javascript">
    $('#name_qfl').bind('mousedown',function(){
        $('#songname_botm').empty();
        $('#songname_botm').append('起风了');
        $('#songer_botm').empty();
        $('#songer_botm').append('吴青峰');
    });
</script>

显示单曲播放页面,实质是控制div的显示与隐藏

<script type="text/javascript">
	起风了.onclick = function()
	{
	    var musiclist1 = document.getElementById("musiclist1");
	    var musicinfor1 = document.getElementById("musicInfor1");
	
	    musiclist1.style.display = "none";
	    musicinfor1.style.display = "block";
	
	}
</script>

底端播放控制器,基础是HTML5的audio controls函数,自动显示
设置了两个链接,背景为播放按钮图片以及重播按钮图片,并设置相应onclick事件

<a  href="javascript:void(0)">
	<span  onclick="control(1);" id="play"></span>
</a><!--底端开始暂停按钮-->
<audio src="music/起风了.mp3" controls="controls" preload id="music1" class="music"></audio>
<a  href="javascript:void(0)">
	<span  onclick="repeat(1);" id="replay"></span>
</a><!--底端重播按钮-->

对应的control函数,以及repeat函数,我原本也设置了点击按钮更换背景图片,但不知道为什么无法显示,便注释掉了。

<script>
function control(num){
   var audio = document.getElementById('music'+num); //获取对象
   if(audio!==null){ 
       if(audio.paused){ 
           audio.play();// 播放 
           //play.style.backgroundImg = "background:url(../images/stop.png)";
       }else{
           audio.pause();// 暂停
           //play.background = "url(../images/play.png) no-repeat center bottom";
       }
   } 
}

function repeat(num){
   var audio = document.getElementById('music'+num); 
   audio.currentTime = 0;//重新播放
}
    
</script>

黑胶唱片的持续旋转

html5 audio顺序播放多个音频文件 html播放音乐按钮_css_04


主要的思想是设置定时器,不断执行函数,增加图片旋转角度

<!--==========黑胶碟片旋转=========-->
<div class="songstatus">
    <div id="songstatus_pic">
        <img src="images/music_disc.png" id="status_pic"><!--黑胶唱片-->
        <img src="images/discpointer.png" id="discpointer_pic"><!--指针-->
    </div>
</div>
<script>
	var rotateVal = 0 // 旋转角度
	var InterVal // 定时器
	window.onload = function () {
		// 网页加载完成后即运行rotate函数
		rotate()
		// 鼠标悬浮在图片上时,停止旋转,即清除定时器
		document.getElementById('status_pic').onmousemove = function () {
			clearInterval(InterVal)
		}
		// 鼠标离开图片时,继续旋转,即继续运行定时器
		document.getElementById('status_pic').onmouseleave = function () {
			rotate()
		}
	}
	
	// 设置定时器
	function rotate () {
		InterVal = setInterval(function () {
			var img = document.getElementById('status_pic')
			rotateVal += 7//每次增加的角度
			// 设置旋转属性(顺时针)
			img.style.transform = 'rotate(' + rotateVal + 'deg)'
			// 设置旋转属性(逆时针)
			//img.style.transform = 'rotate(-' + rotateVal + 'deg)'
			// 设置旋转时的动画  匀速0.1s
			img.style.transition = '0.1s linear'
		}, 100)
	}
</script>

相类似的还有顶部头像的鼠标悬浮效果

html5 audio顺序播放多个音频文件 html播放音乐按钮_javascript_05


html5 audio顺序播放多个音频文件 html播放音乐按钮_css_06


效果是由CSS设置实现的

#avatar{
    width:80px;
    height:80px;
    position:fixed;
    right:150px;
    top:10px;
    transition: all 0.2s ease-in-out;
    -webkit-transition: all 0.2s ease-in-out;/* Firefox 4 浏览器支持*/
    -moz-transition: all 0.2s ease-in-out;/* Safari 和 Chrome 浏览器支持*/
    -o-transition: all 0.2s ease-in-out;/* Opera 浏览器支持*/
    border-radius:100%;/* 设置圆形 */
}

#avatar:hover{
    transform: rotate(180deg);
    -webkit-transform: rotate(180deg);
    -moz-transform: rotate(180deg);
    -o-transform: rotate(180deg);
    -ms-transform: rotate(180deg);
}