基于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 相关文章推荐
Javascript 判断 object 的特定类转载
Feb 01 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
Apr 13 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 Javascript
js实现获取当前时间是本月第几周的方法
Aug 11 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
Sep 03 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
Oct 14 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
Nov 03 Javascript
node.js中实现kindEditor图片上传功能的方法教程
Apr 26 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
Vue页面跳转动画效果的实现方法
Sep 23 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 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
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
node实现分片下载的示例代码
2018/10/17 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
django数据模型(Model)的字段类型解析
2019/12/25 Python
python ubplot使用方法解析
2020/01/10 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
构建高效的python requests长连接池详解
2020/05/02 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
全球度假村:Club Med
2017/11/27 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
PHP笔试题
2012/02/22 面试题
铭立家具面试题
2012/12/06 面试题
岗位廉政承诺书
2014/03/27 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
作风建设整改方案
2014/10/27 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
优秀员工事迹材料
2014/12/20 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL