基于JQuery实现图片轮播效果(焦点图)


Posted in Javascript onFebruary 02, 2016

自己写了一个纯jq形式的横向轮播焦点图,可点击小圆点或者左右按钮进行切换,属于定宽类型。改成自适应宽度的也不难,将css里面的bannerCon宽度改为百分比,再在js里面将ul和li的宽度跟随父级容器的宽度变化即可,需要用到$(window).resize。

兼容到IE6+以上浏览器,有轮播速度和切换间隔两个参数可以改。

效果图如下:

基于JQuery实现图片轮播效果(焦点图)

Html代码如下:

<html>
<head>
 <meta charset="utf-8">
 <title>banner图</title>
 <link href="css/style.css" rel="stylesheet"/>
 <script src="js/jquery-1.9.1.min.js"></script>
 <script src="js/common.js"></script>
</head>
<body>
 <div class="wrap">
 <div class="banner">
 <div class="bannerCon">
 <ul class="imgList">
  <li><a href="#"><img src="images/banner01.jpg" alt=""/></a></li>
  <li><a href="#"><img src="images/banner02.jpg" alt=""/></a></li>
  <li><a href="#"><img src="images/banner03.jpg" alt=""/></a></li>
 </ul>
 <ul class="btnList clearfix">
  <li class="cur"><span></span></li>
  <li><span></span></li>
  <li><span></span></li>
 </ul>
 <span class="pre-nex prev"><</span> 
 <span class="pre-nex next">></span> 
 </div>
 </div>
 </div>
</body>
</html>

Css样式如下:

