JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)


Posted in Javascript onJune 19, 2017

1、本文使用js+jQuery实现轮播图,需要引用jquery包,另种实现分别是animate实现自适应的轮播,以及transform平滑轮播(在注释代码中)。

2、代码中的图片大家自己更换就可以了,样式和逻辑均写在js里。

3、html标签代码,js代码

<div class="slider">
  //轮播箭头
 <p class="lastpic"><img src="../images/prev.png"></p>
 <p class="nextpic"><img src="../images/next.png"></p>
 //轮播图片
 <ul id="slides" class="slides clearfix">
 <li><img class="responsive" src="../images/wrap-page.jpg" alt="暂无图片"></li>
 <li><img class="responsive" src="../images/wrap-page.jpg" alt="暂无图片"></li>
 <li><img class="responsive" src="../images/wrap-page.jpg" alt="暂无图片"></li>
 <li><img class="responsive" src="../images/wrap-page.jpg" alt="暂无图片"></li>
 </ul>
</div>
<script type="text/javascript">
  $(document).ready(function() {
  var len = $(".slider li").length-1;
  //给slider设置样式
  $(".slider").css({
   "width":"100%",
   "height": "inherit",
   "overflow": "hidden",
   "display":"inline-block"
  });
  
  //给ul设置宽度
  $(".slides").css({
   "position": "relative",
   "width":((len+1)*100).toString()+"%",
   "margin":"0",
   "padding":"0"});
  //给li设置百分比宽度
  $(".slides li").css({
   "width":(100/(len+1)).toString()+"%",
   "float":"left"
  });
  //给图片设置宽度
  $(".responsive").css({
   "width":"100%",
   "height":"inherit"
  });
  //控制点样式
  $(".slider p").css({
   "position": "absolute",
   "z-index":"999",
   "cursor": "pointer"
  });
  $(".slider .lastpic").css({
   "left":"0",
   "margin-top":"7%"
  });
  $(".slider .nextpic").css({
   "right":"0",
   "margin-top":"7%"
  });
  //animate移动
  var i = 0;
  $(".nextpic").click(function(){
   moveNext(i);
  });
  $(".lastpic").click(function(){
   moveLast(i);
  });
  //自动轮播
  var timer = setInterval(function(){
   moveNext(i);
  },5000);
  moveNext = function(n){
   if(n==len){
   i=-1;
   $(".slider .slides").animate({right: ""},800);
   }else{
   $(".slider .slides").animate({right:((n+1)*100).toString()+"%"}, 800);
   }
   i++;
  }
  moveLast = function(n){
   if(n==0){
   i=len+1;
   $(".slider .slides").animate({right:(len*100).toString()+"%"}, 800);
   }else{
   $(".slider .slides").animate({right:((n-1)*100).toString()+"%"}, 800);
   }
   i--;
  }
  //手机触摸效果
  var startX,endX,moveX;
  function touchStart(event){
   var touch = event.touches[0];
   startX = touch.pageX;
  }
  function touchMove(event){
   var touch = event.touches[0];
   endX = touch.pageX;
  }
  function touchEnd(event){
   moveX = startX - endX;
   if(moveX>50){
   moveNext(i);
   }else if(moveX<-50){
   moveLast(i);
   }
  }
  document.getElementById("slides").addEventListener("touchstart",touchStart,false);
  document.getElementById("slides").addEventListener("touchmove",touchMove,false);
  document.getElementById("slides").addEventListener("touchend",touchEnd,false);
  //transition移动固定宽度,无法自适应
  // $(".nextpic").click(function(){
  // if(i==len){
  //  i=-1;
  //  $(".slider .slides").css({
  //  'transition-timing-function':'linear',
  //  'transition-duration':'800ms',
  //  'transform':'translateX(0px)'
  //  })
  // }else{
  //  $(".slider .slides").css({
  //  'transition-timing-function':'linear',
  //  'transition-duration':'800ms',
  //  'transform':'translateX(-'+(i+1)*width+'px)'
  //  })
  // }
  // i++;
  // });
  // $(".lastpic").click(function(){
  // if(i==0){
  //  i=len+1;
  //  $(".slider .slides").css({
  //  'transition-timing-function':'linear',
  //  'transition-duration':'800ms',
  //  'transform':'translateX(-'+len*width+'px)'
  //  })
  // }else{
  //  $(".slider .slides").css({
  //  'transition-timing-function':'linear',
  //  'transition-duration':'800ms',
  //  'transform':'translateX(-'+(i-1)*width+'px)'
  //  })
  // }
  // i--;
  // })
  
  });
 </script>

以上所述是小编给大家介绍的JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript 类与静态类的实现(续)
Apr 02 Javascript
在JQuery dialog里的服务器控件 事件失效问题
Dec 08 Javascript
Javascript判断对象是否相等实现代码
Mar 18 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
jQuery实现列表的全选功能
Mar 18 Javascript
谈谈JavaScript异步函数发展历程
Sep 29 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
May 23 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
微信小程序 Record API详解及实例代码
Sep 30 Javascript
用Cordova打包Vue项目的方法步骤
Feb 02 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
JS仿淘宝搜索框用户输入事件的实现
Jun 19 #Javascript
jQuery实现下拉菜单的实例代码
Jun 19 #jQuery
微信小程序实现皮肤功能(夜间模式)
Jun 18 #Javascript
关于javascript作用域的常见面试题分享
Jun 18 #Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 #Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 #Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 #Javascript
You might like
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
php递归创建目录的方法
2015/02/02 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
php json转换相关知识(小结)
2018/12/21 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
使用python存储网页上的图片实例
2018/05/22 Python
python的range和linspace使用详解
2019/11/27 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
python实现一个猜拳游戏
2020/04/05 Python
详解Flask前后端分离项目案例
2020/07/24 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
电子商务自荐书范文
2014/01/04 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
实习单位证明范例
2014/11/17 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python