知识点(鼠标跟随):

mousedown: 当用户用鼠标点击在某一元素上就会触发该事件

mouseover:  当鼠标指针在某一元素上移动就会触发改事件

下面这个例子的效果就是鼠标点击元素后,元素跟着鼠标移动

独秀不爱秀

* {

padding: 0;

margin: 0;

}

#one {

width: 100px;

height: 100px;

background-color: red;

position: absolute;

}

window.onload = function () {

var one = document.getelementbyid('one');

// mousedown鼠标事件:当用户点击鼠标在元素上就会触发该事件

one.addeventlistener('mousedown', function () {

// mousemove 鼠标事件:当鼠标指针在元素上移动就会触发此事件

/**

* e:指事件,在火狐浏览器中事件用window.event,所以只有把 event

* 所以只有把event传给函数使用。为了兼容火狐和浏览器,一般会在函数里自动

* 重新赋值: e = e || window.event;

*/

document.addeventlistener('mousemove', function (e) {

one.style.left = e.clientx + 'px';

one.style.top = e.clienty + 'px';

});

});

}

知识点(鼠标拖拽)

dragstart: 用户开始拖拽时触发该事件

drag:        用户正在拖拽时触发该事件

dragend:  用户结束拖拽时触发该事件

以上3个事件的控制对象为被拖拽的元素 (整个过程我们可以称之为拖拽区)

dragenter: 当被拖拽的元素对象进入其容器范围内时触发该事件

dragover:  当被拖拽的元素对象在其容器范围内拖拽时触发该事件

dragleave: 当被拖拽的元素对象离开其容器范围内触发该事件

drop:          在一个拖拽过程中,鼠标释放触发该事件

以上4个事件的控制对象为被拖追元素的目的容器(整个过程我们可以称之为投放区)

实例1(将一个容器拖放到另一个容器中)

独秀不爱秀

* {

padding: 0;

margin: 0;

}

#one {

width: 200px;

height: 200px;

border: 1px solid rebeccapurple;

}

#two {

width: 100px;

height: 100px;

background-color: red;

cursor: pointer;

}

window.onload = function () {

function $(id) {

return document.getelementbyid(id);

}

// 鼠标拖拽事件(注意控制对象为被拖拽的元素)

// dragstart: 用户开始拖拽时触发

$('two').addeventlistener('dragstart', function (e) {

// $('one').innerhtml = '开始拖拽';

});

// drag: 用户正在拖拽时触发

$('two').addeventlistener('drag', function (e) {

// $('one').innerhtml = '移动当中';

});

// dragend:用户结束拖拽时触发

$('two').addeventlistener('dragend', function (e) {

// $('one').innerhtml = '移动结束';

});

// 投放过程事件(注意控制对象为拖拽元素的目的地元素)

// dragenter: 当被拖拽的元素对象进入其范围内时触发

$('one').addeventlistener('dragenter', function (e) {

// $('one').innerhtml = '进入';

e.preventdefault(); // 阻止默认事件

});

// dragover: 当被拖拽的元素对象在该容器范围内拖拽时触发

$('one').addeventlistener('dragover', function (e) {

// $('one').innerhtml += '我就在里面';

e.preventdefault(); // 阻止默认事件(拖动的默认事件为在新窗口中打开)

});

// dragleave: 当被拖拽的元素对象离开其容器范围内触发

$('one').addeventlistener('dragleave', function (e) {

// $('one').innerhtml += '离开';

e.preventdefault(); // 阻止默认事件

});

// 投放事件(注意控制对象为拖拽元素的目的地元素)

// drop: 在一个拖动过程中,鼠标释放触发

$('one').addeventlistener('drop', function () {

$('one').appendchild($('two'));

});

}

实例2(文件拖拽上传)

前端代码:

独秀不爱秀

* {

margin: 0;

padding: 0;

}

#box {

width: 200px;

height: 200px;

border: 2px dashed #ccc;

}

请拖入文件进行上传!很炫酷哟!

var box = document.getelementbyid('box');

box.addeventlistener('dragenter', function (e) {

e.preventdefault();

});

box.addeventlistener('dragover', function (e) {

box.innerhtml = '已有东西进入,请松开';

e.preventdefault();

});

box.addeventlistener('dragleave', function (e) {

box.innerhtml = '赶紧回来';

e.preventdefault();

});

box.addeventlistener('drop', function (e) {

box.innerhtml = '已经松开';

// console.log(e.datatransfer.files[0]);

// lastmodified: 1561646705661

// lastmodifieddate: thu jun 27 2019 22: 45: 05 gmt + 0800(中国标准时间) { }

// name: "个人简历.pdf"

// size: 196022

// type: "application/pdf"

var file = e.datatransfer.files[0];

var fd = new formdata();

fd.append('pic', file);

var xhr = new xmlhttprequest();

xhr.open('post', '3-3.php');

xhr.send(fd);

xhr.addeventlistener('readystatechange', function () {

if (this.readystate === 4) {

// console.log(1111);

// console.log(this.responsetext);

box.innerhtml += this.responsetext;

}

});

e.preventdefault();

});

后端代码(php实现):

if (isset($_files)) {

$orgin = $_files['pic']['tmp_name'];

$target = $_files['pic']['name'];

$moved = move_uploaded_file($orgin, './' . $target);

if (!$moved) {

echo '上传失败';

}

echo ', 且上传成功';

}

