You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS checked状态不生效:HTML+CSS响应式导航栏汉堡菜单故障求助

问题原因

你遇到的问题核心是两个基础属性和选择器的匹配错误:

  • checkbox没有设置id="check",
  • CSS的兄弟选择器~只能匹配同一个父元素下、当前元素之后的同级节点,你的checkbox被额外的div包裹,和.nav-list不是同级元素,所以选中状态的样式规则永远不会生效

修复方案

1. 修改HTML nav部分结构

删掉包裹checkbox和汉堡按钮的多余div,给checkbox加上id属性,调整后代码如下:

<nav>
    <div class="logo-container">
        <img src="">
        <label class="logo-txt">King Toot's</label>
    </div>

    <!-- 新增id属性,移出外层div -->
    <input type="checkbox" name="check" id="check">
    <label for="check" class="hamburger-btn">
        <i class="fas fa-bars"></i>
    </label>
    
    <ul class="nav-list">
        <li><a href="#">Instrumentos</a></li>
        <li><a href="#">Marcas</a></li>
        <li><a href="#">Contacto</a></li>
    </ul>
</nav>

2. 可选优化(提升过渡效果)

你原来的代码里.nav-list li用了display:none会导致过渡动画失效,可以调整CSS实现淡入效果:

.nav-list li{
    /* 替换display:none为opacity控制显隐 */
    opacity: 0;
    line-height: 30px;
    margin: 50px 0;
    transition: all .5s;
}
#check:checked ~ .nav-list li{
    /* 替换display:block为opacity:1 */
    opacity: 1;
}

内容的提问来源于stack exchange,提问作者Serk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:24:05