LRC 滚动器 + Vue.js
LRC 滚动展示VueJS
cnblogs @ Orcim
最 近一直在学习尤大大的这个前端框架。Vue 无疑是一款极易上手的前端框架,因为官方的文档就是中文的,十分“本土化”,中文文档会最先更新。除此之外,官方网站上的 Vue 教学非常适合像我这样的新手,教学文档很详尽,在这里给 Vue 的维护团队点个赞。
自己这几天边看文档,边动手跟着练习,然后今天花了一些时间,模仿手机音乐播放器实现了一个状态栏歌词滚动器,又在此之上添加了一个切换歌词语言的功能:点击左边的音符图标即可切换到歌词翻译,点击这里,在我的 CodePen 中查看这个 demo。
demo 大概就长这样,点击左侧 icon 即可切换翻译。
思路 & 逻辑
1. 对LRC文件字符串格式,进行解析。
这里要注意的是lrc文件每行,开头的“时间戳”的时间格式,普遍的格式有三种:①[min:sec.ms]②[min:sec]③其他,这里只对前两种情况做了兼容,因为这两种现在见得最多;还有要注意的就是ms(毫秒)的位数可能是一位、两位、三位。
2. 对 ***.lrc 文件利用如上方法进行解析后,返回一个对象,对象包括歌词的附属信息(lrc-info):by、ti、ar等头信息,歌词的主要部分(lrc-main)数组类型,其每项包含时间戳转换的毫秒总数,以及对应时间戳点(time)的歌词字符串(lyric)。之后要做的就是批量注册定时器,在 Vue 生命周期函数的 created 中注册这些定时器:
部分代码逻辑如上,完整代码可见文章开头处的 CodePen 链接。
3. 注册和创建 Vue 组件,这个部分就不多说了,直接贴代码,看看吧。
核心逻辑代码 main.js 如下:
结束语
Vue确实方便学习和使用,如果接触过微信小程序的话,基本上看看官网上的文档几乎就可以直接拿来用了,框架设计十分友好和人性化,除此外 Vue 式的组件化和模块化让代码变得简洁和明了易于维护,数据绑定等降低 DOM 渲染成本也恰到好处,是个很不错的前端框架。
其他
VueJS 版本:2.6.10,2019/07
更新
今天又花了一些时间完善了这个歌词滚动器,点击这里来查看demo,在我的CodePen中查看源代码。主要是修正了一些错误,适配了所有格式的LRC文件,添加了窄屏下歌词可以左右以较为合理的速度滚动的功能,优化了细节。2019/07/17
转载于:https://www.cnblogs.com/Orcim/p/11197162.html
LRC 滚动器 + Vue.js相关推荐
- 【Vue.JS】纯 Vue.js 制作甘特图
效果图 在线预览 GitHub链接(包含 knockoutJS 版本与 Vue 版本) 推荐组合效果 推荐与双表头固定效果组合,实现如上例中横表头(日期)纵向固定,纵表头(类型)横向固定效果. 参照连 ...
- vue 音乐盒app_基于Vue.js的音乐播放器(Webapp)
概述 项目是基于Vue.js,成品是一个移动端的音乐播放器,来源于imooc的实战课程.自己动手实践并加以修改拓展. 项目的大致流程是Vue-cli构建开发环境,分析需求,设计构思,规划目录结构,开始 ...
- 基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无 ...
- 组件用.vue还是.js_如何使用Vue.js 2.0构建灵活的图像上传器组件
组件用.vue还是.js by Cathy Ha 由凯茜·哈(Cathy Ha) 如何使用Vue.js 2.0构建灵活的图像上传器组件 (How to build a flexible image u ...
- 从 JavaScript 属性描述器剖析 Vue.js 响应式视图
学习每一门语言,一般都是从其数据结构开始,JavaScript也是一样,而JavaScript的数据结构中对象(Object)是最基础也是使用最频繁的概念和语法,坊间有言,JavaScript中,一切 ...
- animate inater插件_基于animate.css动画库的全屏滚动小插件,适用于vue.js(移动端、pc)项目...
功能简介 基于animate.css动画库的全屏滚动,适用于vue.js(移动端.pc)项目. 安装 npm install vue-animate-fullpage --save 使用 main.j ...
- zurb是什么网站_Zurb的Tribute库的Vue.js包装器,用于本机@mentions
zurb是什么网站 致敬 (vue-tribute) A Vue.js wrapper for Zurb's Tribute library for native @mentions. Zurb的Tr ...
- js:Vue.js自定义指令实现scroll下滑滚动翻页
Vue.js自定义指令实现scroll下滑滚动翻页 核心代码 import Vue from 'vue'// v-scroll Vue.directive('scroll', {bind(el, bi ...
- 使用Vue.js的简单拾色器
选色器 (vue-colorpicker) A Simple Color Picker With Vue.js 使用Vue.js的简单拾色器 View demo 查看演示 Download Sourc ...
最新文章
- /proc/mtd 各参数的含义 -- linux内核
- Microsoft .NET Pet Shop 4 架构与技术分析(转)
- JSON Assertion(JSON断言)
- MPLS 配置静态LSP
- ORACLE ORA-01000: 超出打开游标的最大数(解决及原因)
- 【路径生成--绘制的方法】矢量地图巡线式路径探索
- 【面试笔试-c/c++】人民搜索2012校园招聘试题
- android qq 退出帐号,大家手机上的QQ平常用完退不退出帐号
- laravel whereDoesntHave 查询不等于条件的数据
- 十年MFC经历认识的Microsoft技术
- Python中的图像处理(第六章)Python图像量化及采样处理(2)
- linux查看共享内存文件,linux 共享内存
- 基于PHP的餐饮行业管理系统
- Socket hang up
- 黑马程序员————集合2(day17)
- Party All the Time HDU - 4355(三分)
- css 边框 不连续,css 不规则边框怎么设置
- 特征学习笔记Chapter1-Chapter4
- [4G5G专题-131]:流程 - LTE的功率控制
- 虚拟机ping不通本地_虚拟机ping不通本机是怎么回事
热门文章
- 2020牛客暑期多校训练营(第五场) F、DPS(签到题)
- java初学者之青铜篇一(初始java)
- Python中的replace方法
- STM32作品设计:蓝牙彩灯V1.4(WS2812全彩、声控、光控、人体红外、小科语音控制、手机APP、蓝牙无线升级)
- Alliance Advisors任命新的大中华区投资者信息副总裁,旨在扩张亚洲业务
- 数字孪生智慧校园三维可视化管理系统解决方案
- OI常用的数学知识大全(持续更新)
- Android手机如何提取系统内核(boot.img镜像文件提取)
- 代理商丨thinkcell是一款功能强大的图表创建工具
- php大文件下载502,php+nginx上传大文件502BadGateway