纵横比
纵横比组件调整其内容大小以匹配所需的比例。
简介
纵横比是一个包装组件,用于快速调整内容大小以符合您首选的宽高比。诸如图像之类的媒体内容可以基于 CSS object-fit
属性进行拉伸、调整大小和裁剪。
基础知识
import AspectRatio from '@mui/joy/AspectRatio';
纵横比组件包裹着它调整大小的内容。要调整大小的元素必须是第一个直接子元素。默认比例为 16/9
。
Solid
Soft
Outlined
Plain
比例
使用 ratio
属性更改纵横比,遵循 width/height
模式。例如,下面的演示使用 4/3
的比例,这是默认 16/9
的常见替代方案
对象适配
当纵横比组件内部的内容是图像或视频时,您可以使用 objectFit
属性来控制其调整大小的方式。
此属性使您可以访问与 CSS object-fit
属性关联的所有值:cover
(默认)、contain
、fill
、scaleDown
、initial
、inherit
和 none
。
标题
卡片的描述。
最小和最大高度
使用 minHeight
和 maxHeight
属性设置内容的最小和最大高度。当纵横比组件包裹动态宽度内容时,这很有用,如下面的演示所示
在 flex 行内使用
当纵横比组件是 flexbox row
容器的子元素时,使用 flex-basis
设置内容的理想宽度
优胜美地国家公园
美国,加利福尼亚州
默认情况下,纵横比组件将保留提供的纵横比。如果您希望纵横比组件填充垂直空间,请将 flex
属性设置为 true
Lorem ipsum 是图形中常用的占位符文本。
与 Next.js Image 一起使用
纵横比组件可以与 Next.js Image 组件一起用作子组件。Image 应该始终包含 layout="fill"
属性——否则它需要 height
和 width
值,这将违背纵横比组件的目的。
import Image from 'next/image';
import AspectRatio from '@mui/joy/AspectRatio';
import mountains from '../public/mountains.jpg';
function App() {
return (
<AspectRatio variant="outlined" ratio="1" objectFit="cover">
{/* only layout="fill" makes sense for using with AspectRatio */}
<Image alt="Mountains" src={mountains} layout="fill" placeholder="blur" />
</AspectRatio>
);
}
与图标一起使用
纵横比组件可以成为创建图标的方形容器的便捷工具。
夜景
421 万次观看
湖景
474 万次观看
山景
398 万次观看
列表堆叠
这是一个关于如何将纵横比与列表组件一起使用的简单说明
夜景
421 万次观看
湖景
474 万次观看
山景
398 万次观看
解剖结构
纵横比组件由一个根 <div>
和一个嵌套在内部的内容 <div>
组成;子组件被赋予一个 data-first-child
属性用于样式目的
<div class="MuiAspectRatio-root">
<div class="MuiAspectRatio-content">
<some-element data-first-child>
<!-- Aspect Ratio contents -->
</some-element>
</div>
</div>