html 配合vue 帶播放列表切換的 音頻播放器 audio

一個h5的音頻播放器,播放列表播放器上下首切換 樣式效果對應起來。

五秒後自動收縮形成掛件(不可移動)。點擊播放器圖片 即可展開、收起。

audio.js    audio.css  資源下載

詳細代碼上篇

樣式

                         

部分代碼:

html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta name="format-detection" content="telephone=no"/>
    <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
    <title>詳情頁</title>
    <script src="https***query_172.js" language="javascript"></script>
    <script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
    <!--動畫樣式-->
    <link href="http:***/animate.css" rel="stylesheet" type="text/css">
    <!--音頻播放器-->
    <link rel="stylesheet" type="text/css" href="./css/audio.css">
    <script type="text/javascript" src="./js/audio.js"></script>
</head>

<body>
****
****
****
<!-- 播放列表 -->
    <ul :class="mp3_count >= 1?'music':'hid'" id="storyLin">
        <li v-for="(list,key) in data.mp3_list" @click="playSon(this,key)" :class="{'on':clicked==key}">
            <div :class="[{'hid':clicked ==key}, num]">{{key+1}}</div>
            <div :class="[{'hid':clicked !=key}, laba]">&#xe65e;</div>
            <div class="name">
                <p>{{list.title}}</p>
                <div class="dat">
                    <span>&#xe60c;</span>{{list.num}}人
                    <span style="margin-left: 20px;">&#xe68d;</span>{{list.time}}
                </div>
            </div>
        </li>
    </ul>
****
****
****
    <!--    <div :class="mp3_count >= 1 ? 'audio-box hid':'hid'">-->
    <div :class="[{'hid':mp3_count < 1}, audio_box]">
        <div class="audio-container">
            <div class="audio-cover" @click="goRight()"></div>
            <div class="audio-view">
                <h3 class="audio-title">未知歌曲</h3>
                <div class="audio-body">
                    <div class="audio-backs">
                        <div class="audio-this-time">00:00</div>
                        <div class="audio-count-time">00:00</div>
                        <div class="audio-setbacks">
                            <i class="audio-this-setbacks">
                                <span class="audio-backs-btn"></span>
                            </i>
                            <span class="audio-cache-setbacks">
							</span>
                        </div>
                    </div>
                </div>
                <div class="audio-btn">
                    <div class="audio-select">
                        <div class="audio-prev"></div>
                        <div class="audio-play"></div>
                        <div class="audio-next"></div>
                        <!--                        <div class="audio-menu"></div>-->
                        <!--                        <div class="audio-volume"></div>-->
                    </div>
                    <div class="audio-set-volume">
                        <div class="volume-box">
                            <i><span></span></i>
                        </div>
                    </div>
                    <div class="audio-list">
                        <div class="audio-list-head">
                            <p>☺隨心聽</p>
                            <span class="menu-close">關閉</span>
                        </div>
                        <ul class="audio-inline">
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!--音頻播放器-->
</div>
</body>

</html>

js方法

    var api = "htt***p";
    var song = [];//定義播放列表(可後續添加)
    var audioFn = [];//播放器類
    var main = new Vue({
        el: '#main',
        data: {
           ****
            audio_type: 2,//播放器是否展示隱藏,
            clicked: -1,
            num: 'num',
            laba: 'laba',
            audio_box:'audio-box audio-boxhid'

        },
        created() {
            var that = this;
            that.get_data();//內含實例化 播放器

        },
        methods: {
            //獲取專輯信息
            get_data() {
                var that = this;
                $.get(
                    api + '?meth***r_id=' + that.user_id + '&id=' + that.id,
                    function (data) {
                        if (data.ret) {
                            that.data = data.data;
                            //音頻列表賦值,並實例化音頻組件
                            song = that.data.mp3_list;//播放列表
                            that.mp3_count = song.length
                            if (that.mp3_count >= 1) {
                                that.new_audio(song);
                            }

                        } else {
                            alert('數據獲取失敗!')
                        }
                    },
                    'json'
                )
            },

            //實例化音頻播放
            new_audio(song) {
                var that = this;
                audioFn = audioPlay({
                    song: song,
                    autoPlay: false  //是否立即播放第一首,autoPlay爲true且song爲空,會alert文本提示並退出
                });
                //獲取音頻播放key
                if (!songEq) {
                    songEq = -1
                }
                //監聽當前播放曲目的key值,對應播放列表樣式
                setInterval(function () {
                    that.clicked = songEq;
                }, 300)
            },

            /*
            音頻播放器相關操作
             */
            playSon(th, key) {
                var that = this;
                clearTimeout(that.clock);//清除定時器
                $(".audio-box").removeClass("hid");
                $(".audio-box").removeClass("audio-boxhid");
                audioFn.selectMenu(key, true);
                that.clicked = key;
                that.clock = setTimeout(function () {
                    $(".audio-box").addClass("audio-boxhid");
                    that.audio_type = 2;
                }, 5000);
            },

            //控制播放器是否展開
            goRight() {
                var that = this;
                //清除定時器
                clearTimeout(that.clock);
                //播放器是否收起
                if (that.audio_type == 1) {
                    $(".audio-box").addClass("audio-boxhid");
                    that.audio_type = 2;
                } else {
                    $(".audio-box").removeClass("audio-boxhid");
                    that.audio_type = 1;
                }
                //5秒定時器 過後自動收起
                that.clock = setTimeout(function () {
                    $(".audio-box").addClass("audio-boxhid");
                    that.audio_type = 2;
                }, 5000);
            }
        }
    })

    /*
    $(function () {
        // 向歌單中添加新曲目,第二個參數true爲新增後立即播放該曲目,false則不播放
        audioFn.newSong({
            'cover': 'images/audio/cover4.jpg',
            'src': 'http://filebaby.qubaobei.com/story/low/105.mp3',
            'title': '極樂淨土 - GARNiDELiA'
        }, false);

        // 暫停播放
        audioFn.stopAudio();

        // 開啓播放
        audioFn.playAudio();

        // 選擇歌單中索引爲3的曲目(索引是從0開始的),第二個參數true立即播放該曲目,false則不播放
        audioFn.selectMenu(3,true);

        // 查看歌單中的曲目
        console.log(audioFn.song);

        // 當前播放曲目的對象
        console.log(audioFn.audio);
    });

    */

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章