jQuery实现的自定义轮播图功能详解


Posted in jQuery onDecember 28, 2018

本文实例讲述了jQuery实现的自定义轮播图功能。分享给大家供大家参考,具体如下:

jquery实现轮播图

web网页上的首页,经常会出现轮播图。

第三方的轮播图存在效果单一,扩展性低等问题。

自定义录播图特点:

1.功能全面
2.可维护性高
3.扩展性高
4.易于兼容其他前端框架

效果图:

jQuery实现的自定义轮播图功能详解

实现思路:

1.布局

通过叠罗汉方式将图片展示区、上一张下一张点击区,指示灯展示区层叠显示
主画布wrap层在最低层,其次是图片展示区,上一张下一张点击区覆盖图片展示区,
指示灯展示区覆盖图片展示区。

2.CSS样式

将wrap层相对布局,图片展示区、上一张下一张点击区、指示灯展示区层设置为绝对布局。
wrap层作为包涵体,对图片展示区、上一张下一张点击区、指示灯展示区层进行层叠布局。
通过display:flex设置盒子弹性布局对指示灯展示区层进行居中排列
通过display:block和dispaly:inline-block讲行级元素转换成块级元素

3.js

(1)web界面渲染后,开启图片从左向右切换的定时器
(2)鼠标移入轮播器后关闭定时器,鼠标移除轮播器后,开启定时器。
(3).点击上一张,关闭定时器,图片从右向左移动一张,鼠标移开上一张,开启定时器。
(4).点击下一张,关闭定时器,图片从坐向右移动一张,鼠标移开下一张,开启定时器。
(5).鼠标移入到指示灯,关闭定时器,图片切换到指示灯所指示的位置,鼠标移开指示灯,开启定时器。

布局图:

jQuery实现的自定义轮播图功能详解

实现代码:

shufflingfigure.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>轮播图</title>
  <meta name="keywords" content="轮播图,banner" >
  <meta name="description" content="自定义轮播图">
  <link type="text/css" rel="stylesheet" href="css/shufflingfigure.css" rel="external nofollow" >
  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  <script type="text/javascript" src="js/shufflingfigure.js"></script>
</head>
<body>
  <div id="wrap" >
    <!--图片区域-->
    <div class="pic">
      <img src="http://demo.3water.com/js/2018/html5-css3-3d-img-flash-codes/images/Guardians-of-the-Galaxy-Poster-High-Res.jpg">
      <img src="http://demo.3water.com/js/2018/html5-css3-3d-img-flash-codes/images/Blade-Runner-poster-art-Harrison-Ford.jpg">
      <img src="http://demo.3water.com/js/2018/html5-css3-3d-img-flash-codes/images/2017_alien_covenant_4k-5120x2880-1920x1080.jpg">
      <img src="http://demo.3water.com/js/2018/html5-css3-3d-img-flash-codes/images/robocop-1987-wallpaper-2.jpg">
      <img src="http://demo.3water.com/js/2018/html5-css3-3d-img-flash-codes/images/sJALsDXak4EehSg2F2y92rt5hPe.jpg">
    </div>
    <!--左右按钮-->
    <div class="btn">
      <span class="prev"><</span>
      <span class="next">></span>
    </div>
    <!--小圆点-->
    <div class="lib">
      <span class="on" ></span>
      <span ></span>
      <span ></span>
      <span ></span>
      <span ></span>
    </div>
  </div>
</body>
</html>

shufflingfigure.css:

*{
  margin: 0;
  padding: 0;
}
#wrap{
  position: relative;
  width:600px ;
  height: 260px;
  margin: 50px auto;
}
#wrap .pic{
  width: 600px;
  height: 260px;
  position: relative;
  cursor: pointer;
}
#wrap .pic img{
  position:absolute;
  width:600px ;
  height: 260px;
}
#wrap .btn span{
  position: absolute;
  top: 50%;
  display: block;
  width: 50px;
  height: 90px;
  margin-top: -45px;
  background: rgba(0,0,0,.5);
  font-size: 20px;
  text-align: center;
  line-height: 90px; /*设置垂直居中*/
  cursor: pointer;
}
#wrap .btn span.next{
  position: absolute;
  right: 0;
}
#wrap .lib{
  position: absolute;
  bottom: 10px;
  left: 50%;
  margin-left: -65px;
  display: flex;  /*弹性盒子模型*/
  flex-direction: row; /*主轴为行*/
  justify-content:space-between;/*主轴方向排列方式*/
  align-items: center; /*辅轴方向排列方式*/
  width:130px ;
  height: 30px;
  background: rgba(0,0,0,.5);
}
#wrap .lib span {
  display: block;
  width: 10px;
  height: 10px;
  background: #fff;
  margin: 5px;
  border-radius: 50%;  /*设置圆角设置圆形*/
  cursor: pointer;
}
#wrap .lib span.on{
  background: red;
}

