教你一步步用jQyery实现轮播器


Posted in Javascript onDecember 18, 2016

实现原理

如图,试想一下,若是将<ul>的width属性值设置的很宽,直到可以装下你所有的图片,而每一个图片又用<li>包着并且设置了左浮动。

那么当我们向左移动ul的时候并且移动的距离为<li>的宽度,第二个<li>不就被移动到了<div>的窗口,这样一来图片不就被一张一张显示出来了吗?

接下来我们在设置<div>的属性overflow:hidden,那么<div>窗口以外的图片不显示,只显示移动到当前窗口的图片,是不是又完美了一些,感觉快做好了是吧!

教你一步步用jQyery实现轮播器 

说了一些原理,好了,直接上代码,记得引入jquery。

这是div做的布局,做的时候记得加上边框,做后在删掉,这样便于测试

<div class="slideShow">
 <div class="nav-t">
  <ul>
   <li><a href="#" target="_blank"><img src="images/1.png" alt=""></a></li>
   <li><a href="#" target="_blank"><img src="images/2.png" alt=""></a></li>
   <li><a href="#" target="_blank"><img src="images/3.png" alt=""></a></li>
   <li><a href="#" target="_blank"><img src="images/4.png" alt=""></a></li>
   <li><a href="#" target="_blank"><img src="images/5.png" alt=""></a></li>
  </ul>
  <div class="nav-b">
   <span class="active">1</span>
   <span>2</span>
   <span>3</span>
   <span>4</span>
   <span>5</span>
  </div>
 </div>
 </div>
 <script type="text/javascript" src="jquery-min.js"></script>
 <script type="text/javascript" src="lunbo.js"></script>

接下来设置一下样式

<style>
 .slideShow{
  border:0px solid blue;
  width:600px;
  height:450px;
  margin:50px auto;
  position:relative;
 }
 .nav-t{
  border:0px solid red;
  width:580px;
  height:430px;
  margin:8px auto;
  position:relative;
  overflow:hidden;
 }
 .nav-t ul{
  border:0px solid green;
  list-style:none;
  width:3000px;
  height:430px;
  margin:0;
  padding:0;
  position:relative;
 }
 .nav-t li{
  height:427px;
  width:580px;
  float:left;
 }
 .nav-b{
  position:absolute;
  top:390px;
  left:220px;
  cursor:default;
 }
 .nav-b span{
  margin-right:5px;
  border:1px solid red;
  padding:0 6px;
  border-radius:12px;
  color:#fff;
  background:rgba(132,125,119,0.5);
  cursor:pointer;
 }
 .nav-b span.active{
  background:rgba(0,0,0,0.8);
 }
 </style>

用js实现点击轮播图片、自动轮播图片,鼠标移动上去停止轮播

$(function(){
 
 $(function(){
 var slide=$(".slideShow"),
  navt=slide.find(".nav-t"),
  ul=navt.find("ul"),
  navbs=slide.find(".nav-b span"),
  onwidth=ul.find("li").eq(0).width(), //获取ul下的li宽度
  timer=null,
  inow=0;
 navt.hover(function(){
   clearInterval(timer); //鼠标移上去,清除掉自动轮播功能,即定时轮播
  },autoPlay); 
 navbs.on("click",function(){ //点击轮播事件
  var me=$(this);
   inow=me.index();  //此处变量用的与自动轮播函数里的相同,为的是能在随便点击后,自动轮播时按照我们点击了的继续向后轮播,这叫动态实时
  ul.animate({left:-inow*onwidth},0.01); //ul向左移动从而使得下一个li显示到div的当前窗口
  navbs.removeClass("active");   //清除掉上一个点击按钮的样式
  me.addClass("active");     //为当前被点击的按钮添加第一个按钮样式
 });
 autoPlay();     
 function autoPlay(){     //自动轮播函数
 timer=setInterval(function(){   //开定时器
  inow++;
  if(inow==navbs.length){    //判断是否到了最后一张,若是到了,返回到第一张
   inow=0
   }
  navbs.eq(inow).trigger("click"); //根据定时的时间用span的索引自动调用click事件,trigger为jQuery的自动调用函数
  },3000);
 }

});



});

看一下效果图?好的

教你一步步用jQyery实现轮播器

教你一步步用jQyery实现轮播器

总结

好了,以上就是利用jQyery实现轮播器的全部内容了,怎么样,要不你也做一个?希望本文的内容对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JavaScript 原型继承
Dec 26 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
Dec 04 Javascript
浅析js中2个等号与3个等号的区别
Aug 06 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
Jun 17 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
Mar 11 Javascript
jQuery获取同级元素的简单代码
Jul 09 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
Jul 24 Javascript
vue数据控制视图源码解析
Mar 28 Javascript
JS深入学习之数组对象排序操作示例
May 01 Javascript
JS面试题中深拷贝的实现讲解
May 07 Javascript
video.js添加自定义组件的方法
Dec 09 Javascript
Angular.js实现注册系统的实例详解
Dec 18 #Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
Dec 18 #Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 #Javascript
纯js实现悬浮按钮组件
Dec 17 #Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
Dec 17 #Javascript
Bootstrap CSS组件之按钮下拉菜单
Dec 17 #Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 #Javascript
You might like
php判断正常访问和外部访问的示例
2014/02/10 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
javascript优先加载笔记代码
2008/09/30 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
简单上手Python中装饰器的使用
2015/07/12 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python各层级目录下import方法代码实例
2020/01/20 Python
python可视化text()函数使用详解
2020/02/11 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
自荐信如何“自荐”
2013/10/24 职场文书
法制教育演讲稿
2014/09/10 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
事业单位考察材料范文
2014/12/25 职场文书
承诺函范文
2015/01/21 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题