我有一个使用 grommet ux 框架的 React/redux 应用程序。基本结构是:
<App className="gol">
<Article>
<GLHeader />
<SideSplit active={props.nav} onResponsive={checkMobile} >
<GLNav />
<GLBoard />
</SideSplit>
<Footer colorIndex="neutral-1-a" justify="center">© 2016 </Footer>
</Article>
</App>
<GLNav />
除非单击“设置”图标,否则我希望隐藏该组件,从而允许该<GLBoard />
组件填满屏幕。我有一个连接到图标的 redux 状态变量来切换active
道具并切换<GLNav />
组件上的 CSS 类。CSS 将宽度设置为 0,以便 NAV 组件滑入和滑出:
.hide{
width: 0 !important;
transition: width .3s ease-out;
}
.show{
transition: width .3s ease-out;
}
所有这些都可以在 Chrome 中完美运行。但是在 Safari 中,当 SideSplit 组件处于非移动模式(屏幕宽度大于 750 像素)时 - 即使active
prop 为 false 并且.hide
应用了 CSS 类 -<GLNav />
组件也具有宽度值。如果我将宽度更改为小于 750 像素,扣眼会应用一个hidden
类,这将<GLNav />
根据需要隐藏。
这是<GLNav />
课程:
const GLNav = props => {
return(
<SideBar colorIndex="neutral-1-a" className={props.nav}>
<Header pad="medium" justify="between">
<Title>
Settings
</Title>
<Button icon={<Close />} onClick={() => props.actions.toggleNav()} />
</Header>
</SideBar>
)
}