<!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:60%; height: 500px; background: #000; margin: auto; overflow: hidden; background: url("../img/background.jpg")}
#inner{width:60%; height: 2000px; margin: auto; position:relative; }
</style>
<script src='https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js'></script>
</head>
<body>
<div id="spText"></div>
<div id="outer">
<div id="inner" style="top: 0" onmousedown="downDiv(this)" onmousemove="moveDiv(this)" onmouseout="outDiv(this)" onmouseup="upDiv(this)">
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>
</div>
</div>
<script>
var startX,//触摸时的坐标
startY,
x, //滑动的距离
y=0,
aboveY=0; //设一个全局变量记录上一次内部块滑动的位置
var obj_w, obj_h;
var all;
var inner=document.getElementById("inner");
function touchSatrt(e){//触摸
obj_w = e.offsetWidth;
obj_h = e.offsetHeight;
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的方式
all = aboveY+ y
if((all)>-2000 && (all)<0){
// console.log(all)
inner.style.top=aboveY+y+"px";
//这一句中的aboveY是inner上次滑动后的位置
}else{
console.log('划不动拉')
}
}
function touchEnd(e){//手指离开屏幕
e.preventDefault();
aboveY=parseInt(inner.style.top);//touch结束后记录内部滑块滑动的位置 在全局变量中体现 一定要用parseInt()将其转化为整数字;
}//
var mouseDown = false;
//鼠标按下函数
function downDiv(obj) {
obj_w = obj.offsetWidth;
obj_h = obj.offsetHeight;
console.log(obj_w,obj_h)
//e.clientX/Y 是获取鼠标相对浏览器的位置;将div中心自动居中到鼠标
var touch=window.event;;
startY = touch.pageY;
obj.style.top = startY;
// obj.style.top = e.clientY;
//按下时为ture,松开时为false,以判断是否执行执行mouveDiv
mouseDown = true;
// console.log(all)
}
//鼠标移动函数
function moveDiv(obj) {
var touch=window.event;;
y = touch.pageY - startY;//滑动的距离
if (mouseDown) {
all = aboveY+ y
// console.log(all)
if(all>-2100&&all <=0){
obj.style.top =all+"px";
}else{
console.log('划不动拉')
}
}
}
//鼠标松开函数
function upDiv(obj) {
mouseDown = false;
aboveY=parseInt(obj.style.top);
}
//鼠标跑出div
function outDiv(obj) {
mouseDown = false;
aboveY=parseInt(obj.style.top);
}
document.getElementById("outer").addEventListener('touchstart', touchSatrt,false);
document.getElementById("outer").addEventListener('touchmove', touchMove,false);
document.getElementById("outer").addEventListener('touchend', touchEnd,false);
</script>
</body>
</html>
直接可以运行,上下用Y轴,左右改成X轴就好了