支持移动端原生js轮播图


Posted in Javascript onFebruary 16, 2017

直接上代码,自行复制粘贴,本人是新手,欢迎指正。

<!DOCTYPE HTML>
<html lang="en-US">
<head>
 <meta charset="UTF-8">
 <title>轮播图</title>
 <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
 <style type="text/css">
 .container{
  width: 500px;
  height: 400px;
  overflow: hidden;
  margin: 50px auto;
  position: relative;
 }
 .list{
  width: 2500px;
  height: 400px;
  position: absolute;
  left: 0px;
 }
 .list img{
  float: left;
  height: 400px;
  width: 500px;
 }
 .buttons{
  position: absolute;
  width: 75px;
  height: 20px;
  bottom: 10px;
  left: 50%;
  margin-left: -38px;
  z-index: 2;
 }
 .buttons span{
  width: 10px;
  height: 10px;
  margin-right: 5px;
  display: inline-block;
  border-radius: 5px;
  background-color: gray;
  opacity: 0.5;
  cursor: pointer;
 }
 .buttons .on{
  background-color: rgb(255,50,50);
  opacity: 0.8;
 }
 .arrow{
  position: absolute;
  background-color: gray;
  opacity: 0.5;
  height: 40px;
  width: 40px;
  color: #fff;
  text-decoration: none;
  line-height: 40px;
  font-size: 28px;
  font-weight: 800;
  text-align: center;
 }
 #prev{
  top:50%;
  left: 10px;
  margin-top:-20px;
 }
 #next{
  top:50%;
  right: 10px;
  margin-top:-20px;
 }
 </style>
</head>
<body>
 <div id="container" class="container">
 <div id="list" class="list">
  <img src="1.jpg">
  <img src="2.jpg">
  <img src="3.jpg">
  <img src="4.jpg">
  <img src="5.jpg">
 </div>
 <div id="buttons" class="buttons">
  <span index="0" class="on"></span><!--
  --><span index="1"></span><!--
  --><span index="2"></span><!--
  --><span index="3"></span><!--
  --><span index="4"></span>
 </div>
 <a href="javascript:;" rel="external nofollow" rel="external nofollow" id="prev" class="arrow"><</a>
 <a href="javascript:;" rel="external nofollow" rel="external nofollow" id="next" class="arrow">></a>
 </div>
 <script type="text/javascript">
 window.onload = function(){
  var container = document.getElementById('container');
  var list = document.getElementById('list');
  var buttons = document.getElementById('buttons');
  var buttonsItem = buttons.getElementsByTagName('span');
  var prev = document.getElementById('prev');
  var next = document.getElementById('next');
  var index = 0;
  var startX = 0;
  var endX = 0;


  container.addEventListener('touchend',function(event){
  if(event.changedTouches.length==1&&this.getAttribute('disabled')!='disabled'){
   var touch = event.changedTouches[0];
   endX = touch.pageX;
   var offset = endX-startX;
   console.log(offset);
   if(Math.abs(offset)>=50){
   if(offset<0){// 右滑
    nextMethod();
   }else{
    prevMethod();
   }
   }
  }
  });

  container.addEventListener('touchmove',function(){
  event.preventDefault();
  })

  container.addEventListener('touchstart',function(event){
  if(event.targetTouches.length==1&&this.getAttribute('disabled')!='disabled'){ 
   var touch = event.targetTouches[0];
   startX = touch.pageX;
  }
  })

  prev.addEventListener('click',function(){ 
  if (this.getAttribute('disabled')=='disabled') {
   return false;
  }
  prevMethod();
  });

  next.addEventListener('click',function(){
  if (this.getAttribute('disabled')=='disabled') {
   return false;
  }
  nextMethod();
  });

  for(var i=0;i<buttonsItem.length;i++){
  buttonsItem[i].onclick = function(){
   if (this.getAttribute('disabled')=='disabled') {
   return false;
   }
   var i = this.getAttribute('index');
   var length = Math.abs((i-index)*500);
   var direction = 'right';
   if (length<0) {
   direction = 'left';
   }
   index = i;
   document.getElementsByClassName('on')[0].setAttribute('class','');
   buttonsItem[index].className = 'on';
   animate(direction,1,length);
  }
  }

  function prevMethod(){
  if(index==0){
   index = 4;
   animate('right',40,2000);
  }else{
   index--;
   animate('left',1,500);
  }
  document.getElementsByClassName('on')[0].setAttribute('class','');
  // buttonsItem[index].setAttribute('class','on');
  buttonsItem[index].className = 'on';
  }

  function nextMethod(){
  if(index==4){
   index = 0;
   animate('left',40,2000);
  }else{
   index++;
   animate('right',1,500);
  }
  document.getElementsByClassName('on')[0].setAttribute('class','');
  buttonsItem[index].className = 'on';
  }

  function animate(direction,speed,length){
  var end = length/speed;
  var count = 0;
  for(var i=0;i<end;i++){
   setTimeout(function(){
    count++;
    var left = list.offsetLeft;
    if (direction=='right') {
    left -= speed;
    }else{
    left += speed;
    }
    list.style.left = left+'px';
    if(count<end-1){
    disabledButtons();
    }else{
    resumeButtons();
    }
   },speed*i);
   }
  }

  function disabledButtons(){
  for(var i=0;i<5;i++){
   buttonsItem[i].setAttribute('disabled','disabled');
  }
  prev.setAttribute('disabled','disabled');
  next.setAttribute('disabled','disabled');
  container.setAttribute('disabled','disabled');
  }

  function resumeButtons(){
  for(var i=0;i<5;i++){
   buttonsItem[i].removeAttribute('disabled');
  }
  prev.removeAttribute('disabled');
  next.removeAttribute('disabled');
  container.removeAttribute('disabled');
  }
 }
 </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
超清晰的document对象详解
Feb 27 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
Aug 17 Javascript
Javascript非构造函数的继承
Apr 27 Javascript
深入浅析knockout源码分析之订阅
Jul 12 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
jQuery实现页面滚动时智能浮动定位
Jan 08 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 Javascript
electron踩坑之remote of undefined的解决
Oct 06 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 #Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 #Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 #Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 #Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
Feb 15 #Javascript
bootstrap中添加额外的图标实例代码
Feb 15 #Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 #Javascript
You might like
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
php面向对象值单例模式
2016/05/03 PHP
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
Python pickle模块用法实例分析
2015/05/27 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
python编写简单端口扫描器
2019/09/04 Python
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
介绍一下write命令
2012/09/24 面试题
学雷锋演讲稿
2014/03/04 职场文书
调研汇报材料范文
2014/08/17 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
转让协议书范本
2014/09/13 职场文书
电子商务实训报告总结
2014/11/05 职场文书
领导干部失职检讨书
2015/05/05 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
vue项目支付功能代码详解
2022/02/18 Vue.js
MongoDB数据库之添删改查
2022/04/26 MongoDB