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

html5页面左右滑动是怎么实现的?,第1张

左右滑动是由触摸事件定义的,触摸事件(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 = "<br>Touch end (" + event.changedTouches[0].clientX + "," + event.changedTouches[0].clientY + ")"

                break

            case "touchmove":

                event.preventDefault()

                oInp.innerHTML = "<br>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

在html中需要将插入的图片左右来回移动,只需要在图片img标签外套一个marquee标签,在里面写上behavior=alternate这句话就可以实现。

alternate是滚动标签<marquee>的属性。

scrolldelay,滚动延时,用于设定两次滚动 *** 作之间的间隔时间,该时间以毫秒为单位。

behavior,滚动方式。

alternate: 表示在两端之间来回滚动。

scroll: 表示由一端滚动到另一端,会重复。

slide: 表示由一端滚动到另一端,不会重复

类似这个效果的网上很多的啦,弄个改改就行了。

<html>

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8">

<title>JS平滑图片滚动</title>

<SCRIPT language=JavaScript type=text/JavaScript>

var sh

var marquees

marqueesWidth=610

var speed=20,preLeft=0,stopscroll=false,flag=true

function scrollLeft(){

preLeft=marquees.scrollLeft

marquees.scrollLeft+=3

if(preLeft>=marquees.scrollLeft){

Right()

}

}

function scrollRight(){

preLeft=marquees.scrollLeft

marquees.scrollLeft-=3

if(preLeft<=marquees.scrollLeft){

Left()

}

}

function Left(){

flag=true

clearInterval( sh )

sh = setInterval("scrollLeft()",speed)

}

function Right(){

flag=false

clearInterval( sh )

sh = setInterval("scrollRight()",speed)

}

function normal(){

clearInterval( sh )

speed=20

if(flag)Left()

else Right()

}

function plusSpeed(){

clearInterval( sh )

speed=10

if(flag)Left()

else Right()

}

function init(){

marquees=document.getElementById("marquees1")

with(marquees){

style.width=marqueesWidth+"px"

style.overflowX="hidden"

style.overflowY="visible"

}

Left()

}

</SCRIPT>

</head>

<body onload="init()">

<TABLE cellSpacing=1 width=660 align=center border=0>

<TR bgColor=#f8f8f8>

<TD align=middle width=25><img

src="http://www.codefans.net/jscss/demoimg/200905/left.gif" border=0 onmouseout=normal() onmouseover=plusSpeed() style="CURSOR: pointer" /></TD>

<TD>

<DIV id="marquees1">

<TABLE border=0><TR>

<TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s9.jpg' border=0 /></td>

</tr><tr><td><div align="center">第1期</div></td>

</tr></table></TD><TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img

class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s1.jpg' border=0 /></td>

</tr><tr><td><div align="center">第2期</div></td>

</tr></table></TD><TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img

class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s2.jpg' border=0 /></td>

</tr><tr><td><div align="center">第3期 </div></td>

</tr></table></TD><TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img

class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s3.jpg' border=0 /></td>

</tr><tr><td><div align="center">第4期</div></td>

</tr></table></TD><TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img

class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s4.jpg' border=0 /></td>

</tr><tr><td><div align="center">第5期</div></td>

</tr></table></TD><TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img

class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s5.jpg' border=0 /></td>

</tr><tr><td><div align="center">第6期</div></td>

</tr></table></TD><TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img

class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s6.jpg' border=0 /></td>

</tr><tr><td><div align="center">第7期</div></td>

</tr></table></TD><TD align=middle width=85><table cellSpacing=0 cellPadding=0 align=center border=0><tr><td><img

class=imgframe src='http://www.codefans.net/jscss/demoimg/wall_s7.jpg' border=0 /></td>

</tr><tr><td><div align="center">第8期</div></td>

</tr></table></TD>

</TR></TABLE></DIV>

<DIV id=templayer style="LEFT: 0pxVISIBILITY: hiddenPOSITION: absoluteTOP: 0px"></DIV></TD>

<TD align=middle width=25><img

src="http://www.codefans.net/jscss/demoimg/200905/right.gif" border=0 onmouseout=normal() onmouseover=plusSpeed() /></TD>

</TR></TABLE>

</body>

</html>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7549022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存