我正在尝试用这些连接父母和孩子的花哨的红线设计一个定制的手风琴(见图)。
我在这里使用 Grommet 组件,但总而言之,它的布局只是一堆 div(Box 标签)和一个可折叠的子面板组件(Collapsible 标签)。可以打开子面板并显示更多内容。
经过几次尝试,我连接父母和孩子的做法是用左边框包裹外框,然后使用顶部的白框移除底部的额外边框(第二个示例的 Stack 标签代码)。连接卡片和左边框的水平线只是放置在 Child 选项卡旁边(在 SubMenuElement 组件内)的样式化 div。
我认为这是一个相当复杂的解决方案(也因为我需要让白盒响应),但我想不出一个更简单的解决方案。你对我如何改进或重新做红色连接有什么建议吗?在此先感谢您的帮助! 请注意,我知道所有面板在点击时都使用相同的变量
<MenuButton
open={openMenu}
label="PARENT TAB-XYZ"
onClick={() => {
const newOpenMenu = !openMenu;
setOpenMenu(newOpenMenu);
setOpenSubmenu1(!newOpenMenu ? false : openSubmenu1);
}}
/>
<Collapsible open={openMenu}>
<Box background="antiquewhite" margin={{ left: 'small' }} border={{ side: 'left', size: '2px', color: 'red' }}>
{Tabs.map(el => {
return (
<SubMenuElement
key={el.title}
open={openSubmenu1}
label={el.title}
onClick={() => setOpenSubmenu1(!openSubmenu1)}
/>
);
})}
</Box>
</Collapsible>
<MenuButton
open={openMenu}
label="PARENT TAB-POU"
onClick={() => {
const newOpenMenu = !openMenu;
setOpenMenu(newOpenMenu);
setOpenSubmenu1(!newOpenMenu ? false : openSubmenu1);
}}
/>
<Collapsible open={openMenu}>
<Stack anchor="bottom-left">
<Box
background="antiquewhite"
margin={{ left: 'small' }}
border={{ side: 'left', size: '2px', color: 'red' }}
>
{Tabs.map(el => {
return (
<SubMenuElement
key={el.title}
open={openSubmenu1}
label={el.title}
onClick={() => setOpenSubmenu1(!openSubmenu1)}
/>
);
})}
</Box>
<Box background="white" height="39px" width="35px"></Box>
</Stack>
</Collapsible>
</Box>
);