首页 > 编程语言 >微信小程序 video 组件高度自适应实现

微信小程序 video 组件高度自适应实现

时间:2024-10-31 12:42:41浏览次数:1  
标签:视频 微信 height video aspect media 组件

偶然发现微信小程序的 video 无法像 Image 对象那样设置 mode='widthFix' 实现宽度100% 高度自适应

尝试了各种网上的方案都不可行。

要实现高度自适应需要2个条件:

  • 知道视频的真实宽,高
  • 设置 css 的 aspect-ratio height

在小程序内上传视频 调用 wx.chooseMedia 获取视频的宽高信息:

Taro.chooseMedia()

在 success 回调内获取到

{
      tempFilePath
      size:
      duration
      height
      width
      thumbTempFilePath
      fileType

在非上传接口中可以通过 video 组件的 bindloadedmetadata 事件回调内获取到视频相应的宽与高

将相关信息保存下来,比如存入名为 media 的对象中

接下来要在展示的 video 组件上设置两个 css 属性

  • aspect-ratio

  • height

以 Taro 中使用为例:

<Video
          object-fit="contain"
          style={styleObject}
        ></Video>

styleObject 对象计算如下:

styleObject = {aspectRatio: `${media.width} / ${media.height}`, height: `${media.width / media.height * 100}%`}

以我现实项目中的例子为例, 最后得到的相应 css 值为:

aspect-ratio: 720 / 1280;
height: 56.25%;

注意

1、单独设置以上两个属性的任意一个都不起作用

2、如果是在小程序开发工具中测试会发现,你获取不到视频的宽与高


注:转载请注明出处博客园:王二狗Sheldon池中物 ([email protected])

标签:视频,微信,height,video,aspect,media,组件
From: https://www.cnblogs.com/willian/p/18517474

相关文章

  • 电脑端开两个微信的方法
    电脑端创建脚本文件,脚本语法#启动第一个微信start/d"微信安装路径"WeChat.exe#启动第二个微信start/d"微信安装路径"WeChat.exe#启动第三个微信start/d"微信安装路径"WeChat.exe#结束exit找到当前微信安装路径方式一右键属性方式二右键,打开“......
  • 实现.NET 4.0下的Task类相似功能组件
    实现.NET4.0下的Task类相似功能:TaskExCum组件详解引言随着.NET技术的发展,异步编程模型逐渐成为现代应用程序开发中的标准实践之一。.NET4.5引入了Task类,极大地简化了异步编程的过程。然而,许多遗留系统仍在使用.NET4.0或更低版本,这些版本并未直接支持Task类的全......
  • ESP32组件管理
    前言最近在查找资料的过程中,偶然发现ESP32-IDF的框架下,官方提供了一套组件管理器,能够有效的,快速的部署一些开源的软件框架,下面简单介绍一下该功能如何使用。在项目中使用组件列表访问官方网站,查询所需要的组件,这里建议IDF版本为5.0以上。大多数组件都只支持5.0以上的版本。......
  • js文件切片上传组件resumable.js使用
    接到一个媒体文件切片上传的需求,写demo记录下。前端<fieldset><legend>videopreview</legend><div><videoid="video-preview"controlsmutedheight="112px"width="200px"></video><inputtype="......
  • 《vue3第五章》新的组件,包含:Fragment、Teleport、Suspense
    @目录五、新的组件1.Fragment2.Teleport案例完整代码3.Suspense案例完整代码本人其他相关文章链接五、新的组件1.Fragment在Vue2中:组件必须有一个根标签在Vue3中:组件可以没有根标签,内部会将多个标签包含在一个Fragment虚拟元素中好处:减少标签层级,减小内存占用2......
  • vue3知识点:Teleport组件
    @目录五、新的组件2.Teleport案例完整代码本人其他相关文章链接五、新的组件2.Teleport问题:什么是Teleport? 答案:Teleport是一种能够将我们的组件html结构移动到指定位置的技术。<teleportto="移动位置"> <divv-if="isShow"class="mask"> <divclass="dialog"> &l......
  • 微信小程序连接阿里云物联网平台
    物联网平台产品创建通过网盘分享的文件:微信小程序联网阿里云平台链接:https://pan.baidu.com/s/1MjP47pZeIQMpnoDKAA_vVA?pwd=BFDJ提取码:BFDJ1.www.baidu.com阿里云控制台,进去后可以先注册账号2.产品的创建----------物联网平台 创建产品  添加设备   ......
  • lazarus menu组件
    lazarus的menu控件在银河麒麟显示(GTK2)灰黑色背景,荆通大神通过修改gtk2源码可以修改背景但效果还是不理想。近日在GitHub找到一个LazarusMenu,经试用发现问题很多,其中还使用了bgracontrols控件。我修改的版本删除bgracontrols控件,修正了大量的Bug,已可以使用。修改TAdvancedMenu......
  • Vue.js组件开发全面指南:从基础到高级应用
    1.Vue.js组件概述1.1什么是Vue.js组件Vue.js组件是Vue.js框架中的核心概念,它是一种封装了特定功能的可复用代码单元。每个组件可以包含自己的模板、逻辑和样式,使得开发者能够构建大型应用时,像搭积木一样组合这些独立的组件。组件基于自定义元素进行扩展,使得开发者能够创......
  • 微信小程序比APP有什么优势和劣势
    微信小程序与APP相比,具有以下优势和劣势:优势无需下载安装:用户可以直接在微信中使用小程序,无需下载和安装,节省了手机空间和流量。即用即走:小程序使用后即可关闭,不会占用后台资源,用户体验更加流畅。开发成本低:相对于APP,小程序的开发成本更低,维护也更加简便。推广成本低:......