uni-app 美观的音频播放组件

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 美观的音频播放组件

个人UI能力有限,无论怎么也设计不出来一套美观的音频组件,因此请求大神能出个音频组件

1 回复

在uni-app中创建一个美观的音频播放组件,可以通过结合HTML、CSS和JavaScript来实现。以下是一个简单的代码示例,它展示了如何创建一个基本的音频播放组件,并添加一些基本的样式以使其更加美观。

1. 创建组件文件

首先,在components目录下创建一个新的组件文件,例如AudioPlayer.vue

<template>
  <view class="audio-player">
    <image :src="coverImage" class="cover-image" />
    <view class="controls">
      <button @click="togglePlay" class="play-button">
        <text>{{ isPlaying ? 'Pause' : 'Play' }}</text>
      </button>
      <slider v-model="currentTime" :min="0" :max="duration" @change="updateTime" class="progress-slider" disabled :value="currentTime / duration"/>
      <text class="time">{{ formatTime(currentTime) }} / {{ formatTime(duration) }}</text>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      audioContext: null,
      src: '',
      coverImage: '',
      currentTime: 0,
      duration: 0,
      isPlaying: false
    };
  },
  methods: {
    togglePlay() {
      if (this.isPlaying) {
        this.audioContext.pause();
      } else {
        this.audioContext.play();
      }
      this.isPlaying = !this.isPlaying;
    },
    updateTime(e) {
      this.audioContext.currentTime = e.detail.value;
    },
    formatTime(time) {
      const minutes = Math.floor(time / 60);
      const seconds = Math.floor(time % 60);
      return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
    },
    initAudio(src) {
      this.audioContext = uni.createInnerAudioContext();
      this.audioContext.src = src;
      this.audioContext.onTimeUpdate(() => {
        this.currentTime = this.audioContext.currentTime;
        this.duration = this.audioContext.duration;
      });
    }
  },
  mounted() {
    this.initAudio(this.src);
  },
  props: {
    src: {
      type: String,
      required: true
    },
    coverImage: {
      type: String,
      default: ''
    }
  }
};
</script>

<style scoped>
.audio-player {
  width: 300px;
  position: relative;
}
.cover-image {
  width: 100%;
  height: 150px;
  object-fit: cover;
}
.controls {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 10px;
}
.play-button {
  background-color: #ff0000;
  color: white;
  border: none;
  padding: 10px;
  margin: 10px 0;
}
.progress-slider {
  width: 100%;
  margin: 10px 0;
}
.time {
  font-size: 14px;
}
</style>

2. 使用组件

在你的页面中引入并使用这个组件:

<template>
  <view>
    <AudioPlayer src="path/to/your/audio.mp3" coverImage="path/to/your/cover.jpg" />
  </view>
</template>

<script>
import AudioPlayer from '@/components/AudioPlayer.vue';

export default {
  components: {
    AudioPlayer
  }
};
</script>

这个示例展示了如何创建一个简单的音频播放组件,并通过样式使其看起来更美观。你可以根据需要进一步定制样式和功能。

回到顶部