我页里就一个div.这div的内容是后台动态生成的,内容70%可能会超出窗口的大小,从而出现滚动条.
现在想让客户点div中空白的地方拖动的话.能代替拖动滚动条.直接滚动.就像平板中内容大过窗口尺寸时的拖动效果那样.不是要改变这div的位置.而是改变当前浏览器视图内容的位置
请教各位了
现在想让客户点div中空白的地方拖动的话.能代替拖动滚动条.直接滚动.就像平板中内容大过窗口尺寸时的拖动效果那样.不是要改变这div的位置.而是改变当前浏览器视图内容的位置
请教各位了
div.onmousedown = function(ev){
ev = ev || window.event;
oldx = ev.clientX;
oldy = ev.clientY;
scroll = true;
}
div.onmouseup = function(){
scroll = false;
}
div.onselectstart = function(){
return false;
}
div.onmouseout = function(ev){
ev = ev || window.event;
var to = ev.relatedTarget || ev.toElement;
if(!isParent(to,this)) scroll = false;
}
function isParent(c,p){
var par = c.parentNode,is=false;
while(par && par!=document.body){
par = par.parentNode;
if(par==p){
is=true;
return is;
}
}
return is;
}
div.onmousemove = function(ev){
if(scroll){
ev = ev || window.event;
var newx = ev.clientX,newy = ev.clientY;
this.scrollTop += (newy - oldy);
this.scrollLeft += (newx - oldx);
oldx = newx,oldy=newy;
}
}<div id="div" style="height:60px;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;">
<div>
<ul>
<li>1111111111111<li><li>222222<li><li>333333333<li><li>44444444444444<li><li>5555555555<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li>
</ul>
</div>
</div>
设置 div 的overflow为hidden,然后写事件实现拖拽就可以了
</div>
<div id="div2" style="height:60px;overflow:auto;-webkit-user-select:none;-moz-user-select:none;">
<ul>
<li>1111111111111<li><li>222222<li><li>333333333<li><li>44444444444444<li><li>5555555555<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li><li>1111111111111<li>
</ul>
</div> var scroll = false,oldx,oldy;
div.onmousedown = function(ev){
ev = ev || window.event;
oldx = ev.clientX;
oldy = ev.clientY;
scroll = true;
}
div.onmouseup = function(){
scroll = false;
}
div.onselectstart = function(){
return false;
}
div.onmouseout = function(ev){
ev = ev || window.event;
var to = ev.relatedTarget || ev.toElement;
if(!isParent(to,this)) scroll = false;
}
function isParent(c,p){
var par = c.parentNode,is=false;
while(par && par!=document.body){
par = par.parentNode;
if(par==p){
is=true;
return is;
}
}
return is;
}
div.onmousemove = function(ev){
if(scroll){
ev = ev || window.event;
var newx = ev.clientX,newy = ev.clientY;
var div2 = document.getElementById('div2')
div2.scrollTop += (newy - oldy);
div2.scrollLeft += (newx - oldx);
oldx = newx,oldy=newy;
}
}