如何在HTML页面上自由移动DIV组件?

第一次使用CSDN自带markdown编辑器,界面不对,请谅解!

如何在HTML页面上自由移动DIV组件?

原理:所谓的div移动,是指div不停的变化和刷新位置坐标。

解决步骤:

  1. 鼠标点击,获取需要移动的DIV DOM对象。
  2. 鼠标移动,计算移动值后调整DIV的位置。

代码示例:

$("#"+this.props.softwareID).mousemove(function (event) {
            if (clicked == "none") {
                return;
            }
            mausx = event.pageX;
            mausy = event.pageY;
            winx = $("#"+clicked).offset().left;
            winy = $("#"+clicked).offset().top;
            difx = mausx - old_mausx;
            dify = mausy - old_mausy;
            old_mausx = mausx;
            old_mausy = mausy;

            var newx = winx + difx - $("#"+clicked).css("marginLeft").replace('px', '');
            var newy = winy + dify - $("#"+clicked).css("marginTop").replace('px', '');
            if (clicked != "none") {
                $("#"+clicked).css({ top: newy, left: newx });
            }
        });

        $("#"+this.props.softwareID).mousedown(function (event) {
            console.log("mousedown:" + event.target.parentNode.parentNode.id);
            clicked = event.target.parentNode.parentNode.id;
            old_mausx = event.pageX;
            old_mausy = event.pageY;
            setMaxZIndex(clicked);
        });

        $("#"+this.props.softwareID).mouseup(function (event) {
            console.log("mouseup:" + event.target.id);
            clicked = "none";
        });

当存在多个DIV时,注意重叠问题,通过修改zIndex进行重叠处理,保持移动对象始终保持最上层显示。

function setMaxZIndex(o) {
            console.log("setMaxZIndex: " + $("#"+o).css('zIndex'));
            var zMax = 0;
            $(".window").each(function(index){
                zMax = this.style.zIndex > zMax ? this.style.zIndex : zMax;
            });
            if ($("#"+o).css('zIndex') < zMax) {
                zMax++;
                console.log("zMax: " + zMax);
                $("#"+o).css({zIndex: zMax  });
            }
        }    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值