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 相关文章推荐
转换json格式的日期为Javascript对象的函数
Jul 13 Javascript
javascript Window及document对象详细整理
Jan 12 Javascript
很棒的学习jQuery的12个网站推荐
Apr 28 Javascript
另一个javascript小测验(代码集合)
Jul 27 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
微信小程序 LOL 英雄介绍开发实例
Sep 30 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
Mar 08 Javascript
vue之将echart封装为组件
Jun 02 Javascript
vue实现路由监听和参数监听
Oct 29 Javascript
微信小程序实现多行文字滚动
Nov 18 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 读取shell管道传输过来的内容
2010/03/01 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
js style动态设置table高度
2014/10/21 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
python检测是文件还是目录的方法
2015/07/03 Python
详解Django中的过滤器
2015/07/16 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
python中import与from方法总结(推荐)
2019/03/21 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
学用政策心得体会
2014/09/10 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers