JavaScript实现简单拖拽效果


Posted in Javascript onSeptember 15, 2021

本文实例为大家分享了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、鼠标位置的的计算:鼠标指针的坐标 - (鼠标指针的坐标 - 偏移量) = 实际鼠标拖动的位置

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

Javascript 相关文章推荐
javascript语言结构小记(一)
Sep 10 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
js微信扫描二维码登录网站技术原理
Dec 01 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
Mar 30 Javascript
bootstrap日期插件daterangepicker使用详解
Oct 19 Javascript
详解如何优雅地在React项目中使用Redux
Dec 28 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
May 27 Javascript
JavaScript对象的特性与实践应用深入详解
Dec 30 Javascript
JS高阶函数原理与用法实例分析
Jan 15 Javascript
vue使用keep-alive保持滚动条位置的实现方法
Apr 09 Javascript
JavaScript实现简单的计算器
Jan 16 Javascript
解决Vue中使用keepAlive不缓存问题
Aug 04 Javascript
一小时迅速入门Mybatis之bind与多数据源支持 Java API
Sep 15 #Javascript
Javascript之datagrid查询详解
Sep 15 #Javascript
Js类的构建与继承案例详解
Sep 15 #Javascript
JavaScript 数组去重详解
Sep 15 #Javascript
5种方法告诉你如何使JavaScript 代码库更干净
Sep 15 #Javascript
JavaScript小技巧带你提升你的代码技能
Sep 15 #Javascript
javascript函数式编程基础
Sep 15 #Javascript
You might like
用Flash图形化数据(二)
2006/10/09 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
PHP读取Excel类文件
2017/05/15 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python中的下划线详解
2015/06/24 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
python简单实现插入排序实例代码
2020/12/16 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
html5教程画矩形代码分享
2013/12/04 HTML / CSS
关于递归的一道.NET面试题
2013/05/12 面试题
机电专业体育教师求职信
2013/09/21 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
高中生物教学反思
2014/02/05 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
白酒营销策划方案
2014/08/17 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书