js移动div怎么做出滑动的效果?

JavaScript09

js移动div怎么做出滑动的效果?,第1张

1:使用js的插件 目前主流的js库 比如jq 也有手势的插件,

2:还有移动端的zepto库 也有手势插件,

3:另外还有个叫QuoJS的手势插件 这个插件不依赖任何的库,

4:早期的应该是用wml语言支持的WMLScript实现。

5:举例:使用iscroll.js实现

1)下载iScroll.js,百度搜索iScroll.js下载即可

2)引入iScroll.js,在要使用滑动效果的地方,引入iScroll.js文件

3)编写规范的html格式

只有如下格式才能实现滑动效果

<div id="wrapper">

<div class="scroll">

这个区域可以滑动

</div>

</div>

如下格式不能滑动

<div id="wrapper">

<div class="other">这个区域可以滑动</div>

<div class="scroll">

这个区域不可以滑动了

</div>

</div>

只有wrapper的第一个子元素才能实现滑动效果。

4)编写js调用代码

var Scroll = new iScroll('wrapper',{hScrollbar:false, vScrollbar:false})

第一参数必需是滑动元素的父元素的id。

主要参数一览:

hScroll: true, 左右滑动,默认为true

vScroll: true,上下滑动

hScrollbar: true, 是否显示y轴滚动条,默认为显示

vScrollbar: true,是否显示X轴滚动条,默认为显示

js实现随页面滑动效果的方法。具体如下:

页面向上向下滚动,分享到的模块随着滑动。

要点:

代码如下:

var scrtop =document.documentElement.scrollTop||document.body.scrollTop

var height = document.documentElement.clientHeight||document.body.clientHeight

var top = scrtop + (height - jb51.offsetHeight)/2

top = parseInt(top)

获得页面垂直居中的位置

上代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="gb2312" />

<title>无标题文档</title>

<style>

body{margin:0padding:0font:12px/1.5 arialheight:2000px}

#jb51{width:100pxheight:200pxline-height:200px

text-align:centerborder:1p solid #ccc

background:#f5f5f5position:absoluteleft:-100pxtop:0}

#jb51_tit{position:absoluteright:-20pxtop:60px

width:20pxheight:60pxpadding:10px 0

background:#06ctext-align:center

line-height:18pxcolor:#fff}

</style>

<script>

window.onload = function(){

var jb51 = document.getElementById("jb51")

jb51.onmouseover = function(){

startrun(jb51,0,"left")

}

jb51.onmouseout = function(){

startrun(jb51,-100,"left")

}

window.onscroll = window.onresize = function(){

var scrtop=document.documentElement.scrollTop||document.body.scrollTop

var height=document.documentElement.clientHeight||document.body.clientHeight

var top = scrtop + (height - jb51.offsetHeight)/2

top = parseInt(top)

startrun(jb51,top,"top")

}

}

var timer = null

function startrun(obj,target,direction){

clearInterval(timer)

timer = setInterval(function(){

var speed = 0

if(direction == "left"){

speed = (target-obj.offsetLeft)/8

speed = speed>0?Math.ceil(speed):Math.floor(speed)

if(obj.offsetLeft == target){

clearInterval(timer)

}else{

obj.style.left = obj.offsetLeft + speed + "px"

}

}

if(direction == "top"){

speed = (target-obj.offsetTop)/8

speed = speed>0?Math.ceil(speed):Math.floor(speed)

if(obj.offsetTop == target){

clearInterval(timer)

}else{

obj.style.top = obj.offsetTop + speed + "px"

}

document.title = obj.offsetTop + ',' + target + ',' +speed

}

},30)

}

</script>

</head>

<body>

<div id="jb51">

分享到内容

<span id="jb51_tit">分享到</span>

</div>

</body>

</html>

参考这位博客的内容:

js判断手指滑动方向(移动端)

var startx, starty

//获得角度

function getAngle(angx, angy) {

return Math.atan2(angy, angx) * 180 / Math.PI

}

//根据起点终点返回方向 1向上 2向下 3向左 4向右 0未滑动

function getDirection(startx, starty, endx, endy) {

var angx = endx - startx

var angy = endy - starty

var result = 0

//如果滑动距离太短

if (Math.abs(angx) <2 &&Math.abs(angy) <2) {

return result

}

var angle = getAngle(angx, angy)

if (angle >= -135 &&angle <= -45) {

result = 1

} else if (angle >45 &&angle <135) {

result = 2

} else if ((angle >= 135 &&angle <= 180) || (angle >= -180 &&angle <-135)) {

result = 3

} else if (angle >= -45 &&angle <= 45) {

result = 4

}

return result

}

//手指接触屏幕

document.addEventListener("touchstart", function(e) {

startx = e.touches[0].pageX

starty = e.touches[0].pageY

}, false)

//手指离开屏幕

document.addEventListener("touchend", function(e) {

var endx, endy

endx = e.changedTouches[0].pageX

endy = e.changedTouches[0].pageY

var direction = getDirection(startx, starty, endx, endy)

switch (direction) {

case 0:

alert("未滑动!")

break

case 1:

alert("向上!")

break

case 2:

alert("向下!")

break

case 3:

alert("向左!")

break

case 4:

alert("向右!")

break

default:

}

}, false)