欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript实现简单拖拽效果

程序员文章站 2022-03-10 08:15:18
本文实例为大家分享了javascript实现简单拖拽效果的具体代码,供大家参考,具体内容如下先看实现的效果:思路:里面用到了三个事件,鼠标按下、移动、松开事件那么首先创建盒子并且给它赋予css样式ht...

本文实例为大家分享了javascript实现简单拖拽效果的具体代码,供大家参考,具体内容如下

先看实现的效果:

JavaScript实现简单拖拽效果

思路:里面用到了三个事件,鼠标按下、移动、松开事件

那么首先创建盒子并且给它赋予css样式

html:

// html
<div>
    <p>我是个蓝色的盒子</p>
</div>

css:

css
*{margin: 0;padding: 0;}
        div{
            width: 100px;
            height: 100px;
            background-color: cornflowerblue;
            position: absolute;
        }
        p{
            width: 100px;
            height: 100px;
            line-height: 100px;
            font-size: 10px;
            color: #fff;
            text-align: center;
            transition: .5s all;
        }
        p:hover{
            transform: translatey(-5px);
            transition: .5s all;
            box-shadow: 10px 10px 5px gray;
}

然后在js设置相应的方法

var div = document.queryselector('div');
        var p   = document.queryselector('p');
        // 先定义初始化变量x、y
        var x =0;
        var y = 0;
        // var i = 3;
        var torf= false;
        //盒子里的文字无法被选中
        div.onselectstart = function (e) {
            return false;
        }
        div.addeventlistener('mousedown',function(e){
            // client:鼠标按钮时输出鼠标指针的坐标
            x = e.clientx;
            y = e.clienty;
            // 格式:obj.offsetleft:获取左和上的偏移量
            // 在这里特别说明一下:这个属性是只读的,不能够赋值。
            // 返回当前元素距离父元素(body)左边的距离
            // 这里的l,t并不是声明了一个全局变量,而是创建了一个全局对象的属性。
            l = div.offsetleft;
            t = div.offsettop;
            // 鼠标设置移动箭头
            div.style.cursor =  'move';
            p.innerhtml =  '我被按下了 ^_^';
            torf= true;
        });
        // 当整个屏幕触发移动事件时
        document.addeventlistener('mousemove',function(e){
            // 如果为false则终止函数的执行并返回函数的值
            if (torf == false) {
                return; 
            }
            // 在此函数中定义局部变量
            var twox = e.clientx;
            var twoy = e.clienty;
            // 用获取到的鼠标指针的坐标 - (鼠标指针的坐标 - 偏移量) = 实际鼠标拖动的位置
            // 后面一定要加上px单位,因为本身获取是没有单位的
            var twol = twox - (x-l);
            var twot = twoy - (y-t); 
            div.style.left = twol+'px';
            div.style.top = twot+'px';
            p.innerhtml =  '我正在被拖动  -.-';
        });
        div.addeventlistener('mouseup',function(){
            // 松开键盘时停止鼠标移动事件
            torf= false;
            // 鼠标恢复默认样式
            div.style.cursor = 'default';
            p.innerhtml =  '我被弹开了qaq';
 })

注意:

1、想控制某一个盒子的位置,必须给盒子添加定位,否则盒子不会动

2、offsetleft这个属性是只读的,不能够赋值

3、鼠标位置的的计算:鼠标指针的坐标 - (鼠标指针的坐标 - 偏移量) = 实际鼠标拖动的位置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: js 拖拽