HTML5深入学习之鼠标跟随,拖拽事件
知识点(鼠标跟随):
- mousedown: 当用户用鼠标点击在某一元素上就会触发该事件
- mouseover: 当鼠标指针在某一元素上移动就会触发改事件
下面这个例子的效果就是鼠标点击元素后,元素跟着鼠标移动
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>独秀不爱秀</title>
<style type="text/css">
* {
padding: 0;
margin: 0;
}
#one {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
}
</style>
</head>
<body>
<div id="one"></div>
<script type="text/javascript">
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';
});
});
}
</script>
</body>
</html>
知识点(鼠标拖拽)
- dragstart: 用户开始拖拽时触发该事件
- drag: 用户正在拖拽时触发该事件
- dragend: 用户结束拖拽时触发该事件
以上3个事件的控制对象为被拖拽的元素 (整个过程我们可以称之为拖拽区)
- dragenter: 当被拖拽的元素对象进入其容器范围内时触发该事件
- dragover: 当被拖拽的元素对象在其容器范围内拖拽时触发该事件
- dragleave: 当被拖拽的元素对象离开其容器范围内触发该事件
- drop: 在一个拖拽过程中,鼠标释放触发该事件
以上4个事件的控制对象为被拖追元素的目的容器(整个过程我们可以称之为投放区)
实例1(将一个容器拖放到另一个容器中)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>独秀不爱秀</title>
<style type="text/css">
* {
padding: 0;
margin: 0;
}
#one {
width: 200px;
height: 200px;
border: 1px solid rebeccapurple;
}
#two {
width: 100px;
height: 100px;
background-color: red;
cursor: pointer;
}
</style>
</head>
<body>
<div id="one"></div><br>
<!-- draggable属性:设置改元素是否能够被拖拽 -->
<div id="two" draggable="true"></div>
<script type="text/javascript">
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'));
});
}
</script>
</body>
</html>
实例2(文件拖拽上传)
前端代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>独秀不爱秀</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#box {
width: 200px;
height: 200px;
border: 2px dashed #ccc;
}
</style>
</head>
<body>
<div id="box">请拖入文件进行上传!很炫酷哟!</div>
<script type="text/javascript">
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();
});
</script>
</body>
</html>
后端代码(PHP实现):
if (isset($_FILES)) {
$orgin = $_FILES['pic']['tmp_name'];
$target = $_FILES['pic']['name'];
$moved = move_uploaded_file($orgin, './' . $target);
if (!$moved) {
echo '上传失败';
}
echo ', 且上传成功';
}
当我们将某一文件(这里我用一张图片)拖f放到这个容器中后,这个图片就到了这个指定得文件夹中。
HTML5深入学习之鼠标跟随,拖拽事件的更多相关文章
- HTML5 02. 多媒体控件、拖拽事件、历史记录、web存储、应用程序缓存、地理定位、网络状态
多媒体 video:是行内块(text-align: center; 对行内块适用) <figure></figure>: 多媒体标签 : <figcaption> ...
- Qt窗口添加鼠标移动拖拽事件
1. .h文件中添加 private: QPoint dragPosition; 2. 在cpp文件中重写鼠标点击和拖拽函数 void ShapeWidget::mousePressEvent( ...
- HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)
可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像 ...
- HTML5实战与剖析之原生拖拽(一拖拽历史概述)
提起拖拽,我就想起了在JavaScript培训的时候一个非常好玩的效果,那就是拖拽了.可以用鼠标任意拖拽着一个物体到任何你想去的地方. 最早拥有JavaScript拖拽功能的是IE4浏览器.当时,网页 ...
- JS Event 鼠标拖拽事件
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- day50—JavaScript鼠标拖拽事件
转行学开发,代码100天——2018-05-05 今天通过鼠标拖拽事件复习巩固一下鼠标事件. 鼠标拖拽事件需要记住两点: 1.距离不变 2.鼠标事件(按下,移动,抬起) <div id=&quo ...
- html5拖拽事件 xhr2 实现文件上传 含进度条
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 完美实现鼠标拖拽事件,解决各种小bug,基于jquery
鼠标拖拽事件是web中使用频率极高的事件,之前写过的代码包括网上的代码,总存在各种各样的问题,包括拖拽体验差,松开鼠标后拖拽效果仍存在以及代码冗余过大等 本次我才用jQuery实现一个尽可能高效的拖拽 ...
- H5原生拖拽事件
使用原生js实现简单的拖拽事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
随机推荐
- Spring AOP技术本质认识
Spring AOP技术本质认识 一.AOP简介 AOP(Aspect Oriented Programming,面向切面编程),把某一类问题集中在一个地方进行处理,比如处理程序中的点击事件.打印 ...
- matlab-画地形图
1.画三维图 之前画曲面的三维图,运用z=x2+y2 算出z和Z,如果是给出数据的地形则没办法用公式算,为此,引入插值自动造出地形的坐标. 拟合和插值的区别:插值是必须要过点,曲线可以不光滑:拟合则是 ...
- ajax post 提交无法进入controller 请求200
最近写js遇到个问题: 用ajax的post方式给后台提交数据,页面200,但是不进入controller 断点,我以为我post参数不对. 网上查的: 1.说路径不对,但是我通过get方式是可以进入 ...
- CF Educational Round 78 (Div2)题解报告A~E
CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students 依题意模拟即可 #include<bits/stdc++.h> us ...
- python3中“->”的含义
->:标记返回函数注释,信息作为.__annotations__属性提供 __annotations__属性是字典.键return是用于在箭头后检索值的键.但是在Python中3.5,PEP 4 ...
- Vim Python3环境打造
Vim Python3环境打造 tags: Vim Python3 参考网址:Vim与Python真乃天作之合:打造强大的Python开发环境 分割布局 sv 纵向分割 vs 横向分割 ctrl+W ...
- 洛谷 P2253 好一个一中腰鼓! 题解
P2253 好一个一中腰鼓! 题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:"忽一人 ...
- 【贪心】【P4053】[JSOI2007] 建筑抢修
[贪心][P4053][JSOI2007] 建筑抢修 Description 有 \(n\) 个工作,第 \(i\) 个工作做完需要 \(a_i\) 的时间,并且必须在 \(b_i\) 时刻前完成.求 ...
- NOIp初赛题目整理
NOIp初赛题目整理 这个 blog 用来整理扶苏准备第一轮 csp 时所做的与 csp 没 有 关 系 的历年 noip-J/S 初赛题目,记录了一些我从不知道的细碎知识点,还有一些憨憨题目,不定期 ...
- 决策单调性优化dp 专题练习
决策单调性优化dp 专题练习 优化方法总结 一.斜率优化 对于形如 \(dp[i]=dp[j]+(i-j)*(i-j)\)类型的转移方程,维护一个上凸包或者下凸包,找到切点快速求解 技法: 1.单调队 ...