vue中添加mp3音频文件的方法

下面是详细讲解 Vue 中添加 mp3 音频文件的方法的完整攻略。

1.准备工作

在 Vue 项目的 public 目录下创建 audio 目录,并将需要添加的 mp3 音频文件放置在该目录下。

2.添加音频标签

在需要添加音频的组件中,使用 HTML5 音频标签 audio,并为其设置 src 属性为音频文件的相对路径:

<audio src="./audio/music.mp3" controls></audio>

其中,controls 属性表示播放器应该显示标准控件,例如播放/暂停按钮和音量控制。

3.使用 Vue 组件来加载音频

如果你更喜欢使用 Vue 组件来加载音频,那么你可以先在组件中添加如下代码:

import music from "@/audio/music.mp3";

export default {
  data() {
    return {
      audio: new Audio(music),
    };
  },
  mounted() {
    this.audio.load();
  },
};

其中,import 语句用于从相对路径中加载音频文件,new Audio() 方法用于创建一个新的音频对象,this.audio.load() 方法用于预加载音频文件。

接下来,你可以在组件模板中使用 <audio> 标签,然后将其 src 属性设置为音频对象的 URL:

<audio :src="audio.src" controls></audio>

示例说明

示例 1:添加多个音频文件

如果你需要添加多个音频文件,那么你可以在 data 中定义一个包含所有音频文件的数组,并使用 v-for 循环遍历它,然后为每个音频文件创建一个音频对象。

import music1 from "@/audio/music1.mp3";
import music2 from "@/audio/music2.mp3";
import music3 from "@/audio/music3.mp3";

export default {
  data() {
    return {
      audios: [
        { id: 1, src: music1 },
        { id: 2, src: music2 },
        { id: 3, src: music3 },
      ],
    };
  },
  mounted() {
    this.audios.forEach((audio) => {
      audio.obj = new Audio(audio.src);
      audio.obj.load();
    });
  },
};

接下来,你可以在组件模板中使用 <audio> 标签,然后将其 src 属性设置为音频对象的 URL,如下所示:

<div v-for="audio in audios" :key="audio.id">
  <audio :src="audio.obj.src" controls></audio>
</div>

示例 2:添加带有自定义控件的音频

如果你需要添加带有自定义控件的音频,那么你可以使用 Vue 组件来封装音频播放器。

<template>
  <div class="audio-player">
    <audio ref="audio" :src="src" @timeupdate="updateTime"></audio>
    <div class="progress-bar">
      <div class="progress" :style="{ width: progress + '%' }"></div>
    </div>
    <div class="controls">
      <button class="play" :class="{ paused: paused }" @click="togglePlay"></button>
      <div class="time">{{ currentTime }} / {{ duration }}</div>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    src: {
      type: String,
      required: true,
    },
  },
  data() {
    return {
      audio: null,
      paused: true,
      progress: 0,
      currentTime: 0,
      duration: 0,
    };
  },
  methods: {
    togglePlay() {
      if (this.paused) {
        this.audio.play();
      } else {
        this.audio.pause();
      }
      this.paused = !this.paused;
    },
    updateTime() {
      this.currentTime = this.formatTime(this.audio.currentTime);
      this.duration = this.formatTime(this.audio.duration);
      this.progress = (this.audio.currentTime / this.audio.duration) * 100;
    },
    formatTime(time) {
      const seconds = Math.floor(time % 60);
      const minutes = Math.floor(time / 60);
      return minutes + ":" + (seconds < 10 ? "0" : "") + seconds;
    },
  },
  mounted() {
    this.audio = this.$refs.audio;
    this.audio.load();
    this.audio.addEventListener("timeupdate", this.updateTime);
  },
  beforeDestroy() {
    this.audio.removeEventListener("timeupdate", this.updateTime);
  },
};
</script>

<style>
/* 样式省略,具体可以自行定义 */
</style>

使用该组件时,你只需要在父组件中添加如下代码:

<audio-player src="./audio/music.mp3"></audio-player>

其中,src 属性表示音频文件的相对路径。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue中添加mp3音频文件的方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue组件实现文字居中对齐的方法

    为了在Vue中实现文字居中对齐,我们可以使用CSS来为Vue组件设置样式。在Vue中设置样式的方法可以通过<style>标签来实现。 以下是两种示例说明: 示例一:使用flex 一种常见的设置文字居中对齐的方法是使用flexbox布局。在Vue组件中,我们可以为其容器添加.center类,通过CSS样式中的display: flex和align-…

    Vue 2023年5月28日
    00
  • Vue3 axios配置以及cookie的使用方法实例演示

    下面是关于“Vue3 axios配置以及cookie的使用方法实例演示”的完整攻略。 1. Vue3 axios配置 在Vue3项目中使用axios需要先安装axios库,可以通过以下命令进行安装: npm install axios –save 安装完成后,需要在Vue3项目中进行配置。通常情况下,我们推荐将axios配置在src/plugins/axi…

    Vue 2023年5月28日
    00
  • vue3使用Vite打包组件库从0搭建过程详解

    题目中提到的“vue3使用Vite打包组件库从0搭建过程详解”,我理解为一个具有如下要素的教程: 介绍Vue 3框架,Vite打包工具和组件库概念 梳理实现组件库所需的步骤和工具 详细描述如何利用Vite打包工具和Vue 3框架开发组件库 通过示例演示组件库开发流程和效果 以下是具体的完成步骤: 1. 什么是Vue 3框架,Vite打包工具和组件库概念 在开…

    Vue 2023年5月28日
    00
  • vue-cli脚手架的安装教程图解

    下面是”vue-cli脚手架的安装教程图解”的完整攻略: 安装Node.js 首先,你应该安装Node.js。Node.js是一个JavaScript运行时环境,可以实现服务器端的JavaScript开发。 如果你还没有安装,可以从Node.js官网下载并安装:https://nodejs.org/ 安装vue-cli vue-cli是一个Vue.js项目的…

    Vue 2023年5月27日
    00
  • vue 中使用 bimface详情

    首先,需要明确的是,要在Vue中使用Bimface详情,需要引入BimFace的JavaScript SDK,并按照BimFace提供的文档设置好BimFace Viewer所需的DOM容器以及相关参数。接下来,我们将详细讲解该过程。 步骤一:引入BimFace SDK 由于BimFace SDK的体积较大,我们一般会将其放在CDN上,通过Vue的compo…

    Vue 2023年5月28日
    00
  • Vue中使用 class 类样式的方法详情

    下面我将详细讲解在Vue中使用class样式的方法: 一、Vue中绑定class样式的常见方法 1. 绑定单个class样式 使用v-bind或:直接绑定class属性,即class=”[className]”,[className]为你想要应用的样式类名。 比如我们有一个<div>元素,需要加上red样式: <template> &…

    Vue 2023年5月28日
    00
  • 使用vue实现grid-layout功能实例代码

    使用Vue实现Grid-Layout功能需要使用vue-grid-layout插件,并结合Vue的生命周期进行使用。整个实现过程可分为以下几步: 安装vue-grid-layout插件。 首先需要在项目中安装vue-grid-layout插件,使用命令:npm install vue-grid-layout –save 进行安装。 在vue组件中引入并配置…

    Vue 2023年5月29日
    00
  • vue中使用js-xlsx导出excel的实现方法

    当需要在Vue中生成Excel文件时,可以使用js-xlsx库来实现。下面是具体步骤: 步骤一:安装依赖 在终端中输入以下命令安装js-xlsx依赖: npm install xlsx 步骤二:导入依赖 在需要使用js-xlsx的组件上方,引入js-xlsx: import xlsx from ‘xlsx’ 步骤三:生成excel数据 在需要生成excel的…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部