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 相关文章推荐
JQuery EasyUI 对话框的使用方法
Oct 24 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
JsRender实用入门教程
Oct 31 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
JavaScript实现点击文字切换登录窗口的方法
May 11 Javascript
vue-resource调用promise取数据方式详解
Jul 21 Javascript
Parcel 打包示例(React HelloWorld)
Jan 16 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
JavaScript 如何在浏览器中使用摄像头
Dec 02 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
文件上传的实现
2006/10/09 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
JavaScript中的闭包原理分析
2010/03/08 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
innerText 使用示例
2014/01/23 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
外企C语言笔试题
2013/11/10 面试题
中间件分为哪几类
2012/03/14 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
资深财务管理人员自我评价
2013/09/22 职场文书
团支书的期末学习总结自我评价
2013/11/01 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
文化产业实施方案
2014/06/07 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
挂靠协议书
2015/01/27 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
婚宴致辞
2015/07/28 职场文书
《春酒》教学反思
2016/02/22 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
Java 关于String字符串原理上的问题
2022/04/07 Java/Android