js拖动元素脚本
今天给大家带来一个js的拖动元素脚本,值得一提的是,这个脚本,博主做了浏览器的各种兼容,效果目前非常好,堪比l5的拖动效果,那么就直接上代码把: addevent(odiv, mo sedown ,f nction(evt){ evt.preventdefa lt； this.flag=tr e； if(evt.offsetx){ this.savedmo se={ x:evt.offsetx, y:evt.offsety }； } else { this.savedmo se={ x:evt.layerx, y:evt.layery }；} })； addevent(odiv, mo semove ,f nction(evt){ evt.preventdefa lt； if(！this.flag){ret rn；} this.style.left=evt.clientx-this.savedmo se.x+"px"； this.style.top=evt.clienty-this.savedmo se.y+"px"； })； addevent(doc ment, mo se p ,f nction(evt){odiv.flag=false；})； }； 分为三个函数,addevent是博主自己写的框架,其实也就是事件的兼容,跟jq ery的差不多,另外各位也可以自己直接用最简单的onload,那么比较核心的其实就是计算top和left的过程,这里用了一个savedmo se对象,然后作加法,逻辑大家自己试验计算,打字说实在太麻烦。然后值得一提的就是对offset的判断,这个是因为博主在ie9上试验有个很明显的b g,因为ie9加入w3c以后也接受了layerx,但是它同时也有offsetx,另外,这两个在ie里面还是不一样,好吧。于是博主作了这个判断,好在w3c没犯浑,offset跟它没关系,那么久可以单独对ie做兼容啦,给它不同的对象即可,ie里面的layerx虽然有,但是跟w3c不一样,因此在ie下还是选择了offset。 并且,通过这个调试之后,发现ie也有一个很大的优点,就是拖动速度的问题,在w3c,比如火狐下,一旦移动速度过快,浏览器是跟不上的,这里可以推想它的改变top或者left属性自身带延迟。那么ie下居然没有,这样一来ie下的效果反而更好！ 最后补一句,这个代码的兼容完全是博主自己写的,哈哈！小小得瑟一下,晚安！