zoukankan      html  css  js  c++  java
  • 独创轻松实现拖拽,改变层布局

    通过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>
  • 相关阅读:
    软考-高项
    Env Navigator项目设计
    传统Winform系统的转小程序化设想
    .net 混淆和反混淆工具
    ObjectListView 使用技巧
    Dapr资料汇总
    Keycloak保护Spring Boot Restful API接口
    将B站英语教学视频转成mp3和课件
    Java: 如何将XML格式化
    Java: 非泛型类如何设计List<T>这样的属性
  • 原文地址:https://www.cnblogs.com/winvay/p/5749800.html
Copyright © 2011-2022 走看看