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

CSS Transition在手风琴按钮生效但内容平滑显隐失效怎么解决

问题原因

CSS transition 过渡效果不支持display属性,你当前用display: none和display: block切换内容区域显示状态,过渡属性无法捕获该状态变化,所以不会触发平滑动画。

修复方案

改用max-height、opacity和padding属性组合实现平滑过渡,无需修改JS逻辑,仅调整CSS代码即可:

修改后的CSS代码

.accordian {
  margin: 2rem 0;
}

.accordian_btn {
  width: 100%;
  background-color: #fff;
  color: #333;
  padding: 1rem;
  text-transform: capitalize;
  text-align: left;
  position: relative;
  border: 0.1rem solid #ccc;
  border-radius: 3rem;
  outline: none;
  cursor: pointer;
  font-size: 1.3rem;
  letter-spacing: 0.1rem;
  transition: all 0.15s;
}

.accordian_btn::after {
  content: "\25be";
  width: 1rem;
  font-size: 2rem;
  position: absolute;
  top: 0.5rem;
  right: 1rem;
  transition: transform 0.15s;
}

.accordian_content {
  max-height: 0;
  overflow: hidden;
  padding: 0 1rem;
  opacity: 0;
  transition: all 0.3s ease;
  font-size: 1.2rem;
}

.change.accordian_btn {
  background-color: #e0f3ff;
  border-radius: 3rem;
}

.change.accordian_btn::after {
  transform: rotate(-90deg);
}

.change.accordian_btn+.accordian_content {
  max-height: 1000px;
  opacity: 1;
  padding: 1rem;
  box-shadow: 0 0.1rem 0.3rem #ccc;
  border-radius: 1rem;
}

补充说明

  • max-height的取值只要大于你手风琴内容的最大实际高度即可,不需要设置过大的值,避免过渡速度和内容高度不匹配
  • 不需要淡入淡出效果可以删掉opacity相关配置
  • 给箭头的transform属性单独加了过渡,整体动画更连贯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:24:01