zoukankan      html  css  js  c++  java
  • 可拖拽的元素的一个javascript实现方法

    通过添加捕捉事件来完成监听偏移量
    可以直接下载附件浏览器打开。
    没有考虑 IE的兼容问题

    <!doctype html>
    <html>
    <head></head>
    <body>
    	<div style="100px;height:100px;position:absolute;top:0px;left:0px;background-color:red;cursor:default" onmousedown="drag(this,event)">
    		拖动我
    	</div>
    </body>
    <script type="text/javascript">
    function drag(element,event) {
    
    	// 鼠标起始坐标
    	var 
    	startX = event.clientX,
    	startY = event.clientY,
    	// 元素相对于document的位置
    	orignX = element.offsetLeft,
    	orignY = element.offsetTop,
    
    	// 获取鼠标相对元素的位置(在mousemove事件中,元素始终保持和鼠标的绝对偏移量不变)
    	oX = startX - orignX,
    	oY = startY - orignY;
    
    	// 注册监听事件为捕捉(true),这里事件要传递句柄名称
    	if(document.addEventListener) {
    		document.addEventListener('mousemove',moveHandler,true);
    		document.addEventListener('mouseup',upHandler,true);
    	}
    
    	// 这里定义了两个事件句柄 
    
    	// 这个e为mousemove事件,不再是mousedown触发的drag
    	function moveHandler(e) {
    		element.style.left = e.clientX - oX + 'px';
    		element.style.top = e.clientY - oY + 'px';
    	}
    	// 
    	function upHandler(e) {
    		document.removeEventListener('mousemove',moveHandler,true);
    		document.removeEventListener('mouseup',upHandler,true);
    	}
    }
    </script>
    </html>
    
  • 相关阅读:
    HDU 3874 Necklace 区间查询的离线操作
    POJ 1651 Multiplication Puzzle (区间dp)
    POJ 2528 Mayor's posters(离散+线段树)
    POJ 2886 Who Gets the Most Candies?
    webgl教程
    GL_ARRAY_BUFFER 和 GL_ELEMENT_ARRAY_BUFFER
    几个不错的webgl教程网
    svg图标库
    sublime text nodejs set
    图形学着色器学习
  • 原文地址:https://www.cnblogs.com/osinger/p/6015314.html
Copyright © 2011-2022 走看看