用jQuery实现优酷首页轮播图

发布时间 - 2026-01-10 22:23:21    点击率:

大致介绍

看到了一个轮播图的思路,就想的自己动手实践一下,总体来说用jQuery实现起来简单多了

思路

思路其实非常简单,就是当点击图片下面的圆点或者图片两边的箭头时,让想要看到的图片走到它的位置,然后当前的图片和想要看到的图片按照一个方向运动就可以了

例如:我们点击第五个小圆点,让第五个图片跑到当前图片的后面,然后一起向左运动

当然了,如果你想要看前面的图片,让图片先跑到当前图片的左边,然后和当前图片一起向右运动

基本结构与样式

<div class="lunbo">
 <div class="picture">
  <ul>
  <li><img src="img/1.jpg"></li>
  <li><img src="img/2.jpg"></li>
  <li><img src="img/3.jpg"></li>
  <li><img src="img/4.jpg"></li>
  <li><img src="img/5.jpg"></li>
  </ul>
 </div>
 <ul class="btn">
  <li id="active"><div></div></li>
  <li><div></div></li>
  <li><div></div></li>
  <li><div></div></li>
  <li><div></div></li>
 </ul>
 <div id="left"><img src="img/left.png"></div>
 <div id="right"><img src="img/right.png"></div>
 </div>
*{
 margin: 0;
 padding: 0;
}
.lunbo{
 width: 100%;
 height: 410px;
 position: relative;
 text-align: center;

}
.picture{
 width: 1190px;
 height: 480px;
 position: absolute;
 top: 0;
 left: 88px;
 overflow: hidden;
}
.picture li{
 width: 1190px;
 height: 410px;
 margin: 0 auto;
 list-style-type: none;
 margin-top: 70px;
 position: absolute;
 overflow: hidden;
 top: ;
 left: ;
}
.picture img{
 cursor: pointer;
}
.btn{
 display: block;
 width: 150px;
 height: 30px;
 position: absolute;
 top: 460px;
 left: 130px;
}
.btn li{
 display: block;
 width: 10px;
 height: 10px;
 background-color:white;
 list-style-type: none;
 position: absolute;
 top: 0px;
 left: 0px;
 border-radius: 10px;
 cursor: pointer;
}
#active{
 background-color: #03A9F4;
}
.btn li:hover{
 background-color:#9e9e9e;
}
#left{
 position: absolute;
 top: 240px;
 left: 90px;
 cursor: pointer;
}
#right{
 position: absolute;
 top: 240px;
 left: 1220px;
 cursor: pointer;
}

然后我们用jQuery来设置初始图片的位置和小圆点的位置

function setCirPos(){
 // 设置圆点的位置
 $cir.each(function(){
  $(this).css({
  left:$(this).index()*25 + 500
  })
 });
 // 设置刚开始不显示的图片的位置
 $pic.slice(1).each(function(){
  $(this).css({
  left:$picW
  })
 })
 }

自动轮播

先来看看定义的全局变量

var $cir = $('.btn li');
 var $pic = $('.picture li');
 var $picW = $pic.width();
 var $oLeft = $('#left');
 var $oRight = $('#right');
 // 当前图片
 var nowPic = 0;
 // 防止用户连续的点击
 var canClick = true;
 // 定时器
 var timer = null;

设置nowPic是为了记录当前显示的图片,因为这个轮播图一共有三种触发图片切换的方法,所以这个变量是三个方法要共享的

设置canClick变量是为了防止用户在图片切换动画效果还未完成的时候在进行点击

// 设置定时器自动切换
 timer = setInterval(function(){
 auto();
 },2000);
 //自动切换 
 function auto(){
 var index = nowPic + 1;
 if(index < 0){
  index = 4;
 }else if(index > 4){
  index = 0;
 }
 $pic.eq(index).css('left',$picW);
 $pic.eq(nowPic).animate({left:-$picW}, 400);
 $pic.eq(index).animate({left:0}, 400);
 nowPic = index;
 // 设置当前图片的圆点的样式
 $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
 }

点击小圆点

图片切换的方法都是一样的但是要注意,当点击小圆点时要清楚图片自动切换的定时器,在图片切换完成后,在设置自动切换的定时器

function lunbo(){
 $cir.click(function(){
  clearInterval(timer);
  var index = $(this).index();
  if(index > nowPic){
  // 点击的值大于当前的值
  $pic.eq(index).css('left',$picW);
  $pic.eq(nowPic).animate({left:-$picW},400);
  }else if(index < nowPic){
  // 点击的值小于当前的值
  $pic.eq(index).css('left',-$picW);
  $pic.eq(nowPic).animate({left:$picW},400);
  }
  $pic.eq(index).animate({left:0},400,function(){
  timer = setInterval(function(){
   auto();
  },3000);
  });
  nowPic = index;
  // 设置当前图片的圆点的样式
  $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
 });
 }

点击箭头

当点击箭头时,我们为了防止用户多次连续的点击,所以设置了canClick这个全局变量,当点击了箭头时,要首先判断是否有为完成的动画即canClick是否为true,如果为true,就将canCilck设置为false,防止再次点击箭头,然后进行图片切换的动画,同样不要忘了清楚定时器,最后当切换图片的动画完成时,animate()方法的回调函数执行,将canClick设置为true

// 点击左箭头
 $oLeft.click(function(){
 if(canClick){
  clearInterval(timer);
  canClick = false;
  var index = nowPic - 1;
  if(index < 0){
  index = 4;
  }else if(index > 4){
  index = 0;
  }
  $pic.eq(index).css('left',-$picW);
  $pic.eq(nowPic).animate({left:$picW}, 400);
  $pic.eq(index).animate({left:0}, 400,function(){
  canClick = true;
  timer = setInterval(function(){
   auto();
  },3000);
  });
  nowPic = index;
  // 设置当前图片的圆点的样式
  $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
 }
 })
// 点击右箭头
 $oRight.click(function(){
 if(canClick){
  clearInterval(timer);
  canClick = false;
  var index = nowPic + 1;
  if(index < 0){
  index = 4;
  }else if(index > 4){
  index = 0;
  }
  $pic.eq(index).css('left',$picW);
  $pic.eq(nowPic).animate({left:-$picW}, 400);
  $pic.eq(index).animate({left:0}, 400,function(){
  canClick = true;
  timer = setInterval(function(){
   auto();
  },3000);
  });
  nowPic = index;
  // 设置当前图片的圆点的样式
  $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
 }
 })

总结

这个效果实现起来很简单,就是刚开始没有想到实现的思路。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# jQuery  # 轮播图  # jquery实现左右轮播图效果  # JQuery和html+css实现带小圆点和左右按钮的轮播图实例  # jquery版轮播图效果和extend扩展  # jQuery制作全屏宽度固定高度轮播图(实例讲解)  # jquery实现左右滑动式轮播图  # jQuery实现一个简单的轮播图  # jQuery按需加载轮播图(web前端性能优化)  # jquery实现轮播图效果  # jQuery无缝轮播图代码  # jquery 实现轮播图详解及实例代码  # 原生Javascript和jQuery做轮播图简单例子  # jQuery实现简洁的轮播图效果实例  # jquery写出PC端轮播图实例  # 圆点  # 小圆点  # 跑到  # 刚开始  # 设置为  # 第五个  # 是为了  # 全局变量  # 走到  # 你想  # 要注意  # 很简单  # 要看  # 三种  # 还未  # 没有想到  # 就想  # 就将  # 时要  # 先来 


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


相关推荐: iOS验证手机号的正则表达式  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  ,南京靠谱的征婚网站?  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何在IIS7中新建站点?详细步骤解析  Laravel中的Facade(门面)到底是什么原理  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何选择可靠的免备案建站服务器?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何用5美元大硬盘VPS安全高效搭建个人网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  php结合redis实现高并发下的抢购、秒杀功能的实例  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  JS实现鼠标移上去显示图片或微信二维码  Laravel怎么实现模型属性的自动加密  JS碰撞运动实现方法详解  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Laravel怎么使用artisan命令缓存配置和视图  Linux系统运维自动化项目教程_Ansible批量管理实战  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何快速搭建虚拟主机网站?新手必看指南  js代码实现下拉菜单【推荐】  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  在线制作视频网站免费,都有哪些好的动漫网站?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  网站制作价目表怎么做,珍爱网婚介费用多少?  JavaScript常见的五种数组去重的方式  网站图片在线制作软件,怎么在图片上做链接?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  EditPlus中的正则表达式 实战(4)  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  智能起名网站制作软件有哪些,制作logo的软件?  轻松掌握MySQL函数中的last_insert_id()  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  lovemo网页版地址 lovemo官网手机登录