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 相关文章推荐
一个刚完成的layout(拖动流畅,不受iframe影响)
Aug 17 Javascript
javascript eval函数深入认识
Feb 21 Javascript
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
jquery中文乱码的多种解决方法
Jun 21 Javascript
有关json_decode乱码及NULL的问题
Oct 13 Javascript
jQuery检查元素存在性(推荐)
Sep 17 Javascript
老生常谈javascript变量的命名规范和注释
Sep 29 Javascript
详解用Node.js实现Restful风格webservice
Sep 29 Javascript
详解基于vue-cli优化的webpack配置
Nov 06 Javascript
vue axios基于常见业务场景的二次封装的实现
Sep 21 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
js实现自动锁屏功能
Jun 02 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
php仿discuz分页效果代码
2008/10/02 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
修改发贴的编辑功能
2007/03/07 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
为Python程序添加图形化界面的教程
2015/04/29 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
司仪主持词两篇
2014/03/22 职场文书
质量负责人任命书
2014/06/06 职场文书
安全施工标语
2014/06/07 职场文书
关于幸福的感言
2015/08/03 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android