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 学习技巧总结
May 21 Javascript
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
简单js代码实现selece二级联动(推荐)
Feb 18 Javascript
setTimeout()递归调用不加引号出错的解决方法
Sep 05 Javascript
移动端横屏的JS代码(beta)
May 16 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
JavaScript操作 url 中 search 部分方法函数
Jun 15 Javascript
原生JS取代一些JQuery方法的简单实现
Sep 20 Javascript
基于bootstrop常用类总结(推荐)
Sep 11 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
一小时迅速入门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
简单谈谈 php 文件锁
2017/02/19 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
jQuery实现简单轮播图效果
2020/12/27 jQuery
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python循环监控远程端口的方法
2015/03/14 Python
使用python实现rsa算法代码
2016/02/17 Python
python之Socket网络编程详解
2016/09/29 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
python实现排序算法解析
2018/09/08 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
初中三好学生事迹材料
2014/01/13 职场文书
运动会广播稿200字
2014/01/15 职场文书
九年级历史教学反思
2014/01/27 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
保送生自荐信范文
2015/03/26 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书