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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
Dec 31 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
javascript+html5实现绘制圆环的方法
Jul 28 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
简单封装js的dom查询实例代码
Jul 08 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
React服务端渲染原理解析与实践
Mar 04 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
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
layui实现三级联动效果
2019/07/26 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python的turtle库使用详解
2019/05/10 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
校本教研工作制度
2014/01/22 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
公益广告标语
2014/06/19 职场文书
世界气象日活动总结
2015/02/27 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书