使用JS实现图片轮播的实例(前后首尾相接)

发布时间 - 2026-01-11 03:20:59    点击率:

最近各种跑面试,终于还是被问到这个,一脑子浆糊,当时没想出来首尾相接怎么搞,回来之后研究了一波,终于搞出来了,不多说,直接看代码

代码参考了一位已经写好了图片轮播功能的(再次表示感谢),但是没有首尾相接的功能,本人在此基础上增加了首尾相接功能。

效果如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>图片轮播</title>
 <style type="text/css">
 body,div,ul,li,a,img{margin: 0;padding: 0;}
 ul,li{list-style: none;}
 a{text-decoration: none;}
 #wrapper{
  position: relative;
  margin: 30px auto; /* 上下边距30px,水平居中 */
  width: 400px;
  height: 200px;
 }
 #banner{
  position:relative;
  width: 400px;
  height: 200px;
  overflow: hidden;
 }
 .imgList{
  position:relative;
  width:2000px;
  height:200px;
  z-index: 10;
  overflow: hidden;
 }
 .imgList li{float:left;display: inline;}
 #prev,
 #next{
  position: absolute;
  top:80px;
  z-index: 20;
  cursor: pointer;
  opacity: 0.2;
  filter:alpha(opacity=20);
 }
 #prev{left: 10px;}
 #next{right: 10px;}
 #prev:hover,
 #next:hover{opacity: 0.5;filter:alpha(opacity=50);}

</style>
</head>
<body>
 <div id="wrapper"><!-- 最外层部分 -->
 <div id="banner"><!-- 轮播部分 -->
  <ul class="imgList"><!-- 图片部分 -->
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/1.jpg" width="400px" height="200px" alt="1"></a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/2.jpg" width="400px" height="200px" alt="2"></a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/3.jpg" width="400px" height="200px" alt="3"></a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/4.jpg" width="400px" height="200px" alt="4"></a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/5.jpg" width="400px" height="200px" alt="5"></a></li>
 </ul>
 <img src="./img/prev.png" width="40px" height="40px" id="prev">
 <img src="./img/next.png" width="40px" height="40px" id="next">
</div>
</div>
<script type="text/javascript" src="./js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
var curIndex = 0, //当前index
 imgLen = $(".imgList li").length; //图片总数
$(".imgList").css("width", (imgLen+1)*400+"px");
// 定时器自动变换3秒每次
var autoChange = setInterval(function(){
 if(curIndex < imgLen-1){
  curIndex ++;
 }else{
  curIndex = 0;
 }
 //调用变换处理函数
 changeTo(curIndex);
},3000);

//左箭头滑入滑出事件处理
$("#prev").hover(function(){
 //滑入清除定时器
 clearInterval(autoChange);
}, function(){
 //滑出则重置定时器
 autoChangeAgain();
});

//左箭头点击处理
$("#prev").click(function(){
 //根据curIndex进行上一个图片处理
 // curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
 if (curIndex == 0) {
  var element = document.createElement("li");
  element.innerHTML = $(".imgList li")[imgLen - 1].innerHTML;
  // $(".imgList li")[imgLen - 1].remove();
  $(".imgList").prepend(element);
  $(".imgList").css("left", -1*400+"px");
  changeTo(curIndex);
  curIndex = -1;
 } else if (curIndex == -1) {
  $(".imgList").css("left", -(imgLen-1)*400+"px");
  curIndex = imgLen-2;
  $(".imgList li")[0].remove();
  changeTo(curIndex);
 } else {
  --curIndex;
  changeTo(curIndex);
 }

});

//右箭头滑入滑出事件处理
$("#next").hover(function(){
 //滑入清除定时器
 clearInterval(autoChange);
}, function(){
 //滑出则重置定时器
 autoChangeAgain();
});
//右箭头点击处理
$("#next").click(function(){
 // curIndex = (curIndex < imgLen - 1) ? (++curIndex) : 0;
 console.log(imgLen);
 if (curIndex == imgLen-1) {
  var element = document.createElement("li");
  element.innerHTML = $(".imgList li")[0].innerHTML;
  // $(".imgList li")[0].remove();
  $(".imgList").append(element);
  ++curIndex;
 } else if (curIndex == imgLen) {
  curIndex = 0;
  $(".imgList").css("left", "0px");
  $(".imgList li")[imgLen].remove();
  curIndex++;
 } else {
  ++curIndex;
 }
 changeTo(curIndex);
});

//清除定时器时候的重置定时器--封装
function autoChangeAgain(){
 autoChange = setInterval(function(){
  if(curIndex < imgLen-1){
   curIndex ++;
  }else{
   curIndex = 0;
  }
 //调用变换处理函数
 changeTo(curIndex);
 },3000);
}


function changeTo(num){
 var goLeft = num * 400;
 $(".imgList").animate({left: "-" + goLeft + "px"},500);
}
</script>
</body>
</html>

以上这篇使用JS实现图片轮播的实例(前后首尾相接)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js轮播图首尾相接  # 原生js和jquery实现图片轮播特效  # 原生JS实现图片轮播效果  # 原生js实现图片轮播特效  # 详解js图片轮播效果实现原理  # 原生js实现轮播图的示例代码  # 滑出  # 滑入  # 给大家  # 来了  # 好了  # 希望能  # 这篇  # 多说  # 问到  # 一波  # 没想  # 小编  # 在此基础上  # 表示感谢  # 大家多多  # 怎么搞  # 增加了  # 图片处理  # 最外层  # Content 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在局域网内绑定自建网站域名?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在万网利用已有域名快速建站?  Android自定义控件实现温度旋转按钮效果  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  怎么用AI帮你设计一套个性化的手机App图标?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  动图在线制作网站有哪些,滑动动图图集怎么做?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Thinkphp 中 distinct 的用法解析  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  如何确保FTP站点访问权限与数据传输安全?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  香港服务器租用费用高吗?如何避免常见误区?  如何在云主机上快速搭建多站点网站?  Laravel如何实现用户密码重置功能?(完整流程代码)  Python文件操作最佳实践_稳定性说明【指导】  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何在景安服务器上快速搭建个人网站?  微信小程序 五星评分(包括半颗星评分)实例代码  如何生成腾讯云建站专用兑换码?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  大连 网站制作,大连天途有线官网?  简单实现Android验证码  Laravel如何处理表单验证?(Requests代码示例)  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  EditPlus中的正则表达式 实战(4)  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  黑客如何利用漏洞与弱口令入侵网站服务器?  JavaScript如何实现音频处理_Web Audio API如何工作?  再谈Python中的字符串与字符编码(推荐)  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  详解jQuery中的事件  如何快速搭建支持数据库操作的智能建站平台?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  深圳网站制作平台,深圳市做网站好的公司有哪些?