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 相关文章推荐
js wmp操作代码小结(音乐连播功能)
Nov 08 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
Apr 20 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
JS动态加载脚本并执行回调操作
Aug 24 Javascript
详解AngularJS中的表单验证(推荐)
Nov 17 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
Nov 25 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
Jan 11 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
详解处理Vue单页面应用SEO的另一种思路
Nov 09 Javascript
VSCode搭建React Native环境
May 07 Javascript
js删除指定位置超链接中含有百度与360的标题
Jan 06 Javascript
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
十天学会php(1)
2006/10/09 PHP
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Django 内置权限扩展案例详解
2019/03/04 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
硕士研究生自我鉴定范文
2013/12/27 职场文书
门诊手术室工作制度
2014/01/30 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL