Awesome Cursor Rules
uiaspect-ratiosource: ok · refreshed
Aspect Ratio
Fixed-ratio content container for Tile UI.
npx shadcn add "https://react.tileui.zmorg.cn/r/aspect-ratio.json"free
No selection tags yet — empty means no evidence, not lack of support.
Dependencies
Bundle weight · lightRegistry dependencies
@tile-ui/core@tile-ui/styles
Files3 · source cached 10/2/2026, 10:28:23 AM
packages/react/src/components/aspect-ratio/aspect-ratio.tsx
import React from 'react';
import { aspectRatioStyleKeys, getAspectRatioPadding } from '../lib/core';
import type { AspectRatioBaseProps } from '../lib/core';
import styles from './aspect-ratio.module.scss';
export interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement>, AspectRatioBaseProps {}
const AspectRatio = React.forwardRef<HTMLDivElement, AspectRatioProps>(({ className = '', ratio = 1, children, style, ...props }, ref) => {
const paddingTop = `${getAspectRatioPadding(ratio)}%`;
return (
<div ref={ref} data-slot="aspect-ratio" className={`${styles[aspectRatioStyleKeys.root]} ${className}`} style={{ ...style, paddingTop }} {...props}>
<div className={styles[aspectRatioStyleKeys.content]}>{children}</div>
</div>
);
});
AspectRatio.displayName = 'AspectRatio';
export { AspectRatio };
export default AspectRatio;
packages/styles/scss/components/aspect-ratio.module.scss
@use '../../../styles/variables/colors' as *;
// AspectRatio 根容器:通过 padding-top 撑起高度
.root {
position: relative;
width: 100%;
// Solid 使用伪元素撑开高度,避免根节点 padding 参与 max-width 盒模型计算。
&[data-layout='solid'] {
padding-top: 0 !important;
&::before {
display: block;
width: 100%;
padding-bottom: var(--tile-aspect-ratio-padding);
content: '';
}
}
}
// 内容容器:绝对定位占满
.content {
position: absolute;
inset: 0;
}
packages/react/src/components/aspect-ratio/index.ts
export { AspectRatio, type AspectRatioProps } from './aspect-ratio';