教你一步步用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中this的使用详解
Nov 08 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
Mar 11 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 Javascript
基于javascript实现根据身份证号码识别性别和年龄
Jan 22 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
关于express与koa的使用对比详解
Jan 25 Javascript
详解Chart.js轻量级图表库的使用经验
May 22 Javascript
简单了解vue.js数组的常用操作
Jun 17 Javascript
jquery实现直播弹幕效果
Nov 28 jQuery
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
js setTimeout opener的用法示例详解
2013/10/23 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
python获取网页状态码示例
2014/03/30 Python
python中Genarator函数用法分析
2015/04/08 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
利用python在excel中画图的实现方法
2020/03/17 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
工作时间擅自离岗检讨书
2014/10/24 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
离婚协议书范文
2015/01/26 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
公司市场部岗位职责
2015/04/15 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
Python实现简单的猜单词
2021/06/15 Python
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers