效果图

components

template

<div class='daudio'><audio ref="audio" @timeupdate="updateProgress" @ended="end" @loadedmetadata="loadedmetadata" controlsstyle="display: none" src="../assets/audio/y837.mp3" preload="metadata">您的浏览器不支持音频播放</audio><div class="audioBox"><div class="audioInfo"><h3>2022123434.mp3(3.75KB)</h3><p id="time">{{ duration }}/{{ current }}</p></div><img ref="control" v-if="!isPlay" src="../assets/images/paly.png" alt="" @click="audioPlay(true)"class="audioControls" /><img ref="control" v-else src="../assets/images/suspend.png" alt="" @click="audioPlay(false)"class="audioControls" /></div></div>

javascript

export default {name: "AudioPlayer",data() {return {audio: null,contorl: null,contorlDot: null,contorlProgress: null,contorlProgressBox: null,current: "00:00",duration: "00:00",isPlay: false};},props: {},created() {},mounted() {this.init()},methods: {init() {this.audio = this.$refs.audio;this.contorl = this.$refs.contorl;},// 时分秒转换transTime(value) {let that = this;var time = "";var h = parseInt(`${value / 3600}`);value %= 3600;var m = parseInt(`${value / 60}`);var s = parseInt(`${value % 60}`);if (h > 0) {time = that.formatTime(h + ":" + m + ":" + s);} else {time = that.formatTime(m + ":" + s);}return time;},// 补零formatTime(value) {var time = "";var s = value.split(":");var i = 0;for (; i < s.length - 1; i++) {time += s[i].length === 1 ? "0" + s[i] : s[i];time += ":";}time += s[i].length === 1 ? "0" + s[i] : s[i];return time;},// 音频播放暂停audioPlay(status) {if (status) {this.audio.play();} else {this.audio.pause();}this.isPlay = status},// 更新进度条与当前播放时间updateProgress(e) {this.current = this.transTime(e.target.currentTime);//         let value = e.target.currentTime / Audio.duration;//   current.innerText = transTime(e.target.currentTime);//   contorlProgress.style.width = `${value * 100}%`;//   contorlDot.style.left = `${value * 100}%`;},// 音频结束end(e) {// contorlProgress.style.width = "0%";// contorlDot.style.left = "0%";// contorl.innerText = "播放";this.isPlay = false},loadedmetadata(e) {this.duration = this.transTime(e.target.duration);}},//如果页面有keep-alive缓存功能,这个函数会触发activated() { },
};
</script>

less

.audioBox {padding: 8px 16px;background: #eaebed;border-radius: 10px;display: flex;align-items: center;justify-content: space-between;margin-bottom: 20px;width: 311px;height: 54px;box-sizing: border-box;
}.audioControls {width: 22px;height: 22px;
}.audioInfo {h3 {font-family: PingFangSC-Regular;font-size: 14px;color: #333333;letter-spacing: 0.2px;text-align: justify;font-weight: 400;margin-bottom: 4px;}p {font-family: PingFangSC-Regular;font-size: 12px;color: #999999;letter-spacing: 0.17px;text-align: justify;font-weight: 400;}
}

引入

import AudioPlayer from "../../components/AudioPlayer.vue";
components: { AudioPlayer },
<AudioPlayer fileUrl="../assets/audio/y837.mp3"></AudioPlayer>

文档参考
关于 Audio 自定义样式
H5 audio 音频标签自定义样式修改以及添加播放控制事件

Vue实现自定义音频播放器组件相关推荐

  1. vue自定义音频播放组件_易于创建Vue的自定义音频播放器组件

    vue自定义音频播放组件 音频更好 (vue-audio-better) Easy to create custom audio player components for Vue.js. 易于为Vu ...

  2. Vue 自定义音乐播放器组件为H5添加背景音乐

    自定义音乐播放器组件为H5添加背景音乐: 1.创建music.vue组件 <template><div><div @click="changeOn" ...

  3. 自定义音频播放器_创建自定义HTML5音频播放器

    自定义音频播放器 在本教程中,我将向您介绍HTML5音频,并向您展示如何创建自己的播放器. 如果您想走捷径,请查看Envato市场上可用的现成的HTML5音频播放器 . 它使您可以从各种来源创建播放列 ...

  4. vue音频播放器组件

    因为原生audio 播放器太丑了 重新整理 百度综合完成了播放器, 基于element ui 组件书写的 需要的自取 <template><div class="audio ...

  5. polymer ajax_使用Polymer创建自定义音频播放器元素

    polymer ajax 什么是聚合物? (What is Polymer?) Polymer is a shim for a new web standard called Web Componen ...

  6. 微信小程序:音频播放器

    由于产品需求,需要做一个自定义音频播放器,现在也差不多做完了,接下来呢,给大家分享一下,大家先来看看效果图哦~ 这里呢,我选择的是 wx.createInnerAudioContext 这个方法,大家 ...

  7. rideo选中 vue_适用于 Vue 的播放器组件Vue-Video-Player操作

    如果h5的标签不能满足你的需求,那就用这个组件Vue-Video-Player吧,也许可以覆盖到你的需求. class="video-player vjs-custom-skin" ...

  8. Vue - 音频播放器插件(vue-aplayer)

    Vue使用音频播放器插件 vue-aplayer vue-aplayer中文文档:https://aplayer.netlify.app/docs/guide/ GitHub文档:https://gi ...

  9. 前端页面 h5使用vue搭建带播放列表切换的音频播放器 audio

    一个h5的音频播放器,播放列表与播放器上下首切换 样式效果对应起来. 五秒后自动收缩形成挂件(不可移动).点击播放器图片 即可展开.收起. audio.js    audio.css  资源下载 详细 ...

最新文章

  1. dell 回复 win10 8DW88B2
  2. Hadoop 2.0联邦机制
  3. 系统功能图怎么画_[分享]照明系统图和照明平面图怎么看?系统讲解
  4. hibernate开发优缺点
  5. xshell部署web项目_前端轻量化部署脚手架实践
  6. IE和FF获得键盘码
  7. Python多版本管理
  8. Selenium滚动条window.scrollTo和window.scrollBy
  9. 高等数学第六版下册答案
  10. 软件测试技术之如何编写测试用例
  11. MindManager_10 思维导图-软件下载
  12. uniapp 公众号微信支付提示 调用支付jsapi缺少参数appid
  13. Vue 截取视频第一帧作为封面图 然后转成base64,base64转成图片
  14. 目前为止学习过的循环解析过程
  15. 【单镜头反光相机】相机与小孔成像
  16. March 27th Tuesday (三月  二十七日 火曜日)
  17. 文本分类:Keras+RNN vs传统机器学习
  18. 2019领航杯write up
  19. 红外弱小目标检测:LoG尺度空间
  20. C语言猜数字游戏(1-100)

热门文章

  1. kaggle 在无网络的环境下安装packages的方法
  2. java抽象类的属性_java抽象类详解
  3. SYS.INDEXES (TRANSACT-SQL) SYS.INDEXES每个字段所代表的的意思
  4. 睡吧宝贝 - 贝瓦儿歌
  5. 幼儿园案例经验迁移_幼儿园案例分析《三个强盗》5篇
  6. utf8mb4 占用字节_如果我的MP3占用不到700MB的空间,为什么只能将80分钟的音乐刻录到CD?...
  7. Make PGP messages and signatures more interesting
  8. 网络攻击-arp攻击
  9. viewport的使用
  10. ubuntu安装kali linux工具,Ubuntu安装Kali工具集:Katoolin