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使用activex控件的代码
Jan 27 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
常用的JS验证和函数汇总
Dec 23 Javascript
浅谈javascript的分号的使用
May 12 Javascript
js显示当前日期时间和星期几
Oct 22 Javascript
js判断当前页面用什么浏览器打开的方法
Jan 06 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
Angular父组件调用子组件的方法
Apr 02 Javascript
微信小程序常用简易小函数总结
Feb 01 Javascript
通过vue手动封装on、emit、off的代码详解
May 29 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 Javascript
vue backtop组件的实现完整代码
Apr 07 Vue.js
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面向对象——访问修饰符介绍
2012/11/08 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
jquery一般方法介绍 入门参考
2011/06/21 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
javascript如何创建对象
2016/08/29 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
React中的render何时执行过程
2018/04/13 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Tornado高并发处理方法实例代码
2018/01/15 Python
Python学生信息管理系统修改版
2018/03/13 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
少年闰土教学反思
2014/02/22 职场文书
公司接待方案
2014/03/08 职场文书
关于安全的广播稿
2014/10/23 职场文书
2014年施工员工作总结
2014/11/18 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js