js 鼠标拖拽效果实现

效果:

源码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>速表拖拽效果实现</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .toolbar{
            height: 30px;
            text-align: left;
            padding-left: 20px;
            background: #036663;
            line-height: 30px;
            color: #fff;
        }
        .regist{
            width: 410px;
            height: 310px;
            margin: 200px auto;
            border:5px solid #eee;
            box-shadow:2px 2px 2px 2px #666;

        }
        .rt{
            height: 26px;
            background: #7C9299;
            color: #fff;
            line-height: 26px;
            cursor: move;
        }
        .rts{
            float: right;
        }
    </style>
</head>
<body>
<div class="toolbar">注册信息</div>
<div class="regist" id="regist">
    <div class="rt" id="rt">
        <span>注册信息(可以拖拽)</span>
        <span class="rts">【关闭】</span>
    </div>
</div>
<script>
    var regist = document.getElementById("regist");
    var rt = document.getElementById("rt");
    var x = 0,y = 0;
    rt.onmousedown = function(event){
        var event = event || window.event;
        x = event.clientX -  regist.offsetLeft;
        y = event.clientY - regist.offsetTop + 30;//加三十是因为顶部工具条占了30,而regist的没有父亲,所以他是以body为定位点,所以。。。
        document.onmousemove = function(event){
            var event = event || window.event;
            regist.style.marginLeft = event.clientX - x +"px";
            regist.style.marginTop = event.clientY - y +"px";
            window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
        }
        document.onmouseup = function(){
            document.onmousemove = null;
        }
    }
</script>
</body>
</html>

原文地址:https://www.cnblogs.com/alex-xxc/p/10002896.html

时间: 2024-11-04 03:31:08

js 鼠标拖拽效果实现的相关文章

jquery鼠标拖拽效果分享

//html代码部分 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="../js/jquery-1.11.1.js"></script> </head> <style> body

简单的鼠标拖拽效果(原生js实现)

之前在聊天群里看到有人说面试的时候被问到了怎样实现一个拖拽效果,当时看到后在心里默默思考了下,结果发现好像我也写不出来啊.本着遇到一个解决一个的思想,就亲自敲了一个,看到张鑫旭大神写的代码,真的很厉害,多多学习了,(感觉随便搜一个关于前端方面的问题都能看到他的网站,真是太佩服了,写了那么多文章,十分感谢.)好了,接下来就进入正题了.想实现一个效果首先得明白其中的逻辑,知道了实现逻辑后,就可以码代码了.首先我实现的效果是: 鼠标按下后,才可以执行后续效果 鼠标已经按下,然后鼠标移动,需要拖拽的元素

js之拖拽效果

主要原理: 1.当鼠标按下时,记录鼠标坐标,用到的是 onmousedown: 2.当鼠标移动时,计算鼠标移动的坐标之差,用到的是 onmousemove: 3.当鼠标松开时,清除事件,用到的是 onmouseup: 了解的知识: 1.div 的 offsetLeft 与 style.left 的区别: http://longxu1314.blog.163.com/blog/static/2112990412013101814844444/ 效果图如下: 突然发现有没有效果图都一样哈哈,不说废话

原生js实现拖拽效果

css样式布局: html部分: js主体部分: 接下来用混合继承实现box2移动时有边界的效果: 思路:1.实现拖拽效果主要有三个事件,当鼠标按下的时候,获取鼠标相对于事件发生元素的位置(offsetX/offsetY);当鼠标移动的时候,利用鼠标指针相对于浏览器页面(或客户区)的坐标(clientX/clientY),得到元素的left和top值(clientX/clientY-offsetX/offsetY):当鼠标抬起的时候清除移动效果. 2.事件处理函数会使this指向触发事件的元素,

JS实现鼠标拖拽效果以及放大缩小

要求:拖拽的子元素不能走出父元素,大小不能超过父元素,放大/缩小时阻止冒泡事件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> *{margin: 0;padding: 0;} .box1{border: 10px solid #000;width: 400px;height: 400px;posi

JS简易拖拽效果

原理:注册mousemove事件,使元素跟随鼠标挪动:注册mouseup事件,移除mousemove事件,使得松开鼠标时元素不再跟随移动,能够固定在指定位置.在mousedown事件中注册mousemove事件和mouseup事件,这样便可完成一次完整的拖拽. 重点:IE中setCapture()的应用.它的作用是捕捉所有的MouseEvent,设置完成后,即使鼠标移出窗口注册的鼠标事件仍然能够被触发.它在此处的作用是当鼠标移动过快越出元素的边界使得原本将要失效的mousemove事件依然能够发

JS简单拖拽效果

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>拖拽</title> <style> *{margin:0;padding:0;} #box{width:100px;height:100px;background-color: #f00;position:absolute;left:0;top:0

鼠标拖拽效果

1 <div id="div3"> 2 </div> 3 <script type="text/javascript"> 4 5 6 div3.onmousedown= function(e){ 7 var arr =[]; 8 arr[0] =[div3.offsetLeft,div3.offsetTop];//记录第一次点击的值; 9 var x = e.offsetX;//获取元素鼠标点击坐标 10 var y = e.of

JavaScript鼠标拖拽特效及相关问题总结

#div1{width:200px;height:200px;background:red;position:absolute;} #div2{width:200px;height:200px;background:green;position:absolute;left:300px;} <div id="div1">原来的 普通拖拽</div> <div id="div2">继承的 限制范围拖拽</div> wind