问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

html5页面左右滑动是怎么实现的

发布网友 发布时间:2022-05-12 00:36

我来回答

2个回答

懂视网 时间:2022-05-12 04:57

这篇文章主要为大家详细介绍了html5 touch事件实现触屏页面上下滑动的相关代码,代码注释很清楚,感兴趣的小伙伴们可以参考一下

最近做的做那个app的项目由于用overflow:hidden导致了很多问题,于是决定研究下html5的touch事件。想找个全面点的帖子很难,虽然好多关于html5 touch的文章但大多都是介绍touch事件或者很简短的小demo。
比较全面的上下滑动的小demo,代码比较简单。

下面是完整代码,我把几个重要的地方做了红色标记

<!doctype html> 
<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <meta name="viewport" content="width=device-width,initial-scale=1 user-scalable=0"/> 
 <title>2014-4-29</title> 
 <style> 
 * {margin: 0; padding: 0;} 
 #outer{ width:90%; height: 490px; background: #000; margin: auto; overflow: hidden;} 
 #inner{width:80%; height: 2000px; background: #f67d42; margin: auto; position:relative; top:0; } 
 </style> 
 <script src='jquery-1.9.1.min.js'></script> 
</head> 
<body> 
 
<p id="spText"></p> 
 <p id="outer"> 
 <p id="inner"> 
 123<br> 123<br> gag<br> af<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> yryyr<br> ryry<br> 123<br> 123<br> 123<br> 123<br> 123<br> sdff<br> fef<br> 123<br> hr<br> hrh<br> 5y<br> 123<br> er<br> ert<br> 123<br> rgdgdg<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gfgfgfgfgfgf<br> sdsdsdsdsdsd<br> sf<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gdggdgdg<br> 123<br> drgdrgd<br> 123<br> 123<br> 123<br> yuyuyuyuyuy<br> hjkhjkhkhkhjkhkh<br> kjkjk<br>123<br> 123<br> gag<br> af<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> yryyr<br> ryry<br> 123<br> 123<br> 123<br> 123<br> 123<br> sdff<br> fef<br> 123<br> hr<br> hrh<br> 5y<br> 123<br> er<br> ert<br> 123<br> rgdgdg<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gfgfgfgfgfgf<br> sdsdsdsdsdsd<br> sf<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gdggdgdg<br> 123<br> drgdrgd<br> 123<br> 123<br> 123<br> yuyuyuyuyuy<br> hjkhjkhkhkhjkhkh<br> kjkjk<br>  
 </p> 
 </p> 
 
 <script> 
 var startX,//触摸时的坐标 
  startY, 
  x, //滑动的距离 
  y, 
  aboveY=0; //设一个全局变量记录上一次内部块滑动的位置 
 
  var inner=document.getElementById("inner"); 
  
  function touchSatrt(e){//触摸 
  e.preventDefault(); 
  var touch=e.touches[0]; 
  startY = touch.pageY; //刚触摸时的坐标   
  } 
 
  function touchMove(e){//滑动  
   e.preventDefault();  
   var touch = e.touches[0];   
   y = touch.pageY - startY;//滑动的距离 
  //inner.style.webkitTransform = 'translate(' + 0+ 'px, ' + y + 'px)'; //也可以用css3的方式 
  inner.style.top=aboveY+y+"px"; //这一句中的aboveY是inner上次滑动后的位置   
  } 
 
  function touchEnd(e){//手指离开屏幕 
  e.preventDefault();   
  aboveY=parseInt(inner.style.top);//touch结束后记录内部滑块滑动的位置 在全局变量中体现 一定要用parseInt()将其转化为整数字; 
 
  }// 
  document.getElementById("outer").addEventListener('touchstart', touchSatrt,false); 
  document.getElementById("outer").addEventListener('touchmove', touchMove,false); 
  document.getElementById("outer").addEventListener('touchend', touchEnd,false); 
 </script> 
</body> 
 
</html>

热心网友 时间:2022-05-12 02:05

左右滑动是由触摸事件定义的,触摸事件(touch)会在用户手指放在屏幕上面的时候、在屏幕上滑动的时候或者是从屏幕上移开的时候触发。下面具体说明:  touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。  touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。  touchend事件:当手指从屏幕上离开的时候触发。  touchcancel事件:当系统停止跟踪触摸的时候触发。关于这个事件的确切出发时间,文档中并没有具体说明,咱们只能去猜测了。  上面的这些事件都会冒泡,也都可以取消。虽然这些触摸事件没有在DOM规范中定义,但是它们却是以兼容DOM的方式实现的。所以,每个触摸事件的event对象都提供了在鼠标实践中常见的属性:bubbles(起泡事件的类型)、cancelable(是否用 preventDefault() 方法可以取消与事件关联的默认动作)、clientX(返回当事件被触发时,鼠标指针的水平坐标)、clientY(返回当事件触发时,鼠标指针的垂直坐标)、screenX(当某个事件被触发时,鼠标指针的水平坐标)和screenY(返回当某个事件被触发时,鼠标指针的垂直坐标)。除了常见的DOM属性,触摸事件还包含下面三个用于跟踪触摸的属性。  touches:表示当前跟踪的触摸操作的touch对象的数组。  targetTouches:特定于事件目标的Touch对象的数组。  changeTouches:表示自上次触摸以来发生了什么改变的Touch对象的数组。  每个Touch对象包含的属性如下。  clientX:触摸目标在视口中的x坐标。  clientY:触摸目标在视口中的y坐标。  identifier:标识触摸的唯一ID。  pageX:触摸目标在页面中的x坐标。  pageY:触摸目标在页面中的y坐标。  screenX:触摸目标在屏幕中的x坐标。  screenY:触摸目标在屏幕中的y坐标。  target:触目的DOM节点目标。

