IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> js实现拖拽图片 -> 正文阅读

[JavaScript知识库]js实现拖拽图片

  • onmousedown: 按下鼠标按钮触发事件
  • onmousemove:?事件会在鼠标指针移到指定的对象时发生
  • onmouseup: 事件会在鼠标按键被松开时发生

  • clientX 事件属性返回当事件被触发时鼠标指针相对于浏览器页面(或当前窗口)的水平坐标。
  • offsetLeft:左侧偏移量

此属性可以返回当前元素距离某个父辈元素左边缘的距离

(1).如果父辈元素中有定位的元素,那么就返回距离当前元素最近的定位元素边缘的距离
(2).如果父辈元素中没有定位元素,那么就返回相对于body左边缘距离。

语法结构:

obj.offsetleft

特别说明:此属性是只读的,不能够赋值。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title></title>
	<style type="text/css">
		
		#box1{
			width: 100px;
			height: 100px;
			background-color: red;
			position: absolute;
		}
		#box2{
			width: 100px;
			height: 100px;
			background-color: yellow;
			position: absolute;
			left: 200px;
			top:200px;
		}
	</style>
	
	<script type="text/javascript">
		
		window.onload = function(){
			/*
			 * 拖拽box1的元素
			 *  - 拖拽的流程
			 *  	1.当鼠标在被拖拽的元素上按下时开始拖拽 onmousedown
			 * 		2.当鼠标移动时被拖拽的元素跟随鼠标移动 onmousemove
			 * 		3.当鼠标松开时被拖拽的对象固定到当前位置 onmouseup
			 */
			var img01 = document.getElementById("img1")
			drag(img01);
		};
			
			/*
			 * 提取一个专门用来设置拖拽的函数
			 * 参数,开启拖拽的元素
			 */
			
			function drag(obj){
				obj.onmousedown = function(event){
				
				//设置box1捕获所有鼠标按下的事件
				/*
				 * setCapture()
				 *  - 只有IE支持,但是在火狐中调用时不会报错
				 * 		而如果使用chrome调用,会报错
				 */
                 obj.setCapture && obj.setCapture();
				
				
				event = event ||window.event
				//div的偏移量,鼠标.clientX-元素.offsetLeft
				
				//div的偏移量,鼠标.clientY-元素.offsetTop
				
				var ol = event.clientX -obj.offsetLeft;
				
				var ot = event.clientY - obj.offsetTop;
				//为document绑定一个onmousemove事件
				
				document.onmousemove = function(event){
					
					event = event ||window.event
					//当鼠标移动时被拖拽的元素跟随鼠标移动 onmousemove
					
					//获取鼠标的坐标
					var left = event.clientX-ol;
					var top = event.clientY-ot;
					
					//修改box1的位置
					obj.style.left = left+"px";
					obj.style.top = top+"px";
					
				};
				
				
				//为元素绑定一个鼠标松开事件
				document.onmouseup = function(){
					//当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
					//取消document的onmousemove事件
					
					document.onmousemove = null;
					document.onmouseup = null;
					//当鼠标松开时,取消对事件的捕获
					obj.releaseCapture && obj.releaseCapture();
				};
				/*
				 * 当我们拖拽一个网页的内容时,浏览器会默认去搜索引擎中搜索内容
				 *   此时会导致拖拽功能的异常,这是浏览器提供的默认行为
				 * 	 如果不希望发生这个行为,则可以通过return false来取消默认行为
				 */
				return false;
				};
			};
			
	</script>
</head>
<body>
	
	<!-- 我是一段文字
	<div id="box1">
		
	</div>
	<div id="box2">
		
	</div> -->
	
	<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg95.699pic.com%2Fphoto%2F40015%2F1187.jpg_wh860.jpg&refer=http%3A%2F%2Fimg95.699pic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1654323121&t=4092c978e8b827180bd5fd8d3c15bcef" id = "img1" style="position: absolute;"/>
</body>
</html>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:31:32  更:2022-05-09 12:31:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:28:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码