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

求助:无JS实现checkbox:checked控制dropup-content显示失效问题

问题根源

你写的SCSS选择器逻辑有误——.dropup-content是<label>的同级元素,并非<span>的子元素,所以嵌套在input:checked + span里的.dropup-content根本选不到目标元素,自然不会生效。

修正方案

要选中<label>的同级.dropup-content,可以用CSS的:has()伪类(当前移动端主流浏览器均支持),通过父元素的状态关联兄弟元素样式。

修改后的完整SCSS代码:

// 默认隐藏下拉内容(必须补充基础样式)
.dropup-content {
  visibility: collapse;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.2s, visibility 0.2s;
}

// 勾选checkbox时显示下拉内容
label:has(input:checked) ~ .dropup-content {
  visibility: visible;
  max-height: 250px;
}

// 保留你需要的文字变色效果
input:checked + span {
  color: orange;
}

兼容性备选方案(适配不支持:has()的旧浏览器)

如果需要兼容老旧移动端浏览器,可以调整HTML结构,把<input>移到<label>外面,用相邻兄弟选择器实现:

<input type="checkbox" id="sports" class="checkbox">  
<label for="sports">  
  <span class="span-label">Sports</span>  
</label>  
<div class="dropup-content">  
  <a href="">More...</a>  
  <a href="">Esports</a>  
  <a href="">Handball</a>  
  <a href="">Basketball</a>  
  <a href="">Football</a>  
</div>

对应的SCSS代码:

.dropup-content {
  visibility: collapse;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.2s, visibility 0.2s;
}

input:checked + label ~ .dropup-content {
  visibility: visible;
  max-height: 250px;
}

input:checked + label span {
  color: orange;
}

关键说明

  • 必须给.dropup-content添加overflow: hidden,否则max-height的过渡动画不会生效
  • 将visibility加入过渡属性,可避免显示/隐藏时的突兀感

内容的提问来源于stack exchange,提问作者lan-e

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:32:35