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

如何实现下拉菜单箭头点击旋转180度(优先CSS方案)

解决方案:下拉菜单箭头旋转效果

CSS实现方案(优先推荐)

问题出在HTML结构与CSS选择器不匹配:你写的.touch:checked ~ .angle无法生效,因为<input>在<label>之后,而CSS兄弟选择器~只能选中当前元素之后的兄弟节点,无法向前选择。调整HTML结构,把<input>移到<label>前面,就能用CSS直接控制箭头旋转。

修改后的HTML代码

<input type="checkbox" id="touch" class="touch">
<label for="touch" class="nav-label">
  <span id="services">Hizmetlerimiz</span>
  <i class="fa-solid fa-angle-down angle" style="color: #f282a6;"></i>
</label>
<ul class="slide">
  <li><a href="#">Lorem Ipsum</a></li>
  <li><a href="#">Lorem Ipsum</a></li>
  <li><a href="#">Lorem Ipsum</a></li>
  <li><a href="#">Lorem Ipsum</a></li>
</ul>

修改后的CSS代码

.slide {
  list-style-type: none;
  clear: both;
  width: 100%;
  height: 0px;
  overflow: hidden;
  transition: height .4s ease;
}

/* 复选框选中时,控制label内的箭头旋转 */
.touch:checked + .nav-label .angle {
  transform: rotate(180deg);
  transition: transform 200ms linear;
}

.slide li { padding: 30px; }

#touch {
  position: absolute;
  opacity: 0;
  height: 0px;
}    

#touch:checked ~ .slide { height: 300px; }  

JavaScript实现方案(无需调整HTML结构)

如果不想改动原有HTML结构,可以用JS监听复选框状态变化,动态切换箭头样式:

JavaScript代码

const touchInput = document.getElementById('touch');
const angleIcon = document.querySelector('.angle');

touchInput.addEventListener('change', function() {
  angleIcon.style.transform = this.checked ? 'rotate(180deg)' : 'rotate(0deg)';
});

保持你原有的HTML和CSS代码不变,添加这段JS即可实现箭头旋转效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:53:09