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 相关文章推荐
为数据添加append,remove功能
Oct 03 Javascript
javascript+xml技术实现分页浏览
Jul 27 Javascript
7个Javascript地图脚本整理
Oct 20 Javascript
js中return false(阻止)的用法
Aug 14 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
Aug 05 Javascript
js获取及判断键盘按键的方法
Dec 01 Javascript
给before和after伪元素设置js效果的方法
Dec 04 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
Jan 29 jQuery
Vue学习之axios的使用方法实例分析
Jan 06 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 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根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
php加密解密字符串示例
2016/10/13 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
python中self原理实例分析
2015/04/30 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
Python退火算法在高次方程的应用
2018/07/26 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
python3爬虫怎样构建请求header
2018/12/23 Python
利用nohup来开启python文件的方法
2019/01/14 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
服务承诺书
2015/01/19 职场文书
干部外出学习心得体会
2016/01/18 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS