美文网首页
可拖动盒子

可拖动盒子

作者: 莣忧草_3b53 | 来源:发表于2019-07-24 22:22 被阅读0次

发现很多都写得比较模糊,对于这个。我还是系统的总结一下。


image

结果是这个图片

1.我们先得进行观察

拖拽行为一共触发了三个事件
鼠标按下—onmousedown
鼠标移动—onmousemove
鼠标弹起—onmouseup

2.对于效果实现方式。

获取信息

获取最开始鼠标开始拖动的位置,x轴位置,y轴位置。怎么获取呢?
我们也要获取盒子的位置,大小等信息。这里只是做一个说明。接下来解释代码。

var Box=document.getElementById('box');//获取我们要拖动的盒子
Box.onmousedown=function(ev){};//这里是当我们鼠标按下时候,进行读取信息
var iEvent=ev || event; //这里为了考虑兼容性
var disX=iEvent.clientX;//这里读取鼠标按下的x轴位置
var disY=iEvent.clientY;//这里读取鼠标按下的y轴位置
var disW=Box.offsetWidth;//这里读取盒子整个元素的宽度(不包括变宽的宽度)
var disH=Box.offsetHeight;//这里读取盒子整个元素的高度
var OFFLeft=Box.offsetLeft;//相对于最近的祖先定位元素的x距离
var OOFTop=Box.offsetTop;//相对于最近的祖先定位元素的y距离
设置感应区

我们会发现不是所有地方都能拖动,只有在一定的范围内盒子才能拖动

//x值范围在盒子周围20px范围之内
if(iEvent.clientX>Box.offsetLeft+Box.offsetWidth-20){
    Box.style.cursor='w-resize';
    box.style.borderRight='20px solid coral';
    b='right';
};
if(iEvent.clientX<Box.offsetLeft+20){
    Box.style.cursor='w-resize';                        
    box.style.borderLeft='20px solid #de5145';
    b='left';
}
//y值范围在盒子周围20px范围之内
if(iEvent.clientY<Box.offsetTop+20){
    Box.style.cursor='s-resize';
    box.style.borderTop='20px solid #f05b4e';
    b='top';
}
if(iEvent.clientY>Box.offsetTop+Box.offsetHeight-20){
    b='bottom';
    Box.style.cursor='s-resize';
    box.style.borderBottom='20px solid coral';
}

相关文章

  • 可拖动盒子

    发现很多都写得比较模糊,对于这个。我还是系统的总结一下。 结果是这个图片 1.我们先得进行观察 拖拽行为一共触发了...

  • 用js实现一个简单的拖拽条

    实现思路是:因为能够拖动,所以是相对于一个盒子定位的,拖动的时候走过的总距离是父盒子的总长度 - 定位盒子的长度。...

  • 8、常用css3属性

    1、resize:规定是否可以拖动盒子 要和overflow搭配使用(值随意) 属性值:none; 不可拖动(一般...

  • 旋转的盒子(纯CSS动画效果)+可自由拖动(js)

    效果是一个旋转的盒子,他会展开六个面,展开结束后,会旋转,鼠标移动上去会变色; demo网址: http://ji...

  • H5拖拽元素

    为了让元素可拖动,需要设置元素的draggable=true属性。链接和图片默认是可拖动的,不需要 draggab...

  • android进度条seekbar自定义样式

    SeekBar是ProgressBar的扩展,在其基础上增加了一个可拖动的thumb(注:就是那个可拖动的图标)。...

  • 拖动属性draggable

    一个奇怪的现象:代码如下,设置div是可拖动的,拖动div时会触发dragStart事件 奇怪的现象如下:当拖动a...

  • 可拖动的label

  • 可拖动的View

    使用动画实现View的拖动 重写View中onTouchEvent方法,通过getRawX()和getRawY()...

  • 可拖动的button

    根据拖动手势的实时位置实现可拖动的button代码如下: demo地址:https://github.com/so...

网友评论

      本文标题:可拖动盒子

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