js拖拽之二:实现拖动元素上下左右改变元素大小
2018-03-31 13:30
1031 查看
具体原理参考js拖拽一
<script> var oDiv = document.getElementById("div1"); oDiv.onmousedown = function(ev){ //鼠标按下时保存当前鼠标的位置和元素的offset之间的差值 ev = ev||event; var disX = ev.clientX - oDiv.offsetLeft; var disY = ev.clientY - oDiv.offsetTop; var oldX = ev.clientX; var oldY = ev.clientY; document.onmousemove = function(ev){ //鼠标移动时赋予元素新的位置和宽度 ev = ev||event; if(disX<=20){ //当鼠标向左拖动时 oDiv.style.left = oDiv.offsetLeft + (ev.clientX - oldX)+'px'; //元素当前的left值(此时ev.clientX - oldX为负值) oDiv.style.width = oDiv.offsetWidth - (ev.clientX - oldX)+'px'; //元素当前的宽度 } else if(disX>=(oDiv.offsetWidth-20)){ //当鼠标向右拖动时 oDiv.style.width = oDiv.offsetWidth + (ev.clientX - oldX)+'px'; disX = ev.clientX - oDiv.offsetLeft; } if(disY<=20){ //当鼠标向上拖动时(此时ev.clientX - oldX为负值) oDiv.style.top = oDiv.offsetTop + (ev.clientY - oldY)+'px'; oDiv.style.height = oDiv.offsetHeight - (ev.clientY - oldY)+'px'; } else if(disY>=(oDiv.offsetHeight-20)){ //当鼠标向下拖动时 oDiv.style.height = oDiv.offsetHeight + (ev.clientY - oldY)+'px'; disY = ev.clientY - oDiv.offsetTop; } oldX = ev.clientX; oldY = ev.clientY; } document.onmouseup = function(){ document.onmouseup = document.onmousemove = null; } } </script>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/bd3c081c978284835266cf38ea9ce18a)
初始状态:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/30308d49953bc9f56c3f107837f7b499)
当向左拖动元素时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/3fef8003b697398da9636b4ce0318406)
当向右拖动元素时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/32782515ed77178946c27e3cc7ba8acc)
当向上拖动元素时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/efcf46110f5a3d00fd709b67197c2f68)
当向下拖动元素时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/681ab64d310939f050355184389f44b4)
(前端小白,如有错误,欢迎指正~~)
<script> var oDiv = document.getElementById("div1"); oDiv.onmousedown = function(ev){ //鼠标按下时保存当前鼠标的位置和元素的offset之间的差值 ev = ev||event; var disX = ev.clientX - oDiv.offsetLeft; var disY = ev.clientY - oDiv.offsetTop; var oldX = ev.clientX; var oldY = ev.clientY; document.onmousemove = function(ev){ //鼠标移动时赋予元素新的位置和宽度 ev = ev||event; if(disX<=20){ //当鼠标向左拖动时 oDiv.style.left = oDiv.offsetLeft + (ev.clientX - oldX)+'px'; //元素当前的left值(此时ev.clientX - oldX为负值) oDiv.style.width = oDiv.offsetWidth - (ev.clientX - oldX)+'px'; //元素当前的宽度 } else if(disX>=(oDiv.offsetWidth-20)){ //当鼠标向右拖动时 oDiv.style.width = oDiv.offsetWidth + (ev.clientX - oldX)+'px'; disX = ev.clientX - oDiv.offsetLeft; } if(disY<=20){ //当鼠标向上拖动时(此时ev.clientX - oldX为负值) oDiv.style.top = oDiv.offsetTop + (ev.clientY - oldY)+'px'; oDiv.style.height = oDiv.offsetHeight - (ev.clientY - oldY)+'px'; } else if(disY>=(oDiv.offsetHeight-20)){ //当鼠标向下拖动时 oDiv.style.height = oDiv.offsetHeight + (ev.clientY - oldY)+'px'; disY = ev.clientY - oDiv.offsetTop; } oldX = ev.clientX; oldY = ev.clientY; } document.onmouseup = function(){ document.onmouseup = document.onmousemove = null; } } </script>
初始状态:
当向左拖动元素时:
当向右拖动元素时:
当向上拖动元素时:
当向下拖动元素时:
(前端小白,如有错误,欢迎指正~~)
相关文章推荐
- JS实现拖动元素分界改变元素大小
- jQuery实现动态分割div—通过拖动分隔栏实现上下、左右动态改变左右、上下两个相邻div的大小
- JS实现左右拖动改变内容显示区域大小的方法
- JS实现左右拖动改变内容显示区域大小的方法
- js拖拽之四:右下角拖拽改变元素大小
- JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
- 关于js拖拽功能,拖拽元素的position:fixed;left:0;right:0;样式引起左右拖动元素会出现落后鼠标移动距离的问题
- js通过八个点 拖动改变div大小的实现方法
- node-webkit学习之【无边框窗口用JS实现拖动改变大小等】
- 鼠标拖动改变DIV等网页元素的大小的实现方法
- JS—实现元素上下左右移动
- js通过八个点 拖动改变div大小的实现方法
- Js - 可拖动可改变大小div的实现代码
- 利用JavaScript实现拖拽改变元素大小
- node-webkit无边框窗口用纯JS实现拖动改变大小
- JQuery拖拽元素改变大小尺寸实现代码
- JS 实现 ResizeBar,可拖动改变两个区域(带iframe)大小
- JS实现基于拖拽改变物体大小的方法
- JS实现拖动div改变大小