用html5开发前端app,触摸图片会滑动到下一张图片,请问怎么弄?

html-css03

用html5开发前端app,触摸图片会滑动到下一张图片,请问怎么弄?,第1张

这个原理其实很简单的。你知道html5只是html+css3+js的全程,所以控制图片的定位都是有css的一个position属性来做的,图片无非就是去改变定位中的left值。知道这个之后我就可以接下来的实现步骤:

当然,这些只是实现逻辑。具体细化功能这个你自己去调整。原理知道其他的都简单的很。

第一步:将N张图片去排版定位。

#pic1{

position:absolute

width:50px

height:50px

top:10px

left:0px

}

#pic2{

position:absolute

width:50px

height:50px

top:10px

left:60px

}

#pic3{

position:absolute

width:50px

height:50px

top:10px

left:120px

}

第二步:我们现在已经知道了这3张图片的位置,接下来就是去点击它,改变他的位置,这个点击其实用js就很容易实现。onclick点击事件,你可以搜下;

例如:

//监听点击事件

document.addEventListener("click",function(){

  for(var i=1i<4i++){

    $("#pic"+i).css("left", parseInt($("#pic"+i).css("left")) - 60 + "px")

  }

})

现在我们在去看css属性的left值,依次类推:-60px,0px,60px,

第三步:图片就这样切换了。我这假设我们的手机屏幕宽是50像素的,但现实不是这样,所以需要加个遮照。就是在这个滚动的图片上再加一层div去遮住不去显示的图片(当然这是一种蔗照方法),方法很多不一一列举。关键属性overflow:hidden;

朋友只能指点这么多,老婆让洗碗,所以接下来的如有疑问,继续追问,以后回答

1、创建两个html文件,一个test一个test2。

2、打开test页面,在里面创建一个div,并给其添加onmousedown与move方法。

3、打开后我们发现是一个棕绿的页面。

4、定义两个变量,startx为鼠标按下的坐标,endx为鼠标移动的坐标。

5、实现鼠标点击执行的down方法,在里面通过clientX获得鼠标按下坐标,并赋值给startx。

6、接着在实现鼠标移动的move方法,获得鼠标移动的坐标,并通过startx与endx相减判断是否向左边滑动大于30的距离,是的话就切换到test2页面。

7、现在我们打开test页面,向左滑动会提示切换页面(这个可以去除),确定后就切换到了test2页面,向右滑动切换的方法同理。

一、关于拖拽API

拖拽API是HTML5的新特性,相对于其他新特性来说,重要程度占到6成,实际开发中使用比例占到3成,学习要求个人认为是达到掌握即可的程度。

二、什么是拖拽和释放?

拖拽:Drag

释放:Drop

拖拽指的是鼠标点击源对象后一直移动对象不松手,一但松手即释放了

三、什么是源对象和目标对象?

源对象:指的是我们鼠标点击的一个事物,这里可以是一张图片,一个DIV,一段文本等等。

目标对象:指的是我们拖动源对象后移动到一块区域,源对象可以进入这个区域,可以在这个区域上方悬停(未松手),可以释松手释放将源对象放置此处(已松手),也可以悬停后离开该区域。

四、拖拽API的相关函数

解释了什么是源对象和目标对象后,回归前端中的拖拽API,由上面的操作我们可以得出几个函数

被拖动的源对象可以触发的事件:

(1)ondragstart:源对象开始被拖动

(2)ondrag:源对象被拖动过程中(鼠标可能在移动也可能未移动)

(3)ondragend:源对象被拖动结束

拖动源对象可以进入到上方的目标对象可以触发的事件:

(1)ondragenter:目标对象被源对象拖动着进入

(2)ondragover:目标对象被源对象拖动着悬停在上方

(3)ondragleave:源对象拖动着离开了目标对象

(4)ondrop:源对象拖动着在目标对象上方释放/松手

拖拽API总共就是7个函数!!

五、如何在拖动的源对象事件和目标对象事件间传递数据

HTML5为所有的拖动相关事件提供了一个新的属性:

e.dataTransfer { } //数据传递对象

功能:用于在源对象和目标对象的事件间传递数据

源对象上的事件处理中保存数据:

e.dataTransfer.setData( k, v )//k-v必须都是string类型

目标对象上的事件处理中读取数据:

var v = e.dataTransfer.getData( k )