用jQuery实现圆点图片轮播效果

发布时间 - 2026-01-11 00:14:51    点击率:

图片轮播效果 :

在页面的指定位置实现的图片自动的左右轮流切换展示,效果为无缝连接;

点击图片左下的标签(或中间的小圆点)切换到对应的图片;

点击图片的左右切换标签;

  

整体思路 :

--------------------------------------------------------------------------------

自动轮播: 将一个用于放置图片素材的与显示框同高度的大div放入显示框,将图片素材放入大的div中,通过jquery的animate()方法改变大div相对于显示框绝对位置的left值及变化时间实现图片的滑动;使用setInterval()方法设置定时器,达到自动播放效果;无缝连续播放的重点在于,第一张图片与最后一张图片要相同,这样播放完最后一张图片后将大div框的left设定为初始值,再将与图片索引相同的变量设定为1(第二张),这样就能达到无缝连续滑动效果;

--------------------------------------------------------------------------------

点击标签切换到对应图片: 对点击切换图片的li标签添加鼠标点击事件,若存在定时器的先清除,使用$(this).Index()获取当前点击图片的序号(索引),将大div的left值设置为当前图片位置的值,同时别忘了将当前li标签设置深颜色的明显效果,其他li标签设置初始效果;在事件中设置倒计时,当鼠标点击后一段时间不进行其他操作,则恢复自动播放的定时器;

--------------------------------------------------------------------------------

点击向左向右标签切换到上/下一张图片: 该标签使用< a >标签达到效果更好(防止连续点击时产生选中页面变蓝的现象),先获取点击时图片的编号,此时不能使用$(this).Index(),因为此时this指代的对象为左右切换标签,而不是图片对象,还记得上面那个与图片索引相同的变量吗?我们需要一开始就设定它为全局变量(我将它起名为rcd),它的值相当于是和图片,li标签一起绑定的,在还没有点击向左向右标签时,图片是在轮播的,rcd变量中存着当前图片的序号,因此,尽管用不了this,我们可以用rcd+1/-1找到向右滑/向左划的图片编号,有了编号,就可以知道大div需要运动到的位置,和设置左下方的标签显示状态了.当rcd-1==-1时,将div的位置设置为最后一张图片显示的位置,然后将rcd设置为倒数第二张图片对应的编号;当rcd+1比最后一张还多一时,将div的位置设置为第一张图片显示的位置,将rcd设置为第二张图片对应的编号即可.

--------------------------------------------------------------------------------

代码实现如下 :

<script src="jquery.min.js" type="text/javascript" charset="utf-8"></script>  //引入jquery (css代码未贴)
  <script type="text/javascript">
    $(function(){
        var rcd=0;       //代表图片和li标签编号的全局变量
//       滑动函数
        function slide(){   
          rcd++;
          if(rcd==4){    //右滑倒最后一张时,将图片设定为第一张的位置,即将滑动的图片设定为第二张(rcd=1)
            $('#sld').css({'left':'0'});
            rcd=1;
          };
          var dis = rcd*(-1210)+'px';    //这里的1210是每张图片的宽度,rcd和dis的关系就是编号和div left值的关系
          $('#sld').stop().animate({'left':dis},1000)  //设定left
          if (rcd==3) {    //当切换到最后一张时(一共4张图片),将左下方的标签样式也改成与第一张一样的
            $('#fix ul li').eq(0).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'})
          }else{
            $('#fix ul li').eq(rcd).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'})      //不是最后一张那么就正常执行
          }
        }
//       设定定时器,开始轮播
        var timer = setInterval(slide,2000);
        var st;    //声明倒计时函数变量名
//       绑定li鼠标点击事件
        $('#fix ul li').click(function(){
          clearInterval(timer);     //清除定时器(同下一行)
          clearTimeout(st);
          var rcd = $(this).index();   //获得点击的li的编号
          var dis =rcd*(-1210)+'px';   //获得该编号对应的div的left值
          $('#sld').stop().animate({'left':dis},500)  //开始运动
          $('#fix ul li').eq(rcd).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'})     //设置当前li样式,其他li变为初始值
          st = setTimeout(function(){   //设置定时器,若3秒内没有鼠标点击操作,就重新设置轮播定时器
            timer = setInterval(slide,2000);
          },3000)
        }); 
//       左图标点击事件
        $('#fix .lt').click(function(){
          clearInterval(timer);
          clearTimeout(st);
          rcd--;     //点击前的编号-1
          if(rcd==-1){  //如果rcd减后值为-1,那么将div的left设置为最后一张图显示的值,并将rcd设置为倒数第二张的编号
            $('#sld').css({'left':'-3630px'});
            rcd=2;
          };
          var dis = rcd*(-1210)+'px';
          $('#sld').stop().animate({'left':dis},1000)  //运动
          if (rcd==3) {     //与前面相同
            $('#fix ul li').eq(0).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'})
          }else{
            $('#fix ul li').eq(rcd).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'})
          }
          st = setTimeout(function(){
            timer = setInterval(slide,2000);
          },3000)
        })
//       右图标点击事件
        $('#fix .rt').click(function(){
          clearInterval(timer);
          clearTimeout(st);
          slide();     //右图标点击一次与滑动函数一致
          st = setTimeout(function(){
            timer = setInterval(slide,2000);
          },3000)
        })
//       给#fix div加鼠标移入事件
        $('#fix').mouseenter(function(){     
          $('#fix a').css({'display':'block'});  //鼠标移入时,向左向右图标显示
        })
//       给#fix div加鼠标移出事件
        $('#fix').mouseleave(function(){
          $('#fix a').css({'display':'none'});   //鼠标移出时,向左向右图标隐藏
        })
    })
  </script>
  </head>
  <body>
    <div id="fix">
      <div id="sld">
        <img src="轮播图/ph1.png"/>
        <img src="轮播图/ph2.jpg"/>
        <img src="轮播图/ph3.jpg"/>
        <img src="轮播图/ph1.png"/>
      </div>
      <ul>
        <li style="opacity: 0.6;">iPhone6</li>
        <li>Mate9</li>
        <li>vivo X9</li>
      </ul>
      <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" class="lt"><img src="轮播图/left.png"/></a> //阻止浏览器的默认跳转
      <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" class="rt"><img src="轮播图/right.png"/></a>
    </div>
  </body>

也可以在我的Github上克隆这个效果的完整代码: https://github.com/Getthrough/Image-Carousel

以上所述是小编给大家介绍的用jQuery实现圆点图片轮播效果,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


# jquery  # 图片轮播  # jQuery实现的淡入淡出图片轮播效果示例  # 使用JQuery实现图片轮播效果的实例(推荐)  # jQuery的图片轮播插件PgwSlideshow使用详解  # jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果  # jQuery插件实现图片轮播特效  # jQuery实现图片轮播效果代码(基于jquery.pack.js插件)  # 12款经典的白富美型—jquery图片轮播插件—前端开发必备  # 原生js和jquery实现图片轮播特效  # 基于JQuery的实现图片轮播效果(焦点图)  # 原生js和jquery实现图片轮播淡入淡出效果  # jQuery实现的3D版图片轮播示例【滑动轮播】  # 设置为  # 鼠标  # 第一张  # 切换到  # 鼠标点击  # 绑定  # 小编  # 倒计时  # 自动播放  # 移出  # 全局变量  # 是在  # 就能  # 可以用  # 给大家  # 并将  # 跳转  # 后将  # 将它  # 别忘了 


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


相关推荐: 移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  手机软键盘弹出时影响布局的解决方法  EditPlus中的正则表达式 实战(2)  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何做网站制作流程,*游戏网站怎么搭建?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何在IIS中新建站点并解决端口绑定冲突?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何在香港免费服务器上快速搭建网站?  深圳网站制作的公司有哪些,dido官方网站?  移动端脚本框架Hammer.js  Laravel storage目录权限问题_Laravel文件写入权限设置  如何在阿里云虚拟服务器快速搭建网站?  ,南京靠谱的征婚网站?  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel怎么实现模型属性的自动加密  Python并发异常传播_错误处理解析【教程】  Laravel如何处理表单验证?(Requests代码示例)  如何快速使用云服务器搭建个人网站?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  高防服务器租用如何选择配置与防御等级?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何快速查询网站的真实建站时间?  智能起名网站制作软件有哪些,制作logo的软件?  浅述节点的创建及常见功能的实现  浅谈Javascript中的Label语句  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel如何配置Horizon来管理队列?(安装和使用)  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  如何快速生成橙子建站落地页链接?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  详解jQuery中的事件  android nfc常用标签读取总结  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何快速建站并高效导出源代码?  进行网站优化必须要坚持的四大原则  Laravel如何使用Service Container和依赖注入?(代码示例)  教你用AI润色文章,让你的文字表达更专业  香港服务器租用费用高吗?如何避免常见误区?  网站制作价目表怎么做,珍爱网婚介费用多少?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?