FixedAspectRatioContainer
FixedAspectRatioContainer 组件的宽高比、尺寸属性与缩放回调
FixedAspectRatioContainer 在任意父容器内保持固定比例的舞台,内部自动测量可用空间、居中并触发尺寸更新
注意: 在播放器中使用时,仍需包裹在
GameProviders中以共享配置
示例
"use client";
import { FixedAspectRatioContainer } from "narraleaf-react";
export default function MyViewport() {
return (
<FixedAspectRatioContainer
aspectRatio={16 / 9}
baseWidth={1920}
minWidth={480}
minHeight={270}
onUpdate={({ width, height, scale }) => {
console.log("渲染舞台", width, height, scale);
}}
>
<div className="stage">
{/* 舞台内容 */}
</div>
</FixedAspectRatioContainer>
);
}Props
aspectRatio: number— 宽高比,如16 / 9baseWidth: number— 基准宽度,缩放比例通过scale = renderWidth / baseWidth计算minWidth?: number— 最小宽度,默认0minHeight?: number— 最小高度,默认0debounceMs?: number— 尺寸更新去抖时间(ms),默认延续播放器的ratioUpdateInterval语义;0关闭去抖onUpdate?: (metrics: { width; height; scale; containerWidth; containerHeight }) => void— 尺寸计算完成回调children?: React.ReactNode— 舞台内容id?: string— 透传给最外层容器className?: string— 透传给最外层容器[data-*?: string]— 其余 HTML 属性透传到最外层容器
组件内部使用 ResizeObserver 监听父容器尺寸变化,自动居中、缩放并保持 position: relative / margin: auto 的布局