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

偶然发现微信小程序的 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池中物 (willian12345@126.com)

posted @   池中物王二狗  阅读(363)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
转载入注明博客园 王二狗Sheldon Email: willian12345@126.com https://github.com/willian12345
点击右上角即可分享
微信分享提示