vue小练习--音乐播放器
1 首先建一个文件夹 放几首歌曲
2 看代码
1)基本版本
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <title>音乐播放器</title>
- <meta name="viewport" content="width=device-width ,initial-scale=1">
- <script src="https://cdn.jsdelivr.net/npm/vue"></script>
- <style>
- * {
- padding: 0;
- margin: 0;
- }
- ul {
- list-style: none;
- }
- ul li {
- margin: 20px 20px;
- padding: 10px 5px;
- border-radius: 3px;
- }
- ul li.active {
- background-color: gray;
- }
- </style>
- </head>
- <body>
- <div id="app">
- <!--handerEnded这首歌播放完就波下一曲-->
- <audio v-bind:src="currentSrc" controls autoplay @ended="handerEnded"></audio>
- <ul>
- <li :class="{active:index===currentIndex}" v-for="(item, index) in musicData" :key="item.id"
- @click="handerClick(item.songSrc,index)">
- <h2>{{item.id}}-歌名:{{item.name}}</h2>
- <p>{{item.author}}</p>
- </li>
- </ul>
- <button @click="nextSong">下一曲</button>
- </div>
- <script>
- const musicData = [{
- id: 1,
- name: '数到五答应我 - 曹格',
- author: '曹格',
- songSrc: './static/数到五答应我 - 曹格.mp3'
- },
- {
- id: 2,
- name: '风吹着我向你跑来 - 焦迈奇',
- author: '焦迈奇',
- songSrc: './static/风吹着我向你跑来 - 焦迈奇.mp3'
- }
- ];
- let app = new Vue({
- el: '#app',
- data: {
- musicData: musicData, // 可以写成 因为是一样的 musicData
- currentSrc: './static/数到五答应我 - 曹格.mp3',
- currentIndex: 0
- },
- methods: {
- handerClick(src, index) {
- // 更改src意味着 currentSrc = 你点的那个li标签里的歌曲的src
- // 可以把songcrc传进去
- this.currentSrc = src;
- this.currentIndex = index
- },
- handerEnded() {
- // 下一曲的播放 要用 ended
- // 1. 索引 + 1
- // this.currentIndex++;
- // // 2. 找到索引的src赋值给原来的src
- // if (this.currentIndex === this.musicData.length) {
- // this.currentIndex = 0
- // }
- // this.currentSrc = this.musicData[this.currentIndex].songSrc;
- this.nextSong();
- },
- nextSong(){
- this.currentIndex++;
- // 2. 找到索引的src赋值给原来的src
- if (this.currentIndex === this.musicData.length) {
- this.currentIndex = 0
- }
- this.currentSrc = this.musicData[this.currentIndex].songSrc;
- }
- }
- });
- </script>
- </body>
- </html>
2)计算属性版本
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <title>音乐播放器</title>
- <meta name="viewport" content="width=device-width ,initial-scale=1">
- <script src="https://cdn.jsdelivr.net/npm/vue"></script>
- <style>
- * {
- padding: 0;
- margin: 0;
- }
- ul {
- list-style: none;
- }
- ul li {
- margin: 20px 20px;
- padding: 10px 5px;
- border-radius: 3px;
- }
- ul li.active {
- background-color: gray;
- }
- </style>
- </head>
- <body>
- <div id="app">
- <audio v-bind:src="getCurrentSongSrc" controls autoplay @ended="handerEnded"></audio>
- <ul>
- <li :class="{active:index===currentIndex}" v-for="(item, index) in musicData" :key="item.id"
- @click="handerClick(index)">
- <h2>{{item.id}}-歌名:{{item.name}}</h2>
- <p>{{item.author}}</p>
- </li>
- </ul>
- <button @click="nextSong">下一曲</button>
- </div>
- <script>
- const musicData = [{
- id: 1,
- name: '数到五答应我 - 曹格',
- author: '曹格',
- songSrc: './static/数到五答应我 - 曹格.mp3'
- },
- {
- id: 2,
- name: '风吹着我向你跑来 - 焦迈奇',
- author: '焦迈奇',
- songSrc: './static/风吹着我向你跑来 - 焦迈奇.mp3'
- }
- ];
- let app = new Vue({
- el: '#app',
- data: {
- musicData: musicData, // 可以写成 因为是一样的 musicData
- // currentSrc: './static/数到五答应我 - 曹格.mp3',
- currentIndex: 0
- },
- // 变动1 不要写死的url了 就自己拿
- computed:{
- getCurrentSongSrc(){
- return this.musicData[this.currentIndex].songSrc
- }
- },
- methods: {
- handerClick(index) {
- // 就没有必要了 就不要传值了
- // this.currentSrc = src;
- this.currentIndex = index
- },
- handerEnded() {
- this.nextSong();
- },
- nextSong(){
- this.currentIndex++;
- if (this.currentIndex === this.musicData.length) {
- this.currentIndex = 0
- }
- // 这个就没有必要了
- // this.currentSrc = this.musicData[this.currentIndex].songSrc;
- }
- }
- });
- </script>
- </body>
- </html>
vue小练习--音乐播放器的更多相关文章
- 微信小程序音乐播放器
写在前面 1.入门几天小白的作品,希望为您有帮助,有好的意见或简易烦请赐教 2.微信小程序审核音乐类别已经下架,想要发布选题需慎重.附一个参考链接,感谢https://www.hishop.com.c ...
- 微信小程序音乐播放器组件
wxml <image bindtap="click" src="{{isPlay?'/images/':'/images/'}}"/> JS Pa ...
- 用Vue来实现音乐播放器(三十八):歌词滚动列表的问题
1.频繁切换歌曲时,歌词会跳来跳去 原因: // 歌词跳跃是因为内部有一个currentLyric对像内部有一些功能来完成歌词的跳跃 //每个currentLyric能实现歌曲的播放跳到相应的位置 是 ...
- Vue实战:音乐播放器(一) 页面效果
先看一下效果图 首页 歌单详情页 歌手列表 歌手详情页 排行页面 榜单的详情页(排序样式) 搜索页面 搜索结果 播放器内核 歌词自动滚动 播放列表 用户中心
- 用Vue来实现音乐播放器(二十三):音乐列表
当我们将音乐列表往上滑的时候 我们上面的歌手图片部分也会变小 当我们将音乐列表向下拉的时候 我们的图片会放大 当我们将音乐列表向上滑的时候 我们的图片有一个高斯模糊的效果 并且随着我们的列 ...
- 用Vue来实现音乐播放器(十八):右侧快速入口点击高亮
问题一:当我们点击右侧快速入口的时候 被点击的地方高亮 首先我们要知道右侧快速入口是为什么高亮??因为当watch()监控到scrollY的变化了的时候 将scrollY的值和listHeight ...
- 用Vue来实现音乐播放器(九):歌单数据接口分析
z这里如果我们和之前获取轮播图的数据一样来获取表单的数据 发现根本获取不到 原因是qq音乐在请求头里面加了authority和refer等 但是如果我们通过jsonp实现跨域来请求数据的话 是根本 ...
- 用Vue来实现音乐播放器(八):自动轮播图啊
slider.vue组件的模板部分 <template> <div class="slider" ref="slider"> <d ...
- 用Vue来实现音乐播放器(二十一):歌手详情数据抓取
第一步:在api文件夹下的singer.js中抛出getSingerDetail方法 第二步:在singer-detail.vue组件中引入api文件夹下的singer.js和config.js 第三 ...
随机推荐
- 暴强贴:从.NET平台调用Win32 API----转载
水之真谛 关注 17人评论 27649人阅读 2007-02-28 17:03:47 作者:刘铁猛日期:2005-12-20关键字:C# .NET Win32 API 版权声明:本文章受知识产权法 ...
- ch8 高度相等的列--CSS方法
如下图所示效果,可以使用表格实现,本文采用在CSS中实现. 标记如下: <div class="wrapper"> <div class="box&qu ...
- luogu P4129 [SHOI2006]仙人掌
题目描述 仙人掌图(cactus)是一种无向连通图,它的每条边最多只能出现在一个简单回路(simple cycle)里面.从直观上说,可以把仙人掌图理解为允许存在回路的树.但是仙人掌图和树之间有个本质 ...
- Spring中获取web项目的根目录
spring 在 org.springframework.web.util 包中提供了几个特殊用途的 Servlet 监听器,正确地使用它们可以完成一些特定需求的功能; WebAppRootListe ...
- zabbix监控memcached服务
zabbix监控memcached服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装并配置memcached服务 1>.使用yum方式安装memcached [ro ...
- KAZE特征和各向异性扩散滤波
kaze feature: http://www.doc88.com/p-6911376909693.html 各向异性扩散滤波 Scale-space and edge detection usi ...
- ThinkPad重大更新!5款创意设计PC齐发2日
导读 日前,ThinkPad巨匠P系列专业移动工作站迎来全线更新,包括ThinkPad P1隐士2019.ThinkPad P53.ThinkPad P73.ThinkPad P43s.ThinkPa ...
- 继OpenJDK 之后,OpenJFX也将迁移到 Git
导读 近日 OpenJFX 项目负责人 Kevin Rushforth 提交了一份将 OpenJFX 迁移到 GitHub 的提案. OpenJFX 是 JavaFX 的开源实现.JavaFX 是一个 ...
- Windows使用Nexus搭建Maven私服
简介 Maven私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件,有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库,否则,私服请求外部的 ...
- 初识python 廖雪峰(慕课网)
3-9 Python中的布尔类型 短路计算 True和False是布尔值,就像1,2,3是整数,“abc”是字符串一样. 做这个题,需要了解以下两点: 第一,在一个语句中,当and和or同时存在时,a ...