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

Bootstrap 5环境下通过JavaScript添加CSS淡出动画不生效问题

问题核心原因

Bootstrap 5 内置的 .opacity-100 工具类默认携带 !important 修饰符,优先级远高于 CSS 动画内部对 opacity 属性的修改,导致动画全程无法覆盖元素的透明度设置,看起来像是没有触发。

修复步骤

1. 删除冗余的opacity类

移除curtain元素上的.opacity-100类,元素默认透明度就是1,无需额外声明:

<div id="host" class="position-relative">
  <div id="content" class="position-absolute top-0 left-0 w-100"></div>
  <div id="curtain" class="position-relative top-0 left-0 h-100" style="background-color: orange; z-index:1000;">
        Loading...
  </div>
</div>

2. 补充动画结束状态配置

给.fade-out类添加animation-fill-mode: forwards属性,保证动画结束后元素保持最终的透明状态,不会回弹到初始不透明效果:

.fade-out {
    -webkit-animation-name: fade-out;
    -webkit-animation-duration: 1s;
    -webkit-animation-fill-mode: forwards;
    animation-name: fade-out;
    animation-duration: 1s;
    animation-fill-mode: forwards;
}

可选优化:动画结束后隐藏元素

如果需要动画结束后curtain不再占用页面位置,可以添加动画结束监听事件处理:

setTimeout(() => {
  var curtain = document.getElementById('curtain');
  curtain.classList.add('fade-out');
  // 动画结束后隐藏元素
  curtain.addEventListener('animationend', () => {
    curtain.style.display = 'none';
  });
}, 5000);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:36:02