在父元素范围内任意拖动子元素位置

上一个小demo,稍后有空会上传一个自己写的长图合成工具,里面也有这个小demo的运用


function small_down(e) {

var obig = document.getElementById("big");

var osmall = document.getElementById("small");

var e = e || window.event;

/*用于保存小的div拖拽前的坐标*/

        osmall.startX = e.clientX - osmall.offsetLeft;

osmall.startY = e.clientY - osmall.offsetTop;

/*鼠标的移动事件*/

        document.onmousemove = function (e) {

var e = e || window.event;

osmall.style.left = e.clientX - osmall.startX + "px";

osmall.style.top = e.clientY - osmall.startY + "px";

/*对于大的DIV四个边界的判断*/

            if (e.clientX - osmall.startX <= 0) {

osmall.style.left = 0 + "px";

}

if (e.clientY - osmall.startY <= 0) {

osmall.style.top = 0 + "px";

}

if (e.clientX - osmall.startX >= 250) {

osmall.style.left = 250 + "px";

}

if (e.clientY - osmall.startY >= 250) {

osmall.style.top = 250 + "px";

}

};

/*鼠标的抬起事件,终止拖动*/

        document.onmouseup = function () {

document.onmousemove = null;

document.onmouseup = null;

};

}


<div id="big">

     <div id="small" onmousedown="small_down(event)">

     </div>

</div>


#big {

margin:100px;

border:1px solid #FF3300;

width:300px;

height:300px;

position:relative;

}

#small {

background:#99CC00;

width:50px;

height:50px;

position:absolute;

cursor:pointer;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,054评论 0 2
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,899评论 0 1
  • 事件对象 鼠标事件 event.clientX在可视区中,鼠标点击的x坐标 event.clientY在可视区中,...
    LaBaby_阅读 601评论 0 1
  • 在做项目的时候会有一个弹出窗填写一些资料,在我们想修改这些列表中的内容的时候就会点击弹出框来修改内容,有时候我们一...
    花花0825阅读 1,366评论 5 2
  • window.onload = function (){var box1 = document.getElemen...
    康轩阅读 175评论 0 0