jquery单元素拖动框选对齐效果代码

代码语言:html

所属分类:选择器

代码描述:jquery单元素拖动框选对齐效果代码

代码标签: 元素 ) 拖动 框选 对齐 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>
    <style>
        #toolbox {
            height: 120px;
            display: block;
        }
 
        #room {
            height: 500px;
        }
 
        .table {
            background-color: cornflowerblue;
            position: absolute;
            cursor: move;
            -moz-user-select: none;
            -ms-user-select: none;
            -webkit-user-select: none;
            user-select: none;
        }
 
        .vertical {
            width: 100px;
            height: 50px;
        }
 
        .horizontal {
            width: 50px;
            height: 100px;
        }
 
        #toolbox, #room {
            position: relative;
            border: 1px solid black;
            -moz-user-select: none;
            -ms-user-select: none;
            -webkit-user-select: none;
            user-select: none;
        }
 
        .selectrect {
            border: 1px solid black;
            position: relative;
        }
 
        #room .table.selected {
            border: 1px solid #4e4e4e;
        }
    </style>
</head>
<body>
    <div>
        <a id="btntopalign">上边对齐</a>
        <a id="btnleftalign">左边对齐</a>
        <a id="btnbottomalign">下边对齐</a>
        <a id="btnrightalign">右边对齐</a>
    </div>
    <div style="margin:20px;">
        <div id="toolbox">
 
            <div class="table horizontal" style="top:10px;left:10px;">
 
            </div>
 
            <div class="table vertical" style="top:10px;left:220px;">
 
            </div>
 
        </div>
        <div id="room">
 
 
        </div>
    </div>
    <script>
        $(function () {
            var selectedTool = {};
            $("#toolbox .table").mousedown(function (e) {//工具栏选择图形
                var $toolbox = $("#toolbox");
                var $prototool = $(this);
                var $newtable = $prototool.clone();
                $newtable.css({
                    "top": "+=" + $toolbox.position().top,
                    "left": "+=" + $toolbox.position().left
                })
                selectedTool.$tool = $newtable;
                $("body").append($newtable);
                selectedTool.pageX = $newtable.position().left;
                selectedTool.pageY = $newtable.position().top;
                selectedTool.originPageX = e.pageX;//记录初始点,便于做靠近对齐
                selectedTool.originPageY = e.pageY;
            });
 
            $(document).mousemove(function (e) {//从工具栏拖出
                if (selectedTool.$tool) {
                    var deltaX = e.pageX - selectedTool.originPageX;
                    var deltaY = e.pageY - selectedTool.originPageY;
                    selectedTool.$tool.css({
                        "top": selectedTool.pageY + deltaY,
                        "left": selectedTool.pageX + deltaX
                    });
 
                    //todo 从工具栏拖的判断自动小范围对齐
                }
            })
 
            $(document).mouseup(function (e) {
                if (selectedTool.$tool) {
                    var $tool = selectedTool.$tool;
                    //todo 判断释放位置,做安全处理
                    var $room = $("#room");
                    $tool.detach();
                    $tool.appendTo($room);
                    $tool.css({
                        "top": "-=" + $room.position().top,
                        "left": "-=" + $room.position().left
                    });
                    setTimeout(function () {
                        $tool.Drag({ container: "#room", selector: ".table" });
                    })
 
                    selectedTool = {};
                }
            })
 
            $("#room").Selectable({ selector: ".table" });
 
            $("#btntopalign").click(function () {//对 选中的div 上边对齐
                var selecteds = $("#room").find(".selected");
                var maxtop = 100000;
                selecteds.each(function (index,item) {
                    var crttop = $(item).position().top;
                    maxtop = Math.min(maxtop, crttop);
                })
                selecteds.each(function (index, item) {
                    $(item).css("top", maxtop);
                })
            })
 
            $("#btnleftalign").click(function () {
                var selecteds = $("#room").find(".selected");
                var maxleft = 100000;
                selecteds.each(function (index, item) {
                    var crtleft = $(item).position().left;
                    maxleft = Math.min(maxleft, crtleft);
                })
                selecteds.each(function (index, item) {
                    $(item).css("left", maxleft);
                })
            })
 
            $("#btnrightalign").click(function () {
                var selecteds = $("#room").find(".selected");
                var maxleft = 0;
                selecteds.each(function (index, item) {
                    var crtleft = $(item).position().left + $(item).width();
                    maxleft = Math.max(maxleft.........完整代码请登录后点击上方下载按钮下载查看

网友评论0