tml5中实现音频的话可以用新增的属性video,但是都会发现其自带的控制进度条非常不好看,所有很多人都会自定义它们的控制进度条,今天就来做一下音频控制进度条!
点击播放后即可看到进度条的圆点在相对于的动起来
代码
html结构:
css样式:
javascript:
融界2024年7月3日消息,天眼查知识产权信息显示,贵阳朗玛信息技术股份有限公司申请一项名为“一种朗读流式Markdown文本并跟踪显示朗读进度的方法“,公开号CN202410692747.1,申请日期为2024年5月。
专利摘要显示,本发明公开了一种朗读流式Markdown文本并跟踪显示朗读进度的方法,包括:对Markdown文本流式解析,提取完整块级元素;将Markdown块级元素文本转换HTML文本,提取用于显示的文字内容,构建第一序列,按顺序串联所述第一序列中的文字,得到语音合成需要的文字;根据得到的文字内容合成语音,获得若干组语音合成文件及其元信息;根据所述第一序列和语音合成文件的元信息计算语音合成所用文字及发音字词在HTML文本中的位置;播放合成语音并根据进度控制当前朗读的段落及字词高亮显示。将该方法应用于实时生成的流式Markdown文本朗读,解决了现有通用语音合成服务会将Markdown格式符号当做文字内容进行语音合成的问题,实现了Markdown文本快速渲染和根据朗读进度高亮显示朗读段落和字词的功能。
本文源自金融界
很多时候在访问网页的时候我们总是看到页面在加载中,可以却不知道要加载多久,无期限的等待总是让人烦躁不安,所以我们希望能知道网页加载的进度,这样我们就能做到心中有数是否继续等待页面加载。这个功能我们可以依靠nprogress来实现,它是轻量级的进度条组件,使用简便,可以很方便集成到应用中来。
直接在项目中执行安装命令:npm install --save nprogress
NProgress.start() // 进度条开始 NProgress.set() // 将进度设置到具体的百分比位置,取值范围是0到1.0 NProgress.inc() // 如果少量增加进度,进度将永远不会得到100% NProgress.done() // 进度条结束消失 NProgress.configure() // 进度条参数配置
在main.js中引入nprogress插件和样式,
import NProgress from 'nprogress' // nprogress插件 import 'nprogress/nprogress.css' // nprogress样式
在NProgress.configure({})中我们可以对nprogress进行适当的配置,showSpinner 为 false(禁用进度环)、trickle 为 false(关闭进度条步进)、trickleRate (每次步进增长多少)、trickleSpeed (步进间隔,单位毫秒ms)、ease(动画方向)、speed (动画速度,单位毫秒ms)、minimum (最小百分比)等等。
NProgress.configure({ showSpinner: false }) //我这里只关闭进度环
在添加nprogress之前我们需要先了解Vuerouter的beforeEach与afterEach钩子函数,这是在路由跳转的时候对路由进行一些权限判断或者其他操作时定义的处理函数,Vue.beforeEach是在跳转之前执行,Vue.afterEach是在跳转之后执行判断的。
Vue.beforeEach(function(to,form,next){})函数有三个参数,Vue.afterEach(function(to,form))函数有两个参数:
to:即将进入的路由对象
from:当前导航即将离开的路由对象
next:调用该方法,进入下一个钩子函数,next(false):则中断当前的导航。
在main.js中全局钩子函数,在路由跳转前用NProgress.start()标记下进度条开始,在路由跳转后用NProgress.done()标记下结束,这样在路由跳转的时候就可以在页面顶部看到一个progress bar进度条了。
import Vue from 'vue' import App from './App.vue' import router from '@/router/index.js' import store from './store' import Element from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import '@/assets/icons/index.js' import NProgress from 'nprogress' import 'nprogress/nprogress.css' Vue.use(Element) Vue.config.productionTip = false NProgress.configure({ showSpinner: false }) router.beforeEach((to, from, next) => { NProgress.start() next() }) router.afterEach(() => { NProgress.done() }) new Vue({ router, store, render: h => h(App) }).$mount('#app')
如果你希望每次发送请求的时候也出现进度条的话可以在axios封装中的路由拦截中添加nprogress,如何封装axios可以参考Vue实战037:axios二次封装和使用。
// 请求拦截器(请求发出前处理一些请求) axios.interceptors.request.use( NProgress.start() }) // 响应拦截器(处理响应数据) axios.interceptors.response.use( NProgress.done() )
为了让结构更滑清晰简洁些,我们重新整理下代码,即然nprogress主要是用在路由跳转上,这里我将nprogress归纳放入router中,切记实例化router之后调用Vuerouter的beforeEach与afterEach钩子函数生效。
import Vue from 'vue' import Router from 'vue-router' import routers from './routers' import NProgress from 'nprogress' import 'nprogress/nprogress.css' NProgress.configure({ showSpinner: false }) Vue.use(Router) const router = new Router({ mode: 'history', routes: routers }) export default router router.beforeEach((to, from, next) => { NProgress.start() next() }) router.afterEach(() => { NProgress.done() })
在app.vue中添加如下样式即可修改nprogress样式,记得添加 !important来覆盖原有样式
#nprogress .bar { background: #66B1FF !important; // 自定义颜色 height: 20px !important; // 自定义高度 }
欢迎关注本人的公众号:编程手札,文章也会在公众号更新
*请认真填写需求信息,我们会在24小时内与您取得联系。