【发布时间】:2018-02-06 09:04:42
【问题描述】:
我目前正在尝试为我的响应式网站添加侧导航栏滑入和滑出功能。我正在关注第一个动画示例here。
我能够首先使用 document.getElementById("mySidenav").style.width = "250px"; 让它工作。但是,我不希望使用 document 来操作 DOM。我想使用本地状态并更新它。我正在使用 JavaScript 内联样式。以下是一些代码的工作原理:
openNavbar = () => {
document.getElementById("mySidenav").style.width = "0";
};
<div style={styles.navbarMobile} onClick={this.openNavbar}>
<NavSidebar/>
</div>
navbarMobile: {
height: '100vh',
width: '100%',
position: 'fixed',
zIndex: 11,
top: '0',
left: '-100%',
overflowX: 'hidden',
overflowY: 'hidden',
transition: '1s',
paddingRight: '15px',
display: 'none',
'@media (max-width: 992px)': {
display: 'block',
backgroundColor: 'white'
}
}
现在显然我正在做的这与示例有点不同。我不是在操作宽度,而是在操作左侧位置。它工作并运行平稳。但是,我现在正在尝试实现一些本地状态并根据本地状态值更改 CSS。这是我所拥有的:
this.state = {
navOpen: false
}
openNavbar = () => {
this.setState({navOpen: true});
};
<div style={this.state.navOpen ? {left: 0} : {left: -100%}, styles.navbarMobile} onClick={this.openNavbar}>
<NavSidebar/>
</div>
navbarMobile: {
height: '100vh',
width: '100%',
position: 'fixed',
zIndex: 11,
top: '0',
left: '-100%',
overflowX: 'hidden',
overflowY: 'hidden',
transition: '1s',
paddingRight: '15px',
display: 'none',
'@media (max-width: 992px)': {
display: 'block',
backgroundColor: 'white'
}
}
主要关注如何在传递三元组的同时添加其他内联样式。通过执行我上面的操作,navbarMobile 中的所有 css 都会被应用。但是,三元永远不会运行。如果我删除styles.navbarMobile,那么三元组就可以了。有没有办法可以同时运行这两个?关于我应该如何处理这个问题的任何例子或想法?
【问题讨论】:
标签: javascript css reactjs ecmascript-6