这个轮播代码不是我自己所写,是偶然游览一个简友的主页看到的,今天刚看了事件,决定来逐行分析一下这个代码。首先,移动端与电脑端不同的是移动端只能通过触摸和手势来发生行为,所以我们要用到js中的与触摸操作有关的新事件。其实我们轮播的原理和以前相同,都是通过改变元素的位置来控制图片的出现,但让我们不是很上手的,是那些用于跟踪触摸的属性。

下面,我简单介绍一下与触摸相关的知识
触摸事件
上面这几个事件都会冒泡,也都可以取消。
属性
每个touch对象包括下列属性
代码如下
<!DOCTYPE html>
<html>
<head>
<title>移动端轮播</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#box {
width: 980px;
overflow: hidden;
position: relative;
margin: 0 auto;
}
#box ul {
width: 4900px;
height: 100px;
position: relative;
transform: translateX(-980px);
}
#box ul li{
width: 980px;
height: 100px;
float: left;
list-style-type: none;
text-align: center;
color: #fff;
line-height: 100px;
font-size: 30px;
}
</style>
<script type="text/javascript">
window.onload = function() {
var box = document.getElementById('box');
var oUl = document.getElementsByTagName('ul')[0];
var aLi = oUl.children;//这样就可以把所有li标签获取到了
var iNow = 1;
var x = -iNow*aLi[0].offsetWidth;//li标签的位置
var bReady = true;
oUl.addEventListener('touchstart',function(ev){
//当手指触摸屏幕的时候触发事件,让li的位置随手指滑动而改变
if(bReady == false){return;}
bReady = false;
var downX = ev.targetTouches[0].pageX; //记录触摸位置
var disX = downX - x;//下一个li要移动到的位置
function fnMove(ev) {
x = downX-disX;
oUl.style.transform = 'translate3d('+x+'px,0,0)';
}
function fnEnd(ev){
var upX = ev.changedTouches[0].pageX;//离开的位置
if(Math.abs(upX - downX)>50){
//左边移动
if(upX - downX<0){
iNow++;
if(iNow==aLi.length){iNow=aLi.length-1;}
}else{
//右边移动
iNow--;
if(iNow==-1){iNow=0;}
}
}
x = -iNow*aLi[0].offsetWidth;
oUl.style.transform = 'translate3d('+x+'px,0,0)';
oUl.style.transition = '200ms all ease';
function tEnd(){
if(iNow==4){
iNow=1;
}
if(iNow==0){iNow=3;}
oUl.style.transition = 'none'
x = -iNow*aLi[0].offsetWidth;
oUl.style.transform = 'translate3d('+x+'px,0,0)';
bReady = true;
}
oUl.addEventListener('transitionend',tEnd,false);
//释放内存
document.removeEventListener('touchend',fnEnd,false);
document.removeEventListener('touchmove',fnMove,false);
}
document.addEventListener('touchmove',fnMove,false);
document.addEventListener('touchend',fnEnd,false);
//阻止默认事件
ev.preventDefault();
},false);
}
</script>
</head>
<body>
<div id="box">
<ul>
<li style="background:green">3</li>
<li style="background:orange">1</li>
<li style="background:yellow">2</li>
<li style="background:green">3</li>
<li style="background:orange">1</li>
</ul>
</div>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 移动端
# 轮播
# 原生js实现移动端触摸轮播的示例代码
# js实现移动端轮播图效果
# 支持移动端原生js轮播图
# 原生js图片轮播效果实现代码
# js原生实现移动端手指滑动轮播图效果的示例
# 的是
# 都是
# 口中
# 放在
# 看了
# 一只
# 也会
# 在这个
# 让我们
# 可以用
# 屏幕上
# 不是很
# 要用
# 也都
# 这几个
# 介绍一下
# 发生了什么
# 移开
# 所写
# 大家多多
相关文章:
如何设计高效校园网站?
平台云上自助建站如何快速打造专业网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何快速搭建自助建站会员专属系统?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何配置IIS站点权限与局域网访问?
建站之星2.7模板快速切换与批量管理功能操作指南
,网页ppt怎么弄成自己的ppt?
如何高效配置IIS服务器搭建网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
SQL查询语句优化的实用方法总结
Java解压缩zip - 解压缩多个文件或文件夹实例
如何在Windows 2008云服务器安全搭建网站?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
制作表格网站有哪些,线上表格怎么弄?
制作企业网站建设方案,怎样建设一个公司网站?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
制作宣传网站的软件,小红书可以宣传网站吗?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
网站设计制作企业有哪些,抖音官网主页怎么设置?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
广州建站公司哪家好?十大优质服务商推荐
如何通过NAT技术实现内网高效建站?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
建站之星后台密码遗忘如何找回?
如何基于云服务器快速搭建网站及云盘系统?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
如何高效生成建站之星成品网站源码?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
临沂网站制作企业,临沂第三中学官方网站?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何在Windows虚拟主机上快速搭建网站?
网站制作话术技巧,网站推广做的好怎么话术?
中山网站推广排名,中山信息港登录入口?
建站主机空间推荐 高性价比配置与快速部署方案解析
音乐网站服务器如何优化API响应速度?
济南企业网站制作公司,济南社保单位网上缴费步骤?
开源网站制作软件,开源网站什么意思?
建站之星代理平台如何选择最佳方案?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何选择高效便捷的WAP商城建站系统?
网站微信制作软件,如何制作微信链接?
*请认真填写需求信息,我们会在24小时内与您取得联系。