教你一步步用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 相关文章推荐
jquery select选中的一个小问题
Oct 11 Javascript
ExtJS 下拉多选框lovcombo
May 19 Javascript
jQuery实现表单提交时判断的方法
Dec 13 Javascript
如何减少浏览器的reflow和repaint
Feb 26 Javascript
js父页面中使用子页面的方法
Jan 09 Javascript
微信小程序 教程之引用
Oct 18 Javascript
domReady的实现案例
Nov 23 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
Dec 08 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
ES6基础之展开语法(Spread syntax)
Feb 21 Javascript
Element el-button 按钮组件的使用详解
Feb 01 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
MySQL修改密码方法总结
2008/03/25 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
python变量不能以数字打头详解
2016/07/06 Python
Python解惑之整数比较详解
2017/04/24 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
使用python 3实现发送邮件功能
2018/06/15 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
保护环境标语
2014/06/09 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis