jquery实现焦点轮播效果


Posted in Javascript onFebruary 23, 2017

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet" href="./css/lunbo.css" rel="external nofollow" >
</head>
<body>
 <div id="banner">
  <ul class="img-ul"></ul>
  <ol class="index-ol"></ol>
 <div class="slide">
  <span class="prev"><</span>
  <span class="next">></span>
 </div>
 </div>
<script src="./js/jquery-1.11.3.js"></script>
<script src="./js/lunbo.js"></script>
</body>
</html>

css代码

div {
 width: 670px;
 height: 240px;
 position: relative;
 overflow: hidden;
}
div > ul,
div ol {
 list-style: none;
 position: absolute;
 margin: 0;
 padding: 0;
}
div > ul.img-ul,
div ol.img-ul {
 width: 3350px;
 height: 240px;
 z-index: 100;
}
div > ul.img-ul > li,
div ol.img-ul > li {
 float: left;
 width: 670px;
 height: 240px;
}
div > ul.index-ol,
div ol.index-ol {
 width: 205px;
 bottom: 10px;
 left: 217px;
 z-index: 1000;
}
div > ul.index-ol > li,
div ol.index-ol > li {
 float: left;
 cursor: pointer;
 margin-left: 20px;
 background: #000;
 color: #fff;
 border-radius: 50%;
 height: 20px;
 width: 20px;
 text-align: center;
 line-height: 20px;
}
div > ul.index-ol > li.active,
div ol.index-ol > li.active {
 background: red;
}
div > div.slide {
 z-index: 500;
 position: absolute;
 width: 670px;
 height: 240px;
 left: 0;
 top: 0;
}
div > div.slide > span {
 cursor: pointer;
 position: absolute;
 top: 100px;
 width: 30px;
 height: 60px;
 line-height: 60px;
 text-align: center;
 font-size: 20px;
 color: #fff;
 background: rgba(0, 0, 0, 0.2);
}
div > div.slide > span:nth-child(1) {
 left: 0;
}
div > div.slide > span:nth-child(2) {
 right: 0;
}

JavaScript代码

var arr=[
 {"img":"./images/banner_01.jpg"},
 {"img":"./images/banner_02.jpg"},
 {"img":"./images/banner_03.jpg"},
 {"img":"./images/banner_04.jpg"},
 {"img":"./images/banner_05.jpg"},
 ];
var lunbo={
 can:0, //判断
 ul_li:"",//图片列表
 ol_li:"",//数字列表
 width:"",//一个li的宽度
 interval:"",//定时器
 init:function(){
 console.log(this);
 this.view();
 this.view_index();
 $("ol.index-ol").children("li:eq(0)").addClass("active");
 this.width=$("ul.img-ul>li").width(); //670
 this.slide(); //这是左右箭头
 this.animation_index();//这是下标
 this.play(); //这是自动轮播
 this.mouse(); //这是鼠标滑入/滑出
 },
 mouse:function(){
 var _this=this;
 $("#banner").on({
  mouseenter:function(){
  _this.stop()
  },
  mouseleave:function(){
  _this.play();
  }
 })
 },
 play:function(){
 this.interval=setInterval(function(){
  var active_index= parseInt($("ol.index-ol>li.active").attr("data-index"));//得到当前激活向下标
  $("ol.index-ol>li").removeClass("active");
  $(this).addClass("active");
  this.animation(1);
  (active_index==4)&&(active_index=-1);
  $("ol.index-ol>li:eq("+(active_index+1)+")").addClass("active")
 }.bind(this),3000);
 },
 stop:function(){
 clearInterval(this.interval)
 this.interval=null;
 },
 animation_index:function(){//更新下标
 var _this=this;
 $("ol.index-ol>li").mouseenter(function(){//点击下标
  var active_index= $("ol.index-ol>li.active").attr("data-index");//得到当前激活向下标
  var index=$(this).attr("data-index");//得到当前下标;
  if(active_index==index){return;};
  $("ol.index-ol>li").removeClass("active");
  $(this).addClass("active");
  var end=index-active_index;
  _this.animation(-end)
 })
 },
 slide:function(){//点击左右箭头
 var _this=this;
 $("div.slide>span").click(function(){
  if(_this.can){return;};
  var active_index= parseInt($("ol.index-ol>li.active").attr("data-index"));//得到当前激活向下标
  $("ol.index-ol>li").removeClass("active");
  if(this.className=="prev"){
  _this.animation(1);
  (active_index==1)&&(active_index=5);
  $("ol.index-ol>li:eq("+(active_index-1)+")").addClass("active")
  }else{
  _this.animation(-1);
  (active_index==4)&&(active_index=-1);
  $("ol.index-ol>li:eq("+(active_index+1)+")").addClass("active")
  }
 })
 },
 view:function(){//更新图片
 for(var i=0;i<arr.length;i++){
  this.ul_li+="<li data-index="+i+"><img src="+arr[i].img+"></li>"
 }
 $("ul.img-ul").html(this.ul_li);
 this.ul_li="";
 },
 view_index:function(){//更新数字
 for(var i=0;i<arr.length;i++){
  this.ol_li+="<li data-index="+i+">"+(i+1)+"</li>"
 }
 $("ol.index-ol").html(this.ol_li);
 },
 animation:function(n){//做动画
 this.can=1;
 if(n<0){
  arr=arr.splice(arr.length+n,-n).concat(arr);
  this.view();
  $("ul.img-ul").css({"left":n*this.width+"px"});
  $("ul.img-ul").animate({"left":"0px"},1000,function(){
  this.can=0;
  }.bind(this));
 }else{
  $("ul.img-ul").animate({"left":-n*this.width+"px"},1000,function(){
  arr=arr.concat(arr.splice(0,n));
  this.view();
  $("ul.img-ul").css({"left":0+"px"});
  this.can=0;
  }.bind(this));
 }
 }
};
lunbo.init();

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

Javascript 相关文章推荐
关于jQuery中.attr()和.prop()的问题探讨
Sep 06 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
javascript HTML5 canvas实现打砖块游戏
Jun 18 Javascript
AngularJs Javascript MVC 框架
Jun 20 Javascript
AngularJS入门教程之Cookies读写操作示例
Nov 02 Javascript
详解js界面跳转与值传递
Nov 22 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
浅谈Angular的$q, defer, promise
Dec 20 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 Javascript
prettier自动格式化去换行的实现代码
Aug 25 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 Javascript
SVG描边动画
Feb 23 #Javascript
Angular JS 生成动态二维码的方法
Feb 23 #Javascript
js实现楼层导航功能
Feb 23 #Javascript
jQuery点击头像上传并预览图片
Feb 23 #Javascript
jQuery事件与动画基础详解
Feb 23 #Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 #Javascript
解析Vue2.0双向绑定实现原理
Feb 23 #Javascript
You might like
php笔记之:AOP的应用
2013/04/24 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
React如何避免重渲染
2018/04/10 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python相似模块用例
2016/03/04 Python
用python制作游戏外挂
2018/01/04 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
python字符串Intern机制详解
2019/07/01 Python
Python如何调用JS文件中的函数
2019/08/16 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
python反扒机制的5种解决方法
2021/02/06 Python
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
学生宿舍管理制度
2014/01/30 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
白血病募捐倡议书
2014/05/14 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
python实现双链表
2022/05/25 Python
Python如何加载模型并查看网络
2022/07/15 Python