手风琴的第二个子元素的网格属性不起作用
Grid properties on second child element of Accordion not working
这里我定义了父元素 display:"Grid"
并且我的子元素定义了 gridColumnStart
如下。它适用于第一个元素但不适用于第二个子元素。下面附上了我的代码。
return (
<Accordion
sx={{
display: "grid",
gridTemplateColumns: "1fr 2fr 1fr"
}}
>
<AccordionSummary
sx={{
gridColumnStart: "2",
gridColumnEnd: "4"
}}
expandIcon={<ExpandMoreIcon />}
aria-controls="panel1a-content"
id="panel1a-header"
>
<div>
<Typography variant="h1" sx={{ fontSize: "40px" }}>
{props.Title}
</Typography>
<Typography variant="subtitle1">{props.Description}</Typography>
<Button
size="small"
variant="outlined"
sx={{
width: "140px",
textAlign: "center",
marginTop: "10px",
color: "#2196F3",
borderColor: "#2196F3"
}}
>
More details
</Button>
</div>
</AccordionSummary>
<AccordionDetails
sx={{
gridColumnStart: "2",
gridColumnEnd: "3"
}}
>
{props.children}
</AccordionDetails>
</Accordion>
);
所以这里 gridColumnStart 和 End 使用 AccordionSummary 但不使用 AccordionDetails。
这是它的外观,但我希望文本位于中间。不确定我要采用的方法是否正确。如果有人能帮助我,我将不胜感激。
这是一个简化的 Accordion
definition:
<AccordionRoot>
<AccordionSummary />
<TransitionComponent>
<div>
<AccordionDetail />
</div>
</TransitionComponent>
</AccordionRoot>
您的 AccordionDetail
样式不起作用的原因是它应用于网格项的子项而不是网格项本身。要修复它,您需要直接在 TransitionComponent
网格容器的子项中设置网格属性,如果您检查该元素,您可以看到 DOM 元素的 class 名称是 MuiCollapse-root
:
<Accordion
sx={{
display: "grid",
gridTemplateColumns: "1fr 2fr 1fr",
"& .MuiCollapse-root": {
gridColumnStart: "2",
gridColumnEnd: "3"
}
}}
>
这里我定义了父元素 display:"Grid"
并且我的子元素定义了 gridColumnStart
如下。它适用于第一个元素但不适用于第二个子元素。下面附上了我的代码。
return (
<Accordion
sx={{
display: "grid",
gridTemplateColumns: "1fr 2fr 1fr"
}}
>
<AccordionSummary
sx={{
gridColumnStart: "2",
gridColumnEnd: "4"
}}
expandIcon={<ExpandMoreIcon />}
aria-controls="panel1a-content"
id="panel1a-header"
>
<div>
<Typography variant="h1" sx={{ fontSize: "40px" }}>
{props.Title}
</Typography>
<Typography variant="subtitle1">{props.Description}</Typography>
<Button
size="small"
variant="outlined"
sx={{
width: "140px",
textAlign: "center",
marginTop: "10px",
color: "#2196F3",
borderColor: "#2196F3"
}}
>
More details
</Button>
</div>
</AccordionSummary>
<AccordionDetails
sx={{
gridColumnStart: "2",
gridColumnEnd: "3"
}}
>
{props.children}
</AccordionDetails>
</Accordion>
);
所以这里 gridColumnStart 和 End 使用 AccordionSummary 但不使用 AccordionDetails。
这是它的外观,但我希望文本位于中间。不确定我要采用的方法是否正确。如果有人能帮助我,我将不胜感激。
这是一个简化的 Accordion
definition:
<AccordionRoot>
<AccordionSummary />
<TransitionComponent>
<div>
<AccordionDetail />
</div>
</TransitionComponent>
</AccordionRoot>
您的 AccordionDetail
样式不起作用的原因是它应用于网格项的子项而不是网格项本身。要修复它,您需要直接在 TransitionComponent
网格容器的子项中设置网格属性,如果您检查该元素,您可以看到 DOM 元素的 class 名称是 MuiCollapse-root
:
<Accordion
sx={{
display: "grid",
gridTemplateColumns: "1fr 2fr 1fr",
"& .MuiCollapse-root": {
gridColumnStart: "2",
gridColumnEnd: "3"
}
}}
>