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

来源:互联网 发布:美国情景喜剧排行知乎 编辑:程序博客网 时间:2024/06/08 17:36

第一次使用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 0
原创粉丝点击