当我们将某一文件(这里我用一张图片)拖f放到这个容器中后,这个图片就到了这个指定得文件夹中。

html跟随鼠标事件,HTML5深入学习之鼠标跟随,拖拽事件相关推荐

  1. 弹出框的鼠标拖拽事件

    几个与定位有关的概念: js: clientX/clientY属性:获得事件发生时鼠标指针在视口中的水平和垂直坐标. screenX/screenY属性:获取鼠标事件发生时鼠标光标相对于整个电脑屏幕的 ...

  2. JavaFX鼠标拖拽事件

    一.节点原拖拽事件 //鼠标拖拽进入node node.setOnMouseDragEntered(event->{//do something });//鼠标拖拽退出node node.set ...

  3. [html] HTML5拖拽事件的顺序是什么?

    [html] HTML5拖拽事件的顺序是什么? ondragstart :源对象开始被拖动 ondrag:源对象被拖动过程中 ondragend:源对象被拖动结束ondragenter:源对象拖动着进 ...

  4. JavaScript学习第十六天(键盘事件、表单事件、拖拽事件、框架事件、媒体事件)

    文章目录 键盘事件 表单事件 剪贴板事件 拖拽事件 打印事件 框架事件 媒体事件 总结 键盘事件 onkeydown 键盘按下事件,当有按键按下时触发 onkeyup 键盘松开事件,当有按键被松开时触 ...

  5. QT学习:QDropEvent拖拽事件

    QT学习:QDropEvent拖拽事件 步骤 实现 使用QT实现一个如下的拖拽.拖放动作,只需要三步.主要是使用dropEvent和dragEnterEvent事件处理即可以. 步骤 1.setAcc ...

  6. 【JavaScript 进阶之旅 DOM篇 第九章】鼠标行为、pageX|Y封装、拖拽事件封装

    文章目录 一.鼠标行为 1.clientX/Y 2.pageX/Y 3.screenX/Y 4.offsetX/Y 5.layerX/Y(不推荐使用) 6.x/y(不推荐使用) 二.pageX|Y封装 ...

  7. vuejs 原生JS 拖拽事件案例

    原生JS or Vue 事件案例合集(详细) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 Section 1 单个或多个鼠标拖拽事件的理解 提示:写完文章后,目录可以自动生成,如 ...

  8. 理解事件捕获。在限制范围内拖拽div+吸附+事件捕获

    一.实现的效果是在限制范围内拖拽div+吸附+事件捕获. 这里需要理解的是事件捕获,这个事件捕获也是为了兼容div在拖拽过程中,文本不被选中这个问题. 如此良辰美景,拖拽也可以很洒脱哈.先看看图, 二 ...

  9. 中如何使用echart_jQueryEasyUI中的拖拽事件如何使用

    jQueryEasyUI中的拖拽事件通过给它设置代理元素使其拖拽.可设置拖动元素相对于x.y轴拖动,可设置拖拽何时停止等效果 jQuery中的easyui是一个非常好用的插件,它虽然使用简单方便,但是 ...

  10. UGUI事件之Drag拖拽事件

    UI事件之Drag拖拽事件 ======================================================== 2.UGUI 事件命名空间 当我们需要使用 UGUI 中的 ...

最新文章

  1. 转载:sql2005 管道的另一端上无任何进程解决方法
  2. Spring快速入门及深入
  3. 三十、Pyspider爬虫框架总结,爬取Scrapy文档
  4. CVE-2021-3129:Laravel远程代码漏洞复现分析
  5. iPhone 12 mini续航尿崩:玩游戏两小时就歇菜
  6. thymeleaf参考手册
  7. 摆脱学校WiFi的设备数限制——无线桥接
  8. 微信小程序ios地图标记点无法点击第二次 markertap
  9. #Linux#进程间通信# 管道(pipe)-标准流管道pipe
  10. DigitalPersona 指纹仪的使用
  11. BugKu-图穷匕见
  12. 米哈游人工桌面YOYO鹿鸣
  13. 陕西广电 HGU B2 光猫获取超级密码 改桥接模式 提升网速
  14. 苹果笔记本设置MAC地址和ip地址
  15. 前端使用lottie-web,使用AE到处的JSON动画贴心教程
  16. 解决ActiveX组件及Office程序等在Chrome、Edge新内核、360系列、FireFox、IE、Opera等桌面浏览器各版本中的嵌入使用问题
  17. 2019华为软件精英挑战赛
  18. 深度学习之GPU环境配置
  19. 张fool语录 (某高中老师,学生上课的时候记录的),蛮搞
  20. 月薪2w+的测试,到底强在哪里?

热门文章

  1. 河南理工大学计算机软件考研857数据结构
  2. STM32f103正点原子小白 FLYMcu串口
  3. 小米球Ngrok内网穿透教程
  4. 51单片机循迹小车c语言程序,51单片机循迹小车源程序
  5. 今天开始真正学习SSH
  6. 多媒体计算机室管理制度,多媒体教室管理规章制度
  7. JAVA 实现《俄罗斯方块》游戏|CSDN创作打卡
  8. 链表的基本操作——学生信息管理表
  9. 【VSLAM学习记录2】初识cmake
  10. Word转PDF(SaveAsPDFandXPS + jacob)