js实现简单拖拽效果
方法如下:
var params = {left: 0,- top: 0,
- currentX: 0,
- currentY: 0,
- flag: false
- };
- var getCss = function(o,key){
- return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key];
- };
- var startDrag = function(bar, target, callback){
- if(getCss(target, "left") !== "auto"){
- params.left = getCss(target, "left");
- }
- if(getCss(target, "top") !== "auto"){
- params.top = getCss(target, "top");
- }
- bar.onmousedown = function(event){
- params.flag = true;
- if(!event){
- event = window.event;
- bar.onselectstart = function(){
- return false;
- }
- }
- var e = event;
- params.currentX = e.clientX;
- params.currentY = e.clientY;
- };
- document.onmouseup = function(){
- params.flag = false;
- if(getCss(target, "left") !== "auto"){
- params.left = getCss(target, "left");
- }
- if(getCss(target, "top") !== "auto"){
- params.top = getCss(target, "top");
- }
- };
- document.onmousemove = function(event){
- var e = event ? event: window.event;
- if(params.flag){
- var nowX = e.clientX, nowY = e.clientY;
- var disX = nowX - params.currentX, disY = nowY - params.currentY;
- target.style.left = parseInt(params.left) + disX + "px";
- target.style.top = parseInt(params.top) + disY + "px";
- if (event.preventDefault) {
- event.preventDefault();
- }
- return false;
- }
- if (typeof callback == "function") {
- callback(parseInt(params.left) + disX, parseInt(params.top) + disY);
- }
- }
- };
使用方法为
startDrag("触发拖拽的对象","被拖拽的对象")
js实现简单拖拽效果的更多相关文章
- js插件-简单拖拽
前端开发的时候,有好多地方用到拖拽效果,当然 http://jqueryui.com/draggable/ 是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话 ...
- 用JS实现版面拖拽效果
类似于这样的一个版面,点击标题栏,实现拖拽效果. 添加onmousedown事件 通过获取鼠标的坐标(clientX,clientY)来改变面板的位置 注意:面板使用绝对定位方式,是以左上角为参考点, ...
- Javascript:简单拖拽效果的实现
核心代码: /* *完成一个拖拽事件由三大事件组成: *1:onmousedown:选择元素 *2:onmousemove:移动元素 *3:onmouseup:释放元素 */ function dra ...
- 好玩的原生js的简单拖拽
这个拖拽的图片不是唯一的,拿到代码自己添加一张照片就可以啦 <!DOCTYPE html><html> <head> <meta charset=" ...
- 拖拽系列一、JavaScript实现简单的拖拽效果
前端拖拽相关应用汇总 在现实生活中就像男孩子牵着(拖着)女朋友的手穿过马路:从马路的一端走到另一端这种场景很常见: 而在前端开发中拖拽效果也算是前端开发中应用最常见.最普遍的特效:其拖拽涉及知 ...
- 原生js简单实现拖拽效果
实现弹窗拖拽效果的原理是:按下鼠标并移动——拖拽移动物体,抬起鼠标——停止移动.主要触发三个事件:onmousedown.onmousemove以及onmouseup: 首先搭建结构:一个宽350px ...
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- JavaScript实现最简单的拖拽效果
一.一些无关痛痒的唠叨 拖拽还是挺不错的一个页面效果,我个人认为,其生命力在于可以让用户自己做一些操作,所谓自定义.例如: ①浏览器标签顺序的拖拽切换 现在基本上所有的选项卡式的浏览器都有顺序拖拽切换 ...
- js拖拽效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- Oracle exp/imp 导出/导入
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 exp jjhd_test/11111111@a_syj file="d:\jjhd_test.dmp" ...
- 2. instr用法
跟oracle中的instr用法一样: SQL> select count(*) from t where instr(title,‟oracle‟)>0; COUNT(*) ———- 5 ...
- 交叉编译zookeeper的C库
原创文章,转载请正确注明本文原始URL及作者. 今天要编译一个zookeeper的C接口,要编译一个TK1版本. 事情经过这这样的:原来用的是zookeeper-3.4.6版本,但是源码中有个函数是汇 ...
- shell脚本判断执行用户
在脚本中,判断执行者是否为root. 判断方法1, #!/bin/bash if [ `whoami` != "root" ];then echo " only root ...
- day40-socket编程
一.socket介绍 看socket之前,先来回顾一下五层通讯流程: 但实际上从传输层开始以及以下,都是操作系统帮咱们完成的 Socket又称为套接字,它是应用层与TCP/IP协议族通信的中间软件抽象 ...
- 经典论文翻译导读之《Finding a needle in Haystack: Facebook’s photo storage》
https://github.com/chrislusf/seaweedfs [译者预读]面对海量小文件的存储和检索,Google发表了GFS,淘宝开源了TFS,而Facebook又是如何应对千亿级别 ...
- creator.d.ts 的错误
//export class PhysicsCollider{ export class PhysicsCollider extends Collider{ ==================检查代 ...
- Easy-to-Learn English Travel Phrases and Vocabulary!
Easy-to-Learn English Travel Phrases and Vocabulary! Share Tweet Share Tagged With: Real Life Englis ...
- ASP.NET HTTP 协议
http是无状态的,不会记得“上个请求***”,所以哪怕是同一个页面中的js.css.jpg也都要重复的提交Accept-Language.Accept-Encoding.Cookie等. 一般情况下 ...
- webpack 自动发现 entry 的配置和引用方式
假定我们的项目目录为如下的样子: - root/ - assets/ - app/ - global.js - index/ - index.js - auth/ - login.js - regis ...