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

如何为自动轮播图(Automatic Slider)添加CSS过渡(transition)效果

轮播过渡效果实现方案

现存问题

  • 直接修改<img>的src属性无法触发CSS过渡,过渡仅对元素自身可量化的属性(如opacity、transform等)的数值变化生效,替换图片资源不属于这类可过渡的变化
  • 事件绑定写法错误:onload(changeImg())会立即执行changeImg函数,而非页面加载完成后执行
  • setTimeout传参写法不规范,传递字符串可能引发作用域问题,推荐直接传入函数引用

淡入淡出效果实现

修改后代码

HTML

<section id="slider">
  <img name="slide" width="400" height="200" />
</section>

CSS

#slider {
  width: 100vw;
  height: 60vh;
  overflow: hidden;
}
#slider img {
  width: 100%;
  height: 100%;
  opacity: 1;
  transition: opacity 1s ease-out;
}
#slider img.fade {
  opacity: 0;
}

JS

let images = ["images/a.jpg", "images/b.jpg", "images/c.jpg", "images/d.jpg"];
let i = 0;
const sliderImg = document.querySelector("#slider img");

function changeImg() {
  // 先触发淡出
  sliderImg.classList.add('fade');
  // 等待淡出动画结束后替换图片,再触发淡入
  setTimeout(() => {
    sliderImg.src = images[i];
    sliderImg.classList.remove('fade');
    i = (i < images.length - 1) ? i + 1 : 0;
  }, 1000); // 时长和CSS的transition时长保持一致
}

window.onload = () => {
  changeImg();
  setInterval(changeImg, 3000); // 轮播间隔=动画时长+停留展示时长,可自行调整
}

向左滑动效果实现

修改后代码

HTML

<section id="slider">
  <div class="slider-track">
    <img src="images/a.jpg" width="400" height="200" />
    <img src="images/b.jpg" width="400" height="200" />
    <img src="images/c.jpg" width="400" height="200" />
    <img src="images/d.jpg" width="400" height="200" />
  </div>
</section>

CSS

#slider {
  width: 100vw;
  height: 60vh;
  overflow: hidden;
}
.slider-track {
  display: flex;
  width: 400vw; /* 数值为图片数量*100vw */
  height: 100%;
  transition: transform 1s ease-out;
}
.slider-track img {
  width: 100vw;
  height: 100%;
  object-fit: cover;
}

JS

const track = document.querySelector('.slider-track');
const imgCount = document.querySelectorAll('.slider-track img').length;
let i = 0;

function changeImg() {
  i = (i < imgCount - 1) ? i + 1 : 0;
  track.style.transform = `translateX(-${i * 100}vw)`;
}

window.onload = () => {
  setInterval(changeImg, 3000);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:45:03