【发布时间】:2022-01-14 09:18:41
【问题描述】:
我想进行导航,我可以在其中打开一个按钮以滚动到该部分,但是当在 next.js 中签入以下代码时,我该怎么做才能取消选中 3 个输入。我必须制作每个菜单项还是可以保持原样?
感谢每一位帮助:)
function NavMenu() {
function MenuItem(props) {
const [menuItemActive, setMenuItemActive] = useState(false);
const MenuItemToggle = ({onChange, value}) =>
<label className='navitem-container'>
<input checked={value} type="checkbox" onChange={onChange} className='menuiteminput' id={props.idinput}/>
<span className='navitem-slider' id={props.idspan}>
{props.children}
</span>
</label>
;
return (
<div>
<MenuItemToggle value={menuItemActive} onChange={(event) => setMenuItemActive(event.currentTarget.checked)}/>
</div>
)
}
return (
<div>
<div className='left-nav'>
<div className='left-navitem-container'>
<MenuItem idspan="services-span" idinput="services-input">
Services
</MenuItem>
<MenuItem idspan="portfolio-span" idinput="portfolio-input">
Portfolio
</MenuItem>
<MenuItem idspan="about-us-span" idinput="about-us-input">
About Us
</MenuItem>
<MenuItem idspan="contact-span" idinput="contact-input">
Contact
</MenuItem>
</div>
</div>
</div>
)
}
这里是 CSS
.left-nav {
width: 250px;
height: 100vh;
display: flex;
justify-content: flex-start;
align-items: center;
padding-left: 3%;
position: fixed;
}
.menuiteminput {
position: absolute;
left: -9999px;
top: -9999px;
}
.menuiteminput:checked + #services-span:before {
left: 72px;
content: url(../public/svgs/blank.svg);
transition-duration: 0.5s;
}
.menuiteminput:checked + #portfolio-span:before {
left: 72px;
content: url(../public/svgs/blank.svg);
transition-duration: 0.5s;
}
.menuiteminput:checked + #about-us-span:before {
left: 72px;
content: url(../public/svgs/blank.svg);
transition-duration: 0.5s;
}
.menuiteminput:checked + #contact-span:before {
left: 72px;
content: url(../public/svgs/blank.svg);
transition-duration: 0.5s;
}
.menuiteminput:checked + .navitem-slider {
padding-left: 13px;
}
.navitem-container {
height: 30px;
display: flex;
align-items: center;
margin: 30px 0;
}
.navitem-slider {
margin: 20px 0;
height: 30px;
background-color: var(--accent-color);
width: 100px;
display: flex;
align-items: center;
font-size: 10pt;
border-radius: 100px;
position: relative;
padding-left: 33px;
cursor: pointer;
transition-duration: 0.5s;
}
.navitem-slider:before {
width: 16.5px;
height: 16.5px;
border-radius: 100px;
background-color: white;
left: 3px;
position: absolute;
top: 3px;
padding: 4px;
transition-duration: 0.5s;
}
#services-span {
width: 100px;
}
#services-span:before {
content: url(../public/svgs/service.svg);
transition-duration: 0.5s;
}
#portfolio-span:before {
content: url(../public/svgs/portfolio.svg);
transition-duration: 0.5s;
}
#about-us-span:before {
content: url(../public/svgs/team.svg);
transition-duration: 0.5s;
}
#contact-span:before {
content: url(../public/svgs/contacts.svg);
transition-duration: 0.5s;
}
提前致谢:D
【问题讨论】:
标签: javascript html css reactjs next.js