【发布时间】:2018-09-14 14:41:04
【问题描述】:
我正在使用 GatsbyJs 并试图完成一个活动类切换。我有一个简单的组件,它由一个带有跨度的锚标记组成。我想通过切换锚点击时上的活动类来更改一些css。到目前为止,这是我的代码,我也在使用样式组件。我在下面的损坏代码部分尝试了一些 vanilla js,这显然不起作用,因此代码损坏。
提前致谢
样式
const Menu = styled.a`
position: absolute;
cursor: pointer; padding: 10px 35px 16px 0px;
span, span:before, span:after{
cursor: pointer;
border-radius: 1px;
height: 5px;
width: 35px;
background: #000000;
position: absolute;
display: block;
content: '';
transition: all 200ms ease-in-out;
}
span:before{
top: -10px;
}
span:after{
bottom: -10px;
}
.active span{
background-color: transparent;
}
.active span:before, .active span:after{
top:0;
}
.active span:before{
transform: rotate(45deg);
}
.active span:after{
transform: rotate(-45deg);
}
`
组件
const TemplateWrapper = ({ children }) => (
<div>
<Wrapper>
<Menu id="nav-toggle" className="menu"><span></span></Menu>
{children()}
</Wrapper>
</div>
)
TemplateWrapper.propTypes = {
children: PropTypes.func,
}
export default TemplateWrapper
破码
document.querySelector( "#nav-toggle" )
.addEventListener( "click", function() {
this.classList.toggle( "active" );
});
这是渲染的 html
<a class="menu sc-bwzfXH SqHLW" id="nav-toggle"><span></span></a>
【问题讨论】:
-
你能发布
#nav-toggle被渲染的反应代码吗? -
好的,我添加了上面呈现的内容。我还修复了菜单组件中缺少导航切换 ID 的内容。但是,损坏的代码部分甚至不允许应用程序运行。如果我删除它,应用程序就会运行并且一切正常。
-
我看到了问题,您需要在样式组件中的“.active span”之前添加“&”。像 &.active span ...
-
你得到的错误是什么?
-
标签: javascript css reactjs styled-components gatsby