支持移动端原生js轮播图

发布时间 - 2026-01-10 23:05:08    点击率:

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

<!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">&lt;</a>
 <a href="javascript:;" rel="external nofollow" rel="external nofollow" id="next" class="arrow">&gt;</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>

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


# js  # 轮播图  # js实现移动端轮播图滑动切换  # javascript实现移动端轮播图  # 原生js实现移动端Touch轮播图的方法步骤  # js实现移动端轮播图  # JS实现点击拉拽轮播图pc端移动端适配  # js原生实现移动端手指滑动轮播图效果的示例  # 利用纯js + transition动画实现移动端web轮播图详解  # js实现移动端轮播图效果  # JS仿京东移动端手指拨动切换轮播图效果  # 基于javascript实现移动端轮播图效果  # 人是  # 大家多多  # float  # buttons  # left  # img  # bottom  # auto  # hidden  # margin  # position  # absolute  # relative  # list  # index  # cursor  # pointer  # opacity  # rgb  # arrow 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python制作简易注册登录系统  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  如何正确下载安装西数主机建站助手?  JS中对数组元素进行增删改移的方法总结  Linux系统运维自动化项目教程_Ansible批量管理实战  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  iOS发送验证码倒计时应用  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  手机网站制作与建设方案,手机网站如何建设?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  音响网站制作视频教程,隆霸音响官方网站?  Laravel如何实现API版本控制_Laravel版本化API设计方案  IOS倒计时设置UIButton标题title的抖动问题  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  JavaScript Ajax实现异步通信  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  iOS中将个别页面强制横屏其他页面竖屏  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Laravel如何实现文件上传和存储?(本地与S3配置)  jQuery中的100个技巧汇总  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  魔方云NAT建站如何实现端口转发?  JavaScript如何实现音频处理_Web Audio API如何工作?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  网站建设整体流程解析,建站其实很容易!  UC浏览器如何设置启动页 UC浏览器启动页设置方法  php 三元运算符实例详细介绍  油猴 教程,油猴搜脚本为什么会网页无法显示?  深圳网站制作培训,深圳哪些招聘网站比较好?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何基于云服务器快速搭建个人网站?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  如何在Windows虚拟主机上快速搭建网站?  Laravel如何实现模型的全局作用域?(Global Scope示例)  Angular 表单中正确绑定输入值以确保提交与验证正常工作  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  大型企业网站制作流程,做网站需要注册公司吗?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?