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("警告:获取评论错误");
      })      
    },

效果展示

源码

相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
1天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
28天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
32 1
vue学习第一章
|
28天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
26 1
vue学习第三章
|
28天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
|
28天前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
24 1
vue学习第7章(循环)
|
28天前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
29 1
vue学习第九章(v-model)
|
28天前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
39 1
vue学习第十章(组件开发)
|
28天前
|
JavaScript 前端开发
vue学习第十一章(组件开发2)
欢迎来到我的博客,我是瑞雨溪,一名自学前端两年半的大一学生,专注于JavaScript与Vue。本文介绍Vue中的插槽(slot)使用方法,包括基本插槽、具名插槽及作用域插槽,帮助你在组件开发中实现内容的灵活定制。如果你觉得有帮助,请关注我,持续更新中!🎉🎉🎉
23 1
vue学习第十一章(组件开发2)