@charset "utf-8";
/* 简单reset */
body, p, ul, ol, li {
 margin: 0;
 padding: 0;
}
ul, ol {
 list-style: none;
}
img { border:none; }
a,button{ outline: none; }
.clearfix:after {
 visibility: hidden;
 display: block;
 font-size: 0;
 content: " ";
 clear: both;
 height: 0;
} 
/* 具体样式 */
.banner {
 position: relative;
 height: 400px;
 overflow: hidden;
}
.banner .bannerCon {
 position: absolute;
 top: 0;
 left: 50%;
 width: 800px;
 height: 400px;
 margin-left: -400px;
 overflow: hidden;
}
.bannerCon .imgList {
 position: absolute;
 top: 0;
 left: 0;
 width: 99999px;
 height: 400px;
}
.bannerCon .imgList li {
 float: left;
 width: 800px;
 height: 400px;
}
.bannerCon .imgList li a {
 position: relative;
 display: block;
 height: 100%;
}
.bannerCon .imgList li img {
 width: 800px;
 height: 400px;
}
.bannerCon .pre-nex {
 display: none;
 position: absolute;
 top: 50%;
 width: 40px;
 height: 60px;
 margin-top: -40px;
 font: bold 40px/60px Simsun;
 color: #ccc;
 text-align: center;
 border:none;
 background: rgba(0,0,0,.30);
 filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr=#4c000000, endColorStr=#4c000000);
 cursor: pointer;
 z-index: 3;
}
.bannerCon .pre-nex.show { display: inline-block; }
.bannerCon .prev { left: 13%; }
.bannerCon .next { right: 13%; }
.bannerCon .btnList {
 position: absolute;
 left: 0;
 bottom: 20px;
 width: 100%;
 height: 12px;
 text-align:center;
 z-index: 2;
 _overflow: hidden;
}
.bannerCon .btnList li { display: inline; }
.bannerCon .btnList li span {
 display: inline-block;
 width: 12px;
 height: 12px;
 margin: 0 5px;
 border-radius: 6px;
 background-color:#14829e;
 cursor: pointer;
}
.bannerCon .btnList li.cur span { background-color: #f30; }

Js代码如下:

//加载在文本读取之后的js语句 开始 =============================================================
 function Scroll(obj,speed,interval){ //父级容器,轮播速度,切换间隔
 $("."+obj).each(function(){
  var $box = $(this),
  $imgUl = $box.children(".imgList"),
  $imgLi = $imgUl.children("li"),
  $btnUl = $box.children(".btnList"),
  $btnLi = $btnUl.children("li"),
  $btnPreNex = $box.children(".pre-nex"),
  $btnPre = $box.children(".prev"),
  $btnNex = $box.children(".next"),
  n = $imgLi.length,
  width = $imgLi.width(),
  left = parseFloat($imgUl.css("left")),
  k = 0,
  Player;
  $imgUl.css("width",n*width);
  function scroll(){  //轮播事件
  $imgUl.stop().animate({left:-width},speed,function(){
   k += 1;
   $imgUl.css("left",0);
   $imgUl.children("li:first").appendTo($(this));
   $btnLi.removeClass('cur');
   if(k >= n){
   k = 0;
   }
   $btnUl.children("li").eq(k).addClass('cur');  
  });
  }
  $btnLi.click(function(){  //小圆点点击事件
  var index = $btnLi.index(this); 
  $(this).addClass('cur').siblings("li").removeClass('cur');
  if(index >= k){
   var dif = index-k;
   left = -dif*width;
   $imgUl.stop().animate({left:left},speed,function(){
   $imgUl.css("left",0);
   $imgUl.children("li:lt("+dif+")").appendTo($imgUl); 
   });
  }
  else{
   var j = n-(k-index);
   $imgUl.css("left",(index-k)*width);
   $imgUl.children("li:lt("+j+")").appendTo($imgUl);
   $imgUl.stop().animate({left:0},speed); 
  }
  k = index;
  }); 
  $btnPreNex.click(function(){ //左右按钮点击事件
  var index = $btnLi.index(this); 
  if($(this).hasClass('next')){
   if(!$imgUl.is(":animated")){
   k += 1;
   $imgUl.animate({left:-width},speed,function(){
    $imgUl.css("left",0);
    $imgUl.children("li:first").appendTo($(this));
    if(k >= n){
    k = 0;
    }
    $btnUl.children("li").removeClass('cur').eq(k).addClass('cur');
   });
   }
  }
  else {
   if(!$imgUl.is(":animated")){
   k += -1;
   $imgUl.css("left",-width);
   $imgUl.children("li:last").prependTo($imgUl);
   $imgUl.stop().animate({left:0},speed);
   if(k < 0){
    k = n-1;
   }
   $btnUl.children("li").removeClass('cur').eq(k).addClass('cur');
   }
  }
  }); 
  $box.hover(   //鼠标移入、移出事件
  function(){
   clearInterval(Player);
   $btnPreNex.addClass('show');
  },
  function(){
   Player = setInterval(function(){scroll()},interval);
   $btnPreNex.removeClass('show');
  }
  );
  Player = setInterval(function(){scroll()},interval);
 });
 } 
 $(function () {    //读取轮播事件
 Scroll("bannerCon",600,4000);
 });

注意加载一下jq库,我用的是1.9.1的,其实1.7+的都没问题的。

更多精彩内容大家还可以参考《jQuery焦点图特效汇总》进行学习,希望大家喜欢。

更多关于轮播图效果的专题,请点击下方链接查看学习

以上就是本文的全部内容,希望能够帮助大家。

Javascript 相关文章推荐
jQuery 处理网页内容的实现代码
Feb 15 Javascript
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
Apr 25 Javascript
Js操作Select大全(取值、设置选中等等)
Oct 29 Javascript
用javascript删除当前行,添加行(示例代码)
Nov 25 Javascript
css与javascript跨浏览器兼容性总结
Sep 15 Javascript
readonly和disabled属性的区别
Jul 26 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
实例教学如何写vue插件
Nov 30 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
Vue.js中该如何自己维护路由跳转记录
May 19 Javascript
JavaScript随机数的组合问题案例分析
May 16 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
Feb 02 #Javascript
JavaScript实现的MD5算法完整实例
Feb 02 #Javascript
javascript禁止超链接跳转的方法
Feb 02 #Javascript
JS组件Bootstrap Table使用方法详解
Feb 02 #Javascript
Node.js实现JS文件合并小工具
Feb 02 #Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 #Javascript
JavaScript通过代码调用Flash显示的方法
Feb 02 #Javascript
You might like
PHP动态图像的创建
2006/10/09 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
详解JS函数重载
2014/12/04 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
浅谈python对象数据的读写权限
2016/09/12 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
tensorflow 模型权重导出实例
2020/01/24 Python
python梯度下降算法的实现
2020/02/24 Python
django 取消csrf限制的实例
2020/03/13 Python
报关简历自我评价怎么写
2013/09/19 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
食品销售计划书
2014/04/26 职场文书
入党积极分子评语
2014/05/04 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
公务员个人考察材料
2014/12/23 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
停课通知书
2015/04/24 职场文书
团日活动总结格式
2015/05/11 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB