如何在Material UI中使用Grid组件?


网格指的是类似表格的行和列结构。当我们使用HTML的<table>标签创建表格时,可以创建不同尺寸的行和列,但Material UI库的Grid组件也允许我们这样做。

我们可以使用Material UI的Grid组件作为容器和项目。此外,我们可以根据设备屏幕的尺寸自动调整网格。

用户首先需要使用以下命令安装Material UI库,才能在React项目中使用Grid组件。

npm install @mui/material @emotion/react @emotion/styled 

根据标准,每个设备包含12列。我们可以传入1到12作为属性来创建一个特定列数的Grid。

语法

用户可以按照以下语法使用Material UI的Grid组件。

<Grid container spacing = {2}>
   <Grid item xs = {12}>
      content
   </Grid>
</Grid> 

我们在上面的语法中将外部Grid组件用作容器,通过传递container作为属性。嵌套的Grid组件作为容器中的项目,因为我们传递了'item'作为属性。

示例1(基本Grid组件)

在下面的示例中,我们使用了Material UI的Grid、Paper和Box组件。Paper组件用于创建卡片。

我们创建了Grid容器,并在其中添加了四个网格。前两个网格尺寸相同,占据六列;第三个网格占据八列;第四个网格在第二行占据四列。

这里,“xs”表示设备断点。用户可以对小型设备使用“sm”。

import React from "react";
import Box from "@mui/material/Box";
import Paper from "@mui/material/Paper";
import Grid from "@mui/material/Grid";
const App = () => {
   return (
      <div>
         <h3>
            {" "}
            Using the <i> Grid </i> Component of the Material UI to add Grid in the React application {" "}
         </h3>
         <Box sx = {{ flexGrow: 1 }}>
            <Grid container spacing = {2}>
               <Grid item xs = {6}>
                  <Paper elevation = {16}> xs=6 </Paper>
               </Grid>
               <Grid item xs = {6}>
                  <Paper elevation = {16}> xs=6 </Paper>
               </Grid>
               <Grid item xs = {8}>
                  <Paper elevation = {16}> xs=8 </Paper>
               </Grid>
               <Grid item xs = {4}>
                  <Paper elevation = {16}> xs=4 </Paper>
               </Grid>
            </Grid>
         </Box> 
      </div>
   );
};
export default App;

输出

示例2(更改网格之间的间距)

我们可以使用'spacing'属性来更改两个网格之间的间距。例如,我们在前两个网格之间设置了'10'的间距,在后两个网格之间设置了'1'的间距。

import React from "react";
import Paper from "@mui/material/Paper";
import Grid from "@mui/material/Grid";
const App = () => {
   return (
      <div>
         <h3>
            {" "}
            Using the <i> Grid </i> Component of the Material UI to add Grid in the React application {" "}
         </h3>
         <div>
            <Grid container spacing = {10}>
               <Grid item xs = {6}>
                  <Paper elevation = {16}> Item 1 </Paper>
               </Grid>
               <Grid item xs = {6}>
                  <Paper elevation = {16}> Item 2 </Paper>
               </Grid>
            </Grid>
         </div>
         <div style = {{ width: "100%", marginTop: "1rem" }}>
            <Grid container spacing = {1}>
               <Grid item xs = {6}>
                  <Paper elevation = {16}> Item 3 </Paper>
               </Grid>
               <Grid item xs = {6}>
                  <Paper elevation = {16}> Item 4 </Paper>
               </Grid>
            </Grid>
         </div>
      </div>
   );
};
export default App;

输出

在输出中,用户可以观察到每个网格之间的间距差异。同样,用户也可以类似地设置行之间的间距。

示例3(使用属性自定义Grid样式)

在下面的示例中,我们创建了两个Grid容器,并在两个容器中添加了相同的内容。

在第一个容器中,我们添加了'direction'属性,其值为'row-reverse'。在输出中,用户可以观察到它反向显示所有组件。

在第二个容器中,我们添加了'justifyContent'属性,其值为'flex-end'。

import React from "react";
import Paper from "@mui/material/Paper";
import Grid from "@mui/material/Grid";
const App = () => {
   return (
      <div>
         <h3>
            {" "}
            Using the <i> Grid </i> Component of the Material UI to add Grid in the React application {" "}
         </h3>
         <div>
            <Grid container spacing = {2} direction = "row-reverse">
               <Grid item xs = {3}>
                  <Paper elevation = {16}> Item 1 </Paper> 
               </Grid>
               <Grid item xs = {9}>
                  <Paper elevation = {16}> Item 2 </Paper>
               </Grid>
            </Grid>
         </div>
         <div style = {{ width: "50%", marginTop: "1rem", height: 300 }}>
            <Grid container spacing = {10} justifyContent = "flex-end">
               <Grid item xs = {2}>
                  <Paper elevation = {16} style = {{ width: 50 }}>
                     Item 1
                  </Paper>
               </Grid>
               <Grid item xs = {2}>
                  <Paper elevation = {16} style = {{ width: 100 }}>
                     Item 2
                  </Paper>
               </Grid>
            </Grid>
         </div>
      </div>
   );
};
export default App;

输出

在输出中,用户可以观察到它将两个网格显示在div的末尾。这里,div的宽度为50%。

用户学习了如何在ReactJS中使用Material UI的Grid组件。我们学习了如何将Grid用作容器和行。此外,我们还学习了如何为Grid设置尺寸。如果用户不想为Grid组件添加断点,可以添加“auto”布局以使网格响应式。此外,用户可以通过传递style作为属性来自定义Grid的CSS。

更新于:2023年3月7日

浏览量:798

开启你的职业生涯

完成课程获得认证

开始学习
广告