独创轻松实现拖拽,改变层布局

通过JS实现拖拽变更层布局的代码,改变当前行的第一列,同时改变其他行的布局

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <!--引用jquery-->
     <script src="JS/jquery-1.7.1.min.js"></script>
    <script type="text/javascript">
        var srcwidth = 900;  //整个面板的宽
        var currRow = 0;  //当前操作的行
        $(function () {            
            //绑定需要拖拽改变大小的元素对象 每行的第一列 暂时支持一行两列            
            bindResize(document.getElementById('p00'));            
            bindResize(document.getElementById('p10'));
            bindResize(document.getElementById('p20'));
        });
        function bindResize(el) {
            
            var els = el.style,            
            x = y = 0;            
            $(el).mousedown(function (e) {
                currRow = el.id;
                x = e.clientX - el.offsetWidth,
                y = e.clientY - el.offsetHeight;                
                el.setCapture ? (                
                    el.setCapture(),                
                    el.onmousemove = function (ev) {
                        mouseMove(ev || event);
                    },
                    el.onmouseup = mouseUp
                ) : (                    
                    $(document).bind("mousemove", mouseMove).bind("mouseup", mouseUp)
                );                
                e.preventDefault();
            });


            //移动事件
            function mouseMove(e) {
                els.width = e.clientX - x + 'px',
                els.height = e.clientY - y + 'px';

                var cx = currRow.substr(1, 1);  //当前行
                var cy = currRow.substr(2, 1);   //当前列
                      
                
                var docCur = $("#p" + cx + cy);   //current row colum                
                docCur.css({ "width": ((parseInt(docCur.css("width").replace("px", ""))) > srcwidth ? srcwidth : (parseInt(docCur.css("width")))) });                
                var docCurCopy = docCur;

                var cya = parseInt(cy) + 1;   //当前列+1      
                var docNCol = $("#p" + cx + cya);   //next colum
                if (docNCol != null) {
                    docNCol.css({ "left": (parseInt(docCur.css("left").replace("px", ""))) + (parseInt(docCur.css("width").replace("px", ""))) });
                    docNCol.css({ "width": (srcwidth - (parseInt(docCur.css("width").replace("px", "")))) });
                    docNCol.css({ "top": (docCur.css("top")) });
                    docNCol.css({ "height": docCur.css("height") });
                }

                for (var i = 1; i < 4; i++) {
                    var cxa = parseInt(cx) + i;   //当前行+1                        
                    var docNRow = $("#p" + cxa + cy);   //next row
                    if (docNRow != null) {
                        docNRow.css({ "left": (parseInt(docCurCopy.css("left").replace("px", ""))) });
                        docNRow.css({ "top": (parseInt(docCurCopy.css("top").replace("px", ""))) + (parseInt(docCurCopy.css("height").replace("px", ""))) });

                        var docNCol = $("#p" + cxa + 1);   //next colum
                        if (docNCol != null) {
                            docNCol.css({ "left": (parseInt(docNRow.css("left").replace("px", ""))) + (parseInt(docNRow.css("width").replace("px", ""))) });
                            docNCol.css({ "width": (srcwidth - (parseInt(docNRow.css("width").replace("px", "")))) });
                            docNCol.css({ "top": (docNRow.css("top")) });
                            docNCol.css({ "height": docNRow.css("height") });
                        }
                    }
                    docCurCopy = docNRow;
                }                
                $("#megshow").html("#p" + els.width + els.height);
            }
            //停止事件
            function mouseUp() {                
                el.releaseCapture ? (                
                    el.releaseCapture(),                
                    el.onmousemove = el.onmouseup = null
                ) : (                    
                    $(document).unbind("mousemove", mouseMove).unbind("mouseup", mouseUp)
                );
            }
        }
    </script>
    <style type="text/css">
        
        #p00 { position: absolute; top: 100px; left: 200px; width: 400px; height: 300px; background: #f1f1f1; 
                text-align: center; line-height: 100px; border: 1px solid #CCC; cursor: se-resize; }
        #p01,#p11,#p21 { 
                position:absolute; top:80px; left:400px; width:200px; height:200px; background:#8a9bca; cursor:move;
        }
        #p10 { position: absolute; top: 400px; left: 100px; width: 400px; height: 300px; background: #f1f1f1; 
                text-align: center; line-height: 100px; border: 1px solid #CCC; cursor: se-resize; }
        #p20,#p30 { position: absolute; top: 400px; left: 100px; width: 400px; height: 300px; background: #f1f1f1; 
                text-align: center; line-height: 100px; border: 1px solid #CCC; cursor: se-resize; }
    </style>
</head>
<body>
    <div id="megshow"></div>
    <div id="p00">
        这是内容1
    </div>
    <div id="p01">
        这是内容2
    </div>    
    <div id="p10">
        这是内容3
    </div>
    <div id="p11">
        这是内容2
    </div>  
    <div id="p20">
        这是内容4
    </div>
    <div id="p21">
        这是内容2
    </div>
    <div id="p30">
        这是内容5
    </div>
</body>
</html>
原文地址:https://www.cnblogs.com/winvay/p/5749800.html