这个轮播代码不是我自己所写,是偶然游览一个简友的主页看到的,今天刚看了事件,决定来逐行分析一下这个代码。首先,移动端与电脑端不同的是移动端只能通过触摸和手势来发生行为,所以我们要用到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原生实现移动端手指滑动轮播图效果的示例
# 的是
# 都是
# 口中
# 放在
# 看了
# 一只
# 也会
# 在这个
# 让我们
# 可以用
# 屏幕上
# 不是很
# 要用
# 也都
# 这几个
# 介绍一下
# 发生了什么
# 移开
# 所写
# 大家多多
相关文章:
教学网站制作软件,学习*后期制作的网站有哪些?
如何用免费手机建站系统零基础打造专业网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
如何通过虚拟机搭建网站?详细步骤解析
青岛网站建设如何选择本地服务器?
如何选择适配移动端的WAP自助建站平台?
如何快速建站并高效导出源代码?
建站之星如何修改网站生成路径?
制作农业网站的软件,比较好的农业网站推荐一下?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
存储型VPS适合搭建中小型网站吗?
Python文件管理规范_工程实践说明【指导】
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何解决ASP生成WAP建站中文乱码问题?
如何快速搭建个人网站并优化SEO?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
攀枝花网站建设,攀枝花营业执照网上怎么年审?
javascript中的try catch异常捕获机制用法分析
Android自定义控件实现温度旋转按钮效果
如何高效完成自助建站业务培训?
高防服务器租用首荐平台,企业级优惠套餐快速部署
简历在线制作网站免费版,如何创建个人简历?
建站之星价格显示格式升级,你的预算足够吗?
如何将凡科建站内容保存为本地文件?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
详解jQuery中基本的动画方法
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
在线教育网站制作平台,山西立德教育官网?
定制建站方案优化指南:企业官网开发与建站费用解析
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何获取PHP WAP自助建站系统源码?
完全自定义免费建站平台:主题模板在线生成一站式服务
建站之星Pro快速搭建教程:模板选择与功能配置指南
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
如何快速生成ASP一键建站模板并优化安全性?
网站制作难吗安全吗,做一个网站需要多久时间?
已有域名和空间,如何快速搭建网站?
制作网站的模板软件,网站怎么建设?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
制作网站的公司有哪些,做一个公司网站要多少钱?
建站主机与虚拟主机有何区别?如何选择最优方案?
如何在IIS中配置站点IP、端口及主机头?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
建站主机是否属于云主机类型?
如何有效防御Web建站篡改攻击?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在IIS管理器中快速创建并配置网站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。