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日

相关文章

  • ElementUI时间选择器限制选择范围disabledData的使用

    为了让大家更好地理解“ElementUI时间选择器限制选择范围disabledData的使用”,我们将分为以下几个步骤进行详细讲解: 安装ElementUI 创建一个ElementUI时间选择器组件 使用disabledData属性,限制时间选择器的选择范围 示例一: <template> <el-date-picker v-model=&…

    Vue 2023年5月29日
    00
  • vue里的axios如何获取本地json数据

    要在Vue中使用Axios读取本地JSON文件,需要按照以下步骤进行操作: 安装Axios 在Vue项目中使用Axios,需要安装Axios。可在终端中执行以下命令进行安装: npm install axios –save 创建JSON文件 在src/assets目录中创建名为data.json的文件,并写入以下内容: { "name"…

    Vue 2023年5月28日
    00
  • Vue检测屏幕变化来改变不同的charts样式实例

    下面是Vue检测屏幕变化来改变不同的charts样式的完整攻略: 1. 为什么需要检测屏幕变化 在现代的多种设备上,不同的屏幕尺寸和分辨率会影响到页面的显示和交互,特别是在数据可视化的场景中,如何适应不同屏幕呈现不同的样式和呈现方式是一个关键的问题。而Vue作为流行的MVVM框架,提供了一种简单但强大的方式来监测屏幕变化并对相应的变化进行处理。 2. 使用V…

    Vue 2023年5月28日
    00
  • Springboot与vue实现文件导入方法具体介绍

    下面是“Springboot与Vue实现文件导入方法”的完整攻略。 1. 前置条件 在介绍如何实现文件导入功能之前,需要确保以下条件已经满足: 已经安装好Springboot和Vue开发环境; 熟悉Springboot和Vue的基本开发知识; 掌握基本的前端与后端的交互方式和Ajax异步请求的使用; 2. 实现思路 文件导入功能的实现思路如下: 前端页面中使…

    Vue 2023年5月27日
    00
  • Vue数组中出现__ob__:Observer无法取值问题的解决方法

    当我们在使用Vue时,有时候会遇到一个问题:当我们打印Vue数据中的数组时,会出现一条类似“ob:Observer”的信息,而我们想要的数据并没有被打印出来,这是为什么呢?这是因为Vue对于数据的观测,会将其转换为响应式数据,并在数据上挂载一个Observer对象,这个__ob__属性就是用来标识Observer对象的。为了解决这个问题,我们需要使用Vue提…

    Vue 2023年5月29日
    00
  • vue3+vite使用环境变量.env的一些配置情况详细说明

    下面是关于”vue3+vite使用环境变量.env的一些配置情况详细说明”的完整攻略。 简介 在Vue3和Vite开发环境中,使用环境变量可助力于管理不同的配置文件,例如本地开发环境、生产环境等。 当我们需要在不同的环境中配置不同的API地址、配置信息等时,使用环境变量便能够让我们的代码变得更加灵活通用。在这里,我们将详细说明如何在Vue3+Vite项目中使…

    Vue 2023年5月28日
    00
  • Vue2实现组件props双向绑定

    下面我将详细讲解如何在Vue2中实现组件props的双向绑定。 1. Vue2中props的单向绑定 Vue2中的props是单向绑定的,即父组件可以向子组件传递数据,但是子组件不能直接修改父组件传递的props。在子组件中默认情况下只能读取父组件传递的props值,如果想要修改这些值,需要通过事件的形式在子组件中触发父组件传递的方法来实现。 下面是一个示例…

    Vue 2023年5月28日
    00
  • Vue.js中的高级面试题及答案

    Vue.js中的高级面试题及答案 前言 在Vue.js的应用中,一些高级问题会在面试中被问及。本攻略将详细讲解一些Vue.js高级面试题及答案。 1. Vue.js中的双向绑定如何工作? Vue.js中的双向绑定是通过Vue实例中的v-model指令来实现的。当输入框的值发生改变时,Vue.js会自动更新数据模型中的值。 示例代码如下: <templa…

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