【发布时间】:2021-09-06 05:07:44
【问题描述】:
从图片中可以看出,我有两个手风琴,一个在左侧 (30%),一个在右侧 (70%),当我单击按钮时,右侧的一个消失,左侧的一个变为 (100%)。
我想做的是有可能通过可拖动的移动来调整左右两个元素的大小。
链接:codesandbox
代码:
import React, { useState } from "react";
import Typography from "@material-ui/core/Typography";
import ExpandMoreIcon from "@material-ui/icons/ExpandMore";
import {
makeStyles,
Accordion,
AccordionSummary,
AccordionDetails,
Tooltip
} from "@material-ui/core";
import { Visibility, VisibilityOff } from "@material-ui/icons";
const useStyles = makeStyles((theme) => ({
root: {
width: "100%"
},
heading: {
fontSize: theme.typography.pxToRem(15),
fontWeight: theme.typography.fontWeightRegular
}
}));
export default function SimpleAccordion() {
const classes = useStyles();
const [showPreview, setShowPreview] = useState(true);
const handleChangeCheck = () => {
setShowPreview((prev) => !prev);
};
return (
<div className={classes.root}>
<Tooltip title={showPreview ? "Show" : "Hide"} placement="bottom" arrow>
{showPreview ? (
<Visibility
onClick={handleChangeCheck}
style={{ cursor: "pointer" }}
/>
) : (
<VisibilityOff
onClick={handleChangeCheck}
style={{ cursor: "pointer" }}
/>
)}
</Tooltip>
<div
style={{
display: "flex"
}}
>
<div
style={{
width: showPreview ? "30%" : "100%",
minHeight: "500px",
marginTop: 7,
transition: "width 1s, height 4s"
}}
>
<Accordion defaultExpanded>
<AccordionSummary
expandIcon={<ExpandMoreIcon />}
aria-controls="panel1a-content"
id="panel1a-header"
>
<Typography className={classes.heading}>Accordion 1</Typography>
</AccordionSummary>
<AccordionDetails>
<Typography>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse malesuada lacus ex, sit amet blandit leo lobortis
eget.
</Typography>
</AccordionDetails>
</Accordion>
</div>
{showPreview && (
<div
style={{
width: "70%",
height: "100vh",
float: "right",
marginTop: 7,
marginLeft: 5
}}
>
<Accordion defaultExpanded>
<AccordionSummary
expandIcon={<ExpandMoreIcon />}
aria-controls="panel2a-content"
id="panel2a-header"
>
<Typography className={classes.heading}>Accordion 2</Typography>
</AccordionSummary>
<AccordionDetails>
<Typography>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse malesuada lacus ex, sit amet blandit leo lobortis
eget.
</Typography>
</AccordionDetails>
</Accordion>
</div>
)}
</div>
</div>
);
}
【问题讨论】:
标签: javascript reactjs material-ui accordion draggable