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 短路法代码精简
Aug 20 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
JS实现让访问者自助选择网页文字颜色的方法
Feb 24 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
输入框点击时边框变色效果的实现方法
Dec 26 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
基于Vue2.X的路由和钩子函数详解
Feb 09 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
Apr 08 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
Nov 06 Javascript
vue实现可移动的悬浮按钮
Mar 04 Vue.js
Nest.js参数校验和自定义返回数据格式详解
Mar 29 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 和 MySQL 基础教程(四)
2006/10/09 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
php array的学习笔记
2012/05/16 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
浅析Python中的join()方法的使用
2015/05/19 Python
Python第三方库的安装方法总结
2016/06/06 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
公司门卫岗位职责
2014/03/15 职场文书
平安工地汇报材料
2014/08/19 职场文书
信仰观后感
2015/06/03 职场文书
财务人员入职担保书
2015/09/22 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript