美文网首页
拖拽的简单实现

拖拽的简单实现

作者: YXCoder | 来源:发表于2018-04-27 17:10 被阅读0次

前言:年初换工作,换住处弄了好长一段时间,终于全部搞定了,好久没写博客了,今天小更新一下,以示存在 ~.~


话不多说,上代码

  • html
<html><div class='div'></div></html>
  • css
*{
    margin: 0;
    padding: 0;
}
.div{
    position: relative;
    left: 100px;
    top: 100px;
    background-color: blue;
    width: 150px;
    height: 150px;
    cursor: pointer;
}
  • javascript
var div = document.querySelector('.div');
var mouseX = 0;
var mouseY = 0;
function move(e){
    var box = div.getBoundingClientRect();
    var boxLeft = box.left;
    var boxTop = box.top;
    var temMouseX = e.clientX;
    var temMouseY = e.clientY;
    var moveX = temMouseX - mouseX;
    var moveY = temMouseY - mouseY;
    div.style.left = boxLeft + moveX + 'px';
    div.style.top = boxTop + moveY+'px';
    mouseX = e.clientX;
    mouseY = e.clientY;
}
div.addEventListener('mousedown', function(e){
    div.style.position = 'absolute';
    mouseX = e.clientX;
    mouseY = e.clientY;
    document.addEventListener('mousemove', move);
})
document.addEventListener('mouseup', function(e){
    document.removeEventListener('mousemove', move);
    div.style.position = 'relative';
})

效果如下:


aaa.gif

有几点值得注意的地方:

  • 事件注册的时候,只有 mousedown事件是在 div上注册,其他事件是在 document上注册,这样是为了防止移动过快,鼠标移出 div而导致的 bug
  • mouseX和 mouseY为缓存鼠标的坐标,在 move方法最后需要实时设置鼠标的坐标
  • 移动前将 div的 position设置为 absolute能在移动过程中有效的减少回流

相关文章

  • JS实现拖拽功能

    拖拽功能是我们日常项目中常用的效果,今天我们就来研究一下如何实现简单的拖拽功能。想实现拖拽功能其实很简单,主要需要...

  • iOS - UICollectionView 长按拖拽

    简单写了一个collectionview的拖拽效果,记录下.只是简单的实现了拖拽,其它都没有加 实现思路: 首先给...

  • html5实现拖拽效果

    在此之前,实现拖拽操作都是开发人员自定义逻辑实现的,但是HTML5提供了拖拽API ,使得拖拽操作的实现变得简单。...

  • 拖拽的简单实现

    前言:年初换工作,换住处弄了好长一段时间,终于全部搞定了,好久没写博客了,今天小更新一下,以示存在 ~.~ 话不多...

  • 百度地图web--拖拽选址

    实现地图拖拽选址功能,百度地图并未像高德地图拖拽选址功能 。由于项目需要,在百度地图的基础上实现简单的拖拽功能。大...

  • 控件拖拽

    JavaScript实现最简单的拖拽效果 HTML5 drag & drop 拖拽与拖放简介 基于HTML5 dr...

  • HTML5拖拽drag

    通过拖拽实现页面元素的位置改变 实现拖拽效果 源元素 - 要拖拽的文件 目标元素 - 要拖拽到哪里去 目前实现拖拽...

  • 仿网易新闻添加栏目和拖拽栏目效果(一)

    今天偶然在apkbus上看到了以下栏目拖拽功能,我们也化繁为简,一步一步来简单实现。第一步,实现拖拽;第二步,拖拽...

  • ItemTouchHelper 实现交互动画

    目录介绍 01.拖拽需要实现功能 02.几个重要的方法说明 03.简单实现思路 04.拖拽效果上优化 05.完整代...

  • iOS图片裁切

    效果图 实现思路 拖拽裁切这种实现比较简单,在imageView上添加一个拖拽手势,当手势开始的时候记录起点,当手...

网友评论

      本文标题:拖拽的简单实现

      本文链接:https://www.haomeiwen.com/subject/oaxilftx.html