vue 综合案例 - 音乐播放器

综合案例-音乐播放器

功能:
  • 歌曲搜索:搜索歌曲,会出现相应歌曲
    1.按下回车(v-on.enter)
    2.查询数据(axios接口、v-model)
    3.渲染数据(v-for 结合数组)
  • 歌曲播放:点击播放按钮,歌曲会开始播放
    1.点击播放(v-on 自定义参数)
    2.歌曲地址获取(接口 歌曲id)
    3.歌曲地址设置(v-bind)
  • 歌曲封面:播放歌曲同时,中间的封面会同步改变
    1.点击播放(增加逻辑)
    2.歌曲封面获取(接口 歌曲id)
    3.歌曲封面设置(v-bind)
  • 歌曲评论:点击歌曲,在右侧会出现对应歌曲的评论
    1.点击播放(增加逻辑)
    2.歌曲评论获取(接口 歌曲id)
    3.歌曲评论渲染(v-for)
  • 播放动画:歌曲播放时,中间的动画会和歌曲的播放同步
    1.监听音乐播放(v-on play)
    2.监听音乐暂停(v-on pause)
    3.操纵类名(v-bind 对象)
    (audio标签的play事件会在音频播放的时候触发
    audio标签的pause事件会在音频暂停的时候触发
    通过对象的方式设置类名,类名生效与否取决于后面值的真假_
  • mv播放:点击mv按钮,会出现一个遮罩层,中间可以看mv
    1.mv图标显示(v-if)
    2.mv地址获取(接口 mvid)
    3.遮罩层(v-show v-on)
    4.mv地址设置(v-bind)
    不同的接口需要的数据是不同的,文档的阅读需要仔细
    页面结构复杂之后,通过审查元素的方式去快速定位相关元素
    响应式的数据都需要定义在data中定义
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>音乐播放器</title>
    <link rel="stylesheet" href="css/音乐播放器.css">
</head>

<body>
    <div id="wrap">
        <!-- 播放器主体 -->
        <div class="play_wrap .clearfix" id="player">
            <div class="header">
                <span>listen music</span>
                <input type="text" name="" id="" value="" v-model="query" @keyup.enter="searchMusic">
                <img class="search_icon" src="images/search.png" />
            </div>
            <div class="left">
                <ul class="music_list">
                    <li v-for="item in musicList">
                        <img class="music_icon" @click="playMusic(item.id)" src="images/music_play.png" alt="">
                        <span class="music_name">{
   {
    item.name }}</span>
                        <img class="video_icon" @click="playMV(item.mvid)" v-if="item.mvid!=0" src="images/video_play.png" alt="">
                        <span class="music_mask">{
   {
   item.name}}</span>
                    </li>

                </ul>
            </div>
            <div class="middle">
                <div class="play_con" :class="{playing:isPlaying}">
                    <img src="images/play-bar.png" class="play_bar " />
                    <div class="cover_background autoRotate"></div>
                    <img v-bind:src="musicCover==''?'images/nav.jpg':musicCover" alt="" class="music_cover autoRotate">
                </div>
                <!-- <div class="playing-title ">
                    <h4>正在播放</h4>
                    <h3 v-bind:text="musicList"></h3>
                </div> -->
            </div>
            <div class="right">
                <div class="comments_title">热门留言</div>
                <dl class="comment-list">
                    <dd v-for="item in hotComments">
                        <img class="commenterpic" v-bind:src="item.user.avatarUrl" alt=" ">
                        <div class="username">{
   {
   item.user.nickname}}</div>
                        <div class="commentCon">{
   
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值