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)