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 window对象属性整理
Oct 24 Javascript
JS OOP包机制,类创建的方法定义
Nov 02 Javascript
一个通过script自定义属性传递配置参数的方法
Sep 15 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 Javascript
React中嵌套组件与被嵌套组件的通信过程
Jul 11 Javascript
node实现简单的增删改查接口实例代码
Aug 22 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
Jul 20 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 Javascript
前端框架ECharts dataset对数据可视化的高级管理
Dec 24 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变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
关于jQuery中的end()使用方法
2011/07/10 Javascript
浅析js封装和作用域
2013/07/09 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
vue实现购物车列表
2020/06/30 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
在Python中使用HTML模版的教程
2015/04/29 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
python实现弹窗祝福效果
2019/04/07 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
收银出纳员岗位职责
2014/02/23 职场文书
人资专员岗位职责
2014/04/04 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
医德医风个人总结
2015/02/28 职场文书
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android