Skip to content

Media 媒体懒加载

统一的图片 / 视频媒体组件:

  • 进入视口才尝试播放;
  • 离开视口自动暂停(pauseWhenOutViewport);
  • 结合 useDocumentVisibility,页面被隐藏(切后台 / 切换标签页)时自动暂停。

基础用法(视频)

查看代码
vue
<template>
    <div style="max-width: 360px; border: 1px solid #eee; border-radius: 8px; overflow: hidden">
        <Media
            type="video"
            src="https://www.w3schools.com/html/mov_bbb.mp4"
            :lazy="true"
            :pause-when-out-viewport="true"
            style="width: 100%; height: 200px; display: block"
            :observe-options="{ threshold: 0.3, rootMargin: '-200px' }"
        />
    </div>
</template>

<script setup lang="ts">
import { Media } from "@a-drowned-fish/rox-v";
</script>

Props

参数说明类型默认值
type媒体类型"image" | "video""image"
src资源地址string
alt图片 altstring"."
poster视频封面string""
loop视频循环booleantrue
muted视频静音booleantrue
controls显示原生控制条booleanfalse
preload视频预加载策略string"metadata"
lazy是否启用视口懒加载(视频)booleantrue
pauseWhenOutViewport离开视口是否暂停booleantrue
observeOptions配置(可包含 rootUseIntersectionObserverOptions{}
pause是否暂停播放booleanfalse

事件(视频)

loadstart / loadedmetadata / loadeddata / canplay / play / playing / pause / waiting / ended / error / timeupdate

方法(expose)

方法说明
play()播放
pause()暂停
toggle()切换播放 / 暂停
video原生 video 元素引用

基于 MIT 协议开源