举个例子-JavaScript代码:

function load (){
  
    document.addEventListener('touchstart',touch, false);
    document.addEventListener('touchmove',touch, false);
    document.addEventListener('touchend',touch, false);
      
    function touch (event){
        var event = event || window.event;
          
        var oInp = document.getElementById("inp");
  
        switch(event.type){
            case "touchstart":
                oInp.innerHTML = "Touch started (" + event.touches[0].clientX + "," + event.touches[0].clientY + ")";
                break;
            case "touchend":
                oInp.innerHTML = "Touch end (" + event.changedTouches[0].clientX + "," + event.changedTouches[0].clientY + ")";
                break;
            case "touchmove":
                event.preventDefault();
                oInp.innerHTML = "Touch moved (" + event.touches[0].clientX + "," + event.touches[0].clientY + ")";
                break;
        }
          
    }
}
window.addEventListener('load',load, false);

HTML代码:

<div id="inp"></div>

上面的小例子当touchstart事件触发的时候,会将触摸的位置更新到div标签中。当touchmove事件触发的时候,会默认行为的滚动(触摸移动的默认行为是滚动页面),然后触摸操作的变化信息更新到div标签中。而touchend事件会输出有关触摸操作的最终信息。注意,在touchend事件触发的时候,touches集合中就没有任何Touch对象了,因为不存在活动的触摸操作。

这些事件会在文档的所有元素上面触发,因而可以分别操作页面的不同部分。在触摸屏幕上的元素,这些事件(包括鼠标事件)发生的顺序如下:

(1)touchstart

(2)mouseover

(3)mousemove(一次)

(4)mousedown

(5)mouseup

(6)click

(7)touchend

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求助:补全成语. _然而止、_然不屈、_然四顾、_然若失、_然而至、_然拒绝、_然无声... 我姑妈(姑妈去世),现奶奶的房产 姑妈的女儿有继承权吗? 丈夫去世遗产应该能怎么分配 《人世间》骆士宾遗产股权归谁所有 为什么说曹珊不应该得罪水自流_百 ... 有谁知我国十大元帅及十大上将? 解放中国的10大元帅是那几个? 对中国有何影响? 中国历史上的十大元帅 为什么中国过去有元帅现在没有了 ...想看中国80年代、90年代热播的电视剧,《渴望》、《蛙女》等,越多... 哪里有大明王朝免费在线观看,不卡/无广告/无木马病毒? 大明王朝在什么播放器可以看 人不知而不愠,不亦君子乎.是什么意思 “不亦说乎”的“亦”什么意思 请问现在锐龙r7-2700u 处理器 鲁大师跑分大概有多少,它的核显鲁大师跑分大概有多少? B365和B75M主板哪个好些? b365主板选微星的还是技嘉的? 初级入门学习法语,看什么书呢? 法语培训初级100课时3000元贵吗 请问行货和水货的诺基亚5300有什么区别 抖音切换账号最多能登录多少个号 为什么iphone6需要插上电源才能使用“嘿 Siri”,这是6和6s的限制吗? 不插电也能用hey Siri的插件 怎么设置苹果6升级10.2锁屏不充电可以唤醒siri吗? iphone6怎么不充电使用siri 苹果六怎么样可以不需要home键。,也不在充电状态下,就可以直接唤醒。 办理国外专利资助,需提供外国专利审查机构出具的授权专利公告首页和授权证书复印件,这两个文件什么区别 做了美瞳线唾液跟鼻涕是黑色的 我想问一下,专利在申请中和授权后都可以转让,问?二者有何区别?专利证书归谁?二者转让获得的钱一样... 这个专利证书像是虚拟的吗?专利证书和授权证书是一样的吗? 哪里能看到大明王朝 一般来讲哪个网站能免费看电影电视 什么类型的啊 比如大明王朝在哪看 想在线看大明王朝哪位大神有,求免费分享 那个网站可交看大明王朝1566 红外线人体感应灯的技术说明 跪求年代剧电视剧,【免费高清】在线观看百度网盘资源 跪求最近明朝电视剧有哪些,【免费高清】在线观看百度网盘资源 跪求古装剧最新上映,【免费高清】在线观看百度网盘资源 大明王朝1566演员表_大明王朝高清网盘在线观看 山梗菜 有什么作用? 什么是身披毛毯的山梗菜? 山梗菜是怎样养护和繁殖的? 请问这是什么花,卖花的说是半边莲,可我百度了一下,跟我的不太像? 怎样使山梗菜观花时间更长? 有大神知道这是什么花吗?网上找了很像风铃草但又不太像 山梗糕的好处? 六培利是多年生植物吗? 移动说流量加量不加价是真的吗? 求解,移动说流量加量不加价是真的吗 这两个花的名字?