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

如何将jQuery实现的淡入淡出轮播函数改写为原生JavaScript

原生JavaScript实现等价轮播功能

前置基础样式

你需要先补充以下CSS样式,替代jQuery内置的fade动画效果,性能更稳定:

/* 轮播容器基础样式,可根据实际业务调整宽高 */
.fadein {
  position: relative;
  width: 100%;
  height: 400px;
  overflow: hidden;
}
.fadein img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

等价功能实现代码

// 获取轮播容器和所有图片元素
const fadeContainer = document.querySelector('.fadein');
const allImgs = fadeContainer.querySelectorAll('img');

// 初始隐藏除第一张外的所有图片,和原jQuery :gt(0) hide逻辑完全对齐
allImgs.forEach((img, idx) => {
  if (idx > 0) img.style.opacity = '0';
});

// 定时轮播逻辑,间隔和原代码一致为240000毫秒(4分钟)
setInterval(() => {
  const currentFirstImg = fadeContainer.querySelector('img:first-child');
  const nextShowImg = currentFirstImg.nextElementSibling;

  // 当前第一张图片执行2000毫秒淡出,对应原fadeOut(2000)
  currentFirstImg.style.transition = 'opacity 2s ease';
  currentFirstImg.style.opacity = '0';

  // 下一张图片延迟1000毫秒后执行1000毫秒淡入,和原动画时序完全对齐
  setTimeout(() => {
    nextShowImg.style.transition = 'opacity 1s ease';
    nextShowImg.style.opacity = '1';
  }, 1000);

  // 淡出动画完成后把当前第一张图片移到容器末尾,对应原appendTo逻辑实现循环
  setTimeout(() => {
    fadeContainer.appendChild(currentFirstImg);
  }, 2000);
}, 240000);

逻辑对齐说明

  • 初始状态完全和原jQuery逻辑一致:仅展示容器内第一张图片,其余图片隐藏
  • 动画时序完全匹配:当前展示图2秒淡出,下一张图1秒淡入,两段动画有1秒重叠
  • 循环逻辑等价:动画完成后将已淡出的图片移动到容器末尾,实现无限轮播

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:36:04