教你一步步用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 相关文章推荐
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
Jul 29 Javascript
2014年最火的Node.JS后端框架推荐
Oct 27 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
微信小程序利用co处理异步流程的方法教程
May 20 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
浅谈angular4生命周期钩子
Sep 05 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 Javascript
JS实现DOM删除节点操作示例
Apr 04 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
使用JavaScript破解web
Sep 28 Javascript
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
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创建多级目录代码
2008/06/05 PHP
php使用百度天气接口示例
2014/04/22 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
python 表格打印代码实例解析
2019/10/12 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
销售主管岗位职责范本
2014/02/14 职场文书
工作会议方案
2014/05/21 职场文书
工程项目经理任命书
2014/06/05 职场文书
校园绿化美化方案
2014/06/08 职场文书
禁烟标语大全
2014/06/11 职场文书
语文课外活动总结
2014/08/27 职场文书
财务管理专业自荐书
2014/09/02 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
检讨书怎么写
2015/01/23 职场文书
《鲸》教学反思
2016/02/23 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers