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与WebMethod投票功能实现代码
Jan 19 Javascript
javascript复制对象使用说明
Jun 28 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
JavaScript中闭包的详解
Apr 01 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
Apr 17 Javascript
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
VSCode使用之Vue工程配置eslint
Apr 30 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
Javascript之datagrid查询详解
Sep 15 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的异常处理类Exception的使用及说明
2012/06/13 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
python处理数据,存进hive表的方法
2018/07/04 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
机械专业个人求职自荐信格式
2013/09/21 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
继承权公证书
2014/04/09 职场文书
关于观后感的作文
2015/06/18 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
python基础详解之if循环语句
2021/04/24 Python
java开发双人五子棋游戏
2022/05/06 Java/Android