Vue课程设计2021

简介: Vue课程设计2021

Vue音乐播放器


效果图

实现功能


1、样式基本美观

2、响应式布局

3、输入查询,通过api接口获取歌曲基本信息列表

4、双击歌曲,获取歌曲封面及评论,并播放歌曲,封面图开始旋转,播放杆放下

5、点击暂停,停止播放,封面图停止旋转,播放杆抬起


主体HTML部分

<div id="wrap">
      <div id="main">
        <div id="nav">
          <img src="img/162303413685758.png">
          <input v-model="musicName" type="text" placeholder="请输入想听的歌曲" @keyup.enter="search()" />
          <img @click="search()" src="img/zoom.png" />
        </div>
        <div id="content">
          <!-- 歌曲清单 -->
          <div id="scrollbar" class="list" data-rsssl=1 onload="loaded()">
            <ul>
              <li @dblclick="playMusic(music.id)" v-for="music in musicArr">
                {{music.name}}--{{music.artists[0].name}}
              </li>
            </ul>
          </div>
          <!-- 播放动画 -->
          <div class="picture" class="player_con">
            <img src="img/disc.png" class="disc autoRotate " :class="{playing: playingTag}" >
            <img src="img/player_bar.png" class="play_bar " :class="{playing: playingTag}">
            <img id="rotate" v-bind:src="cover" class="cover autoRotate" :class="{playing: playingTag}">
          </div>
          <!-- 用户评论 -->
          <div class="comment">
            <dl v-for="music in comments">
              <dt><img v-bind:src="music.user.avatarUrl"></dt>
              <dd>{{music.user.nikename}}</dd>
              <dd>{{music.content}}</dd>
            </dl>
          </div>
        </div>
        <div id="audio">
          <audio controls :src="musicSrc" autoplay="autoplay" @play='toplay' @pause='toPause'>
          </audio>
        </div>
      </div>
    </div>

动画

/* 动画 */
@keyframes rote {
  from {
    transform: rotateZ(0deg);
  }
  to {
    transform: rotateZ(360deg);
  }
}
/* 旋转的类名 */
.autoRotate {
  animation-name: rote;
  animation-iteration-count: infinite;
  animation-play-state: paused;
  animation-timing-function: linear;
  animation-duration: 5s;
}
/* 是否正在播放 */
.playing {
  animation-play-state: running;
}
.play_bar {
  position: absolute;
  left: 200px;
  top: -10px;
  z-index: 10;
  transform: rotate(-25deg);
  transform-origin: 12px 12px;
  transition: 1s;
}
/* 播放杆 转回去 */
.play_bar.playing {
  transform: rotate(0);
}
/* Vue动画类 */
.list-enter-active,
.list-leave-active {
  transition: all 1s;
}
.list-enter,
.list-leave-to {
  opacity: 0;
  transform: translateY(30px);
}

axios查询获取歌曲信息

search: function() {
      var music = this;
      var err;
      axios.get("https://autumnfish.cn/search?keywords=" + this.musicName).then(function(resp) {
          music.musicArr = resp.data.result.songs;
          console.log(musicArr);
        })
        .catch(function(err) {
          console.log("警告:查询音乐错误");
        })
    },


获取封面评论


playMusic: function(musicId){
      console.log(musicId);//歌曲id
      document.getElementById("rotate").style.animate="rote 10s infinite";
      var ul = this;
      // 获取音乐播放地址
      axios.get("https://autumnfish.cn/song/url?id="+musicId).then(function(resp){
        ul.musicSrc = resp.data.data[0].url;        
      }).catch(function(err){
        console.log("警告:获取音乐播放地址错误");
      }),
      // 获取专辑封面地址
      axios.get("https://autumnfish.cn/song/detail?ids="+musicId).then(function(resp){
        ul.cover = resp.data.songs[0].al.picUrl;        
      }).catch(function(err){
        console.log("警告:获取专辑封面地址错误");
      }),
      // 获取评论
      axios.get("https://autumnfish.cn/comment/hot?type=0&id="+musicId).then(function(resp){
        ul.comments = resp.data.hotComments;
      }).catch(function(err){
        console.log("警告:获取评论错误");
      })      
    },

效果展示

源码

相关文章
|
6天前
|
JavaScript
vue中使用@scroll不生效的问题
vue中使用@scroll不生效的问题
|
13天前
|
JavaScript 开发者
[译] 监听第三方 Vue 组件的生命周期钩子
[译] 监听第三方 Vue 组件的生命周期钩子
|
13天前
|
JavaScript 前端开发
[译] 复用 Vue 组件的 6 层手段
[译] 复用 Vue 组件的 6 层手段
|
1天前
|
JavaScript 算法 前端开发
vue学习(1)
vue学习(1)
187 62
|
14天前
|
JavaScript API
vue 批量自动引入并注册组件或路由
vue 批量自动引入并注册组件或路由
|
14天前
|
缓存 监控 JavaScript
vue从安装到熟练 2022流畅无痛版(第一季:入门篇)
该文章是《vue从安装到熟练 2022流畅无痛版》系列的第一季入门篇,介绍了Vue的基本概念、环境配置、项目创建与运行,并通过修改HelloWorld.vue和App.vue文件内容展示了如何在页面上显示"Hello World",最后还提供了Vue官方文档链接和介绍了Vue的常用内置指令和模板语法等基础知识。
vue从安装到熟练 2022流畅无痛版(第一季:入门篇)
|
1天前
|
JavaScript
vue学习(3)模板语法
vue学习(3)模板语法
23 10
|
1天前
|
存储 JavaScript 前端开发
vue学习(2)
vue学习(2)
121 49
|
1天前
|
JavaScript
vue键盘事件
vue学习(11)键盘事件
|
5天前
|
数据采集 JavaScript 搜索推荐
我们一起聊聊如何对Vue项目进行搜索引擎优化
【9月更文挑战第4天】Vue 项目的搜索引擎优化(SEO)较为复杂,因其内容默认由 JavaScript 渲染,部分搜索引擎难以索引。为提升 SEO 效果,可采用服务器端渲染(SSR)或预渲染,使用 Nuxt.js 或 Vue Server Renderer 实现 SSR,或利用 Prerender SPA Plugin 预渲染静态 HTML。此外,动态管理 Meta 标签、优化静态内容与 Sitemap、懒加载、图片优化、提升页面速度、设置正确的路由模式、使用结构化数据及构建良好外链均有益于 SEO。
40 11