支持移动端原生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 相关文章推荐
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
javascript实现校验文件上传控件实例
Apr 20 Javascript
JavaScript仿支付宝密码输入框
Dec 29 Javascript
Jquery基础之事件操作详解
Jun 14 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
详解Puppeteer 入门教程
May 09 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
5分钟快速掌握JS中var、let和const的异同
Sep 19 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
Apr 17 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
JQuery 入门实例1
2009/06/25 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python实现雨滴下落到地面效果
2018/06/21 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
明信片寄语大全
2014/04/08 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
企业读书活动总结
2014/06/30 职场文书
财务会计专业自荐书
2014/06/30 职场文书
授权委托书格式范文
2014/08/02 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers