uniapp多媒体组件及配置项

本文详细介绍了uniapp中的音频、图片和视频组件的常用属性,如音频的loop和controls,图片的mode属性,以及视频的autoplay和loop。此外,还阐述了uni-app的配置文件,包括全局配置、应用配置、条件编译、主题样式和主组件的用途,特别是tabBar配置和导航栏样式定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.audio音频

<view>
	<audio :src="audioSrc" controls></audio>
</view>
data:function() {
	return {
		audioSrc:"https://img-cdn-qiniu.dcloud.net.cn/uniapp/audio/music.mp3"
	}
}

常用属性:

  • src 播放地址
  • loop 是否循环播放 默认值false
  • controls 是否显示默认控件 默认值false

二.image图片

<view>
	<image src="/static/img/shuijiao.jpg" style="width:50%;" mode="widthFix"></image>
</view>

常用属性:mode 图片裁剪、缩放的模式

mode有效值:4种缩放模式,9种裁剪模式
缩放:
scaleToFill 默认值,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素;
widthFix宽度不变,高度自动变化,保持原图宽高比不变

裁剪:
top不缩放图片,只显示图片的顶部区域
left不缩放图片,只显示图片的左边区域
top left不缩放图片,只显示图片的左上边区域

注:①<image> 组件默认宽度 300px、高度 225px;
②使用 image 可能导致样式生效较慢,出现 “闪一下” 的情况,设置 image{will-change: transform} ,可优化此问题

三.video视频

<video id="myVideo" src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20181126.mp4" @error="videoErrorCallback" controls></video>

常用属性:

  • autoplay 是否自动播放 默认值false
  • loop 是否循环播放 默认值false
  • controls 是否显示默认播放控件(播放/暂停按钮、播放进度、时间)默认值true

注:<video> 默认宽度 300px、高度 225px,可通过 css 设置宽高

四.配置

1.pages.json 文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar等。

(1)pages.json中的tabBar
可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页

①tabBar 中的 list 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序
②tabbar 的页面展现过一次后就保留在内存中,再次切换 tabbar 页面,只会触发每个页面的onShow,不会再触发onLoad
③代码跳转到tabbar页面,api只能使用uni.switchTab,不能使用uni.navigateTo、uni.redirectTo;使用navigator组件跳转时必须设置open-type="switchTab"

(2)pages.json中的globalStyle

"globalStyle": {
	"navigationBarTextStyle": "black",
	"navigationBarTitleText": "uni-app",
	"navigationBarBackgroundColor": "#F8F8F8",
	"backgroundColor": "#F8F8F8",
}
  • navigationBarTextStyle:导航栏文字的样式
  • navigationBarTitleText:导航栏文字
  • navigationBarBackgroundColor:导航栏的背景颜色
  • backgroundColor:整个页面的背景颜色

2.manifest.json 文件是应用的配置文件,用于指定应用的名称、图标、权限等
3.package.json文件中增加uni-app扩展节点,可实现自定义条件编译平台
4.vue.config.js 是一个可选的配置文件,如果项目的根目录中存在这个文件,那么它会被自动加载
5.uni.scss文件是为了方便整体控制应用的风格。比如按钮颜色、边框风格
6.App.vue是uni-app的主组件,所有页面都是在App.vue下进行切换的,是页面入口文件。
7.main.js是uni-app的入口文件,主要作用是初始化vue实例、定义全局组件、使用需要的插件如vuex

### 如何在 UniApp 中使用 Audio 组件 #### 使用 `createInnerAudioContext` 创建音频实例 为了更好地控制音频播放,在 UniApp 中推荐使用 `uni.createInnerAudioContext()` 方法来创建一个内部音频上下文对象。此方法返回的对象提供了丰富的 API 来管理音频的播放、暂停等功能[^1]。 ```javascript // 创建音频上下文实例 const innerAudioContext = uni.createInnerAudioContext(); innerAudioContext.src = 'https://example.com/path/to/audio.mp3'; innerAudioContext.play(); // 添加事件监听器 innerAudioContext.onPlay(() => { console.log('开始播放'); }); innerAudioContext.onPause(() => { console.log('已暂停'); }); innerAudioContext.onError((res) => { console.error(`发生错误 ${res.errMsg}`); }); ``` #### 封装自定义音乐播放器组件 对于更复杂的应用场景,可以考虑将上述逻辑封装成 Vue 组件以便于复用和维护。通过这种方式可以在多个页面中轻松引入并配置不同的音频源文件[^2]。 ```html <template> <view class="music-player"> <!-- 控制按钮 --> <button @click="togglePlayback">{{ isPlaying ? 'Pause' : 'Play' }}</button> <!-- 显示当前进度条 (可选) --> <progress :percent="currentProgress"></progress> </view> </template> <script> export default { data() { return { internalAudioCtx: null, isPlaying: false, currentProgress: 0 }; }, mounted() { this.internalAudioCtx = uni.createInnerAudioContext(); this.internalAudioCtx.src = '/static/music/sample.mp3'; // 设置默认音频路径 // 监听播放状态变化更新UI this.internalAudioCtx.onTimeUpdate(() => { const progress = Math.floor(this.internalAudioCtx.currentTime / this.internalAudioCtx.duration * 100); this.currentProgress = isNaN(progress)? 0 : progress; }); this.internalAudioCtx.onEnded(() => { this.isPlaying = false; }); }, methods: { togglePlayback() { if (!this.isPlaying && !this.internalAudioCtx.paused) { this.internalAudioCtx.play(); this.isPlaying = true; } else { this.internalAudioCtx.pause(); this.isPlaying = false; } } } }; </script> ``` #### 基础属性设置与操作 除了以上提到的功能外,还可以利用 `<audio>` 标签配合其原生属性来进行简单的音频展示。不过需要注意的是,这种方法相对较为局限,建议优先采用 `createInnerAudioContext` 方式获取更多的灵活性和支持跨平台特性[^3]。 ```xml <!-- 简单示例:直接嵌入 HTML 的 audio 元素 --> <audio src="/path/to/file.mp3" controls></audio> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值