reactjs - 如何在 MUI GridList 中实现瓦片的水平滚动?
问题描述
这是我的 JS 页面,我需要在其中实现GridList
组件以显示多个图块,并且在列表大小超过屏幕限制后可以水平滚动。
import React,{ useState} from "react";
import Header from "../../common/header/Header";
import "./Home.css";
import { GridList, GridListTile, GridListTileBar} from "@material-ui/core";
const images = [
{ thumbnail: { uri: 'https://lorempixel.com/200/200/animals',name:'animals'}},
{ thumbnail: { uri: 'https://lorempixel.com/200/200/city' ,name:'city'}},
{ thumbnail: { uri: 'https://lorempixel.com/200/200/city' ,name:'city'}},
{ thumbnail: { uri: 'https://lorempixel.com/200/200/city' ,name:'city'}},
{ thumbnail: { uri: 'https://lorempixel.com/200/200/nature' ,name:'nature'} },
{ thumbnail: { uri: 'https://lorempixel.com/200/200/cats' ,name:'cats'} },
{ thumbnail: { uri: 'https://lorempixel.com/200/200/cats' ,name:'cats'} },
{ thumbnail: { uri: 'https://lorempixel.com/200/200/cats' ,name:'cats'} },
];
export default function Home() {
return (
<>
<Header></Header>
<header className="head">Upcoming Movies</header>
<GridList cellHeight={180} cols={6}>
{images.map((image) => (
<GridListTile>
<img src={image.thumbnail.uri} />
<GridListTileBar
title={ image.thumbnail.name}
/>
</GridListTile>
))}
</GridList>
</>
);
}
解决方案
注意:在 MUI 的较新版本中,GridList
已更改为ImageList
,以下代码使用最新的 API。
您可以使用以下代码填充列而不是行:
<ImageList
sx={{
gridAutoFlow: "column",
gridTemplateColumns: "repeat(auto-fill,minmax(160px,1fr)) !important",
gridAutoColumns: "minmax(160px, 1fr)"
}}
>
{images.map((image) => (
<ImageListItem>
<img src={image.thumbnail.uri} />
<ImageListItemBar title={image.thumbnail.name} />
</ImageListItem>
))}
</ImageList>
gridAutoFlow: 'column'
:如果没有剩余空间,告诉网格创建另一列而不是转到下一行。gridTemplateColumns: 'repeat(auto-fill, minmax(160px, 1fr))'
: 设置列的最小和最大宽度,最小值为160px
,如果空间足够(不需要水平滚动条),则将每列宽度设置为相等。gridAutoColumns: 'minmax(160px, 1fr)'
:与上面相同,但对于视口之外的列。
现场演示
V5
V4
参考
推荐阅读
- html - 最大宽度不适用于 div.container-fluid
- c# - 如何将日期值转换为日期时间数据类型
- r - 如何在R中的数据集中更改列中的数据
- python - 计算紧凑 svd 的输出不正确
- android - 带有图像、文本和按钮的 Android ListView
- laravel - Laravel Blade 模板 - 将 php 内置函数或 laravel 助手放入 yield
- processing - 没有出现在画布上的圆圈
- reactjs - 尝试使用 axios 和 React 钩子从 API 中删除
- python - 正则表达式排除方括号内的所有内容,但不排除大括号内的方括号内容
- excel - 数据透视表帮助 - 选择以某个数字开头的所有帐户