JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
限制范围的拖拽,要求被拖拽的对象必须在客户区可见范围!
div是body的子元素,div的left/top是针对body的,不是针对可见客户区的,所以在拖拽的过程中不得不考虑被卷走的部分,因为网页文档可能很大,无论宽度还是高度都可能大于客户区,等于客户区大小就很好处理,大于的话就得考虑scrollTop和scrollLeft,否则div会跟鼠标脱离,因为距离都算错了。
/*切记:凡是clientX/Y的一定记得卷走的部分*/ document.body是DOM中Document对象里的body节点, document.documentElement是文档对象根节点(html)的引用, document.documentElement.scrollHeight网页整体高度
functiongetPos(ev){ varst=document.documentElement.scrollTop||document.body.scrollTop; varsl=document.documentElement.scrollLeft||document.body.scrollLeft; return{x:sl+ev.clientX,y:st+ev.clientY}; }
客户区可见范围限制拖拽 *{ padding:0; margin:0; } #div1{ width:100px; height:100px; background:orange; position:absolute; }