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

效果展示

在这里插入图片描述

源码

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
课设项目-基于Vue开发的一个书城购物网站源码+详细设计报告 该资源内项目源码是个人的课设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 1)前端功能 商品分类展示; 商品详情 商品搜索 订单详情(购物车) 登录与注册 注意:注册用户可以购买商品,非注册用户仅可以浏览、查询商品 2)后端功能(可选) 提供商品查询接口,满足系统功能。 或者:使用模拟数据,不需要后端提供数据接口 2.技术要求 1)基于Vue前端框架技术,使用组件化开发方式。 2)知识点应用:[1] 项目创建 ;[2] Vue指令应用:插值、数据绑定、计算属性、方法、侦听器、事件监听等 ; [3] Vue组件创建和应用 [4] Vue路由使用;[5]前端基础知识的综合应用。 3.设计文档 1)内容 整体设计(功能描述、系统结构图、使用到的技术等);数据来源及描述;详细设计(代码和界面);小结;自我评价; 2)格式 基于Vue前端框架技术设计的一个购物网站 3 一、整体设计 3 1.1系统结构 4 1.2功能结构图 4 二、数据来源及描述 4 2.1数据存储说明 4 三、详细设计 4 3.1 主页功能模块设计 4 3.2书籍详情设计 4 3.3 购物车设计 4 3.4登陆/注册设计 4 3.5 数据获取设计 4 3.6 刷新丢失数据设计 4 四、结果展示 4 系统结构 系统采取模拟数据的方式完成,通过在localStorage保存数据,通过维护该数据,不断地写入,以及读取,对登陆信息保存在sessionStorage;初始化页面时,若未登录,则只可以浏览。对登陆的用户可以浏览商品加下单,用户登陆之后,进行读取该用户的购物车信息,保存至store内,点击购物车时,直接展示出来。 使用多个路由视图切换实现页面跳转,对主页下面有多个分类的子路由,当需要登陆时整个app.vue进行切换,完成路由的切换。 数据存储说明 书籍信息:书籍信息存放于data.js内,每个需要的页面可以直接引入,引入后就可以使用了,需要增删改查,只需要进行修改此处的数据即可。 用户信息:用户进行注册的时候,将数据模拟存储在localStorage对象内,使用setItem的方法进行设置,表名为“!!!user!!!”,数据采用对象{username:“”,password:“”}的方式进行模拟存储。 某用户的购物车信息:数据存储在localStorage对象内,表名为“!!!用户名!!!”,数据形式为{book:{},num:X},采用此形式,可以很方便的进行数据维护。 下单采用延时模拟的方法进行模拟的,并且对购物车的信息进行更改。 主页功能模块设计 主页直接展示整个网页的头部和数据部分,点击书籍的图片,可以跳转到该书籍的详情页面。提供登陆/注销登陆、进入购物车、搜索书籍的功能。 展示的数据来源于data.js,登录信息来源于store内保存的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦中千秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值