js拖拽之二:实现拖动元素上下左右改变元素大小

具体原理参考 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>


初始状态:

当向左拖动元素时:

当向右拖动元素时:

当向上拖动元素时:

当向下拖动元素时:

(前端小白,如有错误,欢迎指正~~)
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值