shufflingfigure.js:

/**
 * Created by Administrator on 2017/4/6.
 */
window.onload=function () {
  /**定义*/
  /*点击 下一张按钮 被点击的时候 图片进行切换 小圆点切换*/
  var $pic=$(".pic"); /*获取图片点击区域*/
  var $next=$(".next");/*获取下一张的按钮*/
  var $prev=$(".prev");/*获取上一张的按钮*/
  var $img=$(".pic img");  /*获取pic下所有的img*/
  var $lib=$(".lib span"); /*获取所有的小圆点*/
  var index=0;  //定义当前图片下标
  var length=$img.length;  //图片个数
  //图片从左向右切换
  function changeImage() {
    index++;
    index=index%length;
    $img.eq(index).fadeIn(300).siblings().fadeOut(300);
    $lib.eq(index).addClass('on').siblings().removeClass('on');
  }
  //图片从右向左切换
  function changeImageRighttoLeft() {
    index--;
    index=index<0?length:index;
    $img.eq(index).fadeIn(300).siblings().fadeOut(300);
    $lib.eq(index).addClass('on').siblings().removeClass('on');
  }
  //开启图片从左向右切换定时器
  var intervalHandle = setInterval(changeImage,2000);
  /**逻辑*/
  //下一张点击时图片向右移动一张
  $next.click(function () {
    clearInterval(intervalHandle);
    changeImage();
  })
  //下一张移除焦点时开启定时器
  $next.hover(function () {
  },function () {
    clearInterval(intervalHandle);
    intervalHandle = setInterval(changeImage,2000);
  });
  //上一张点击时图片向左移动一张
  $prev.click(function () {
    clearInterval(intervalHandle);
    changeImageRighttoLeft();
  })
  //上一张移除焦点时开启定时器
  $prev.hover(function () {
  },function () {
    clearInterval(intervalHandle);
    intervalHandle = setInterval(changeImage,2000);
  });
  $lib.hover(function () {/*移入小圆点上*/
    //关闭图片切换定时器
    clearInterval(intervalHandle);
    index=$(this).index();
    $img.eq(index).fadeIn(300).siblings().fadeOut(300);
    $lib.eq(index).addClass('on').siblings().removeClass('on');
  },function () {
    intervalHandle = setInterval(changeImage,2000);
  });
  $pic.hover(function () {
    clearInterval(intervalHandle);
  },function () {
    intervalHandle = setInterval(changeImage,2000);
  });
  //图片点击事件
  $pic.click(function () {
      alert("index:"+index);
  });
}

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
解决IE7中使用jQuery动态操作name问题
Aug 28 jQuery
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
jQuery响应滚动条事件功能示例
Oct 14 jQuery
JQuery中queue方法用法示例
Jan 31 jQuery
JQuery animate动画应用示例
May 14 jQuery
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 jQuery
jQuery实现可以扩展的日历
Dec 01 jQuery
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
jQuery实现的简单日历组件定义与用法示例
Dec 24 #jQuery
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 #jQuery
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 #jQuery
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 #jQuery
jQuery实现的模仿雨滴下落动画效果
Dec 11 #jQuery
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 #jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 #jQuery
You might like
在PHP中操作Excel实例代码
2010/04/29 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
Smarty模板语法详解
2019/07/20 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
JS简单实现数组去重的方法示例
2017/03/27 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python获得图片base64编码示例
2014/01/16 Python
Python多线程编程(一):threading模块综述
2015/04/05 Python
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
基于python历史天气采集的分析
2019/02/14 Python
Python3 读取Word文件方式
2020/02/13 Python
python让函数不返回结果的方法
2020/06/22 Python
Python如何读写二进制数组数据
2020/08/01 Python
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
SQL中where和having的区别
2012/06/17 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
小学教师的自我评价范例
2013/10/31 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
服装发布会策划方案
2014/05/22 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers