JS 特效 词条目录
前端Wiki/JS 特效/幻灯片特效/轮播基础

淡入淡出轮播

淡入淡出轮播:幻灯片不做横向位移,而是 opacity 交叉切换(所有幻灯片叠在一起,当前一张 opacity:1,其余 0)。适合全屏 Banner、焦点图,比滑动更有“幕布感”。

实现要点:容器 position:relative,所有 slide absolute 叠放;JS 切换时用 CSS transition(opacity .5s)自动产生淡入;z-index 或 pointer-events 防止底层挡住点击。

  • 所有幻灯片 absolute 堆叠,JS 只 toggle .active 类
  • 透明度交叉过渡(opacity .5s ease)产生“幕布感”
  • 别忘了 pointer-events:none 排除非显示层的点击
HTML
<style>
#fade { position: relative; max-width: 420px; height: 180px; margin: 20px auto;
        border-radius: 12px; overflow: hidden; }
#fade .slide { position: absolute; inset: 0; display: flex; align-items: center;
               justify-content: center; color: #fff; font-size: 22px; font-weight: 700;
               opacity: 0; transition: opacity .6s ease; pointer-events: none; }
#fade .slide.on { opacity: 1; pointer-events: auto; }
#fade .b1 { background: linear-gradient(135deg,#4a9eff,#39c5cf); }
#fade .b2 { background: linear-gradient(135deg,#a371f7,#f778ba); }
#fade .b3 { background: linear-gradient(135deg,#e78a3e,#e5534b); }
</style>
<div id="fade">
  <div class="slide b1 on">第一幕</div>
  <div class="slide b2">第二幕</div>
  <div class="slide b3">第三幕</div>
</div>
<script>
var slides = document.querySelectorAll('#fade .slide');
var i = 0, n = slides.length;
setInterval(function () {
  slides[i].classList.remove('on');
  i = (i + 1) % n;
  slides[i].classList.add('on');
}, 2000);
</script>
本节要点淡入轮播 = 幻灯片叠放 + opacity 交叉过渡;active 类切换唯一状态。
🔗 相关词条CSS 特效DOMCSS