【问题标题】:jQuery UI Resizable - Multiple DIVs Resizing Pushing Other DIVs AroundjQuery UI Resizable - 多个 DIV 调整大小推动其他 DIV
【发布时间】:2013-09-06 16:01:05
【问题描述】:

我一直在玩一个页面,该页面有一个包含多个其他 div 和 jQuery UI 可调整大小的 div。它基本上是一个带有单独小部件的仪表板。我需要的是能够独立于包含 div 中的每个其他 div 来调整每个单独的“小部件”div 的大小。

目前,如果我调整一个 div 的大小,它会将其他 div 推开。我需要调整 div 的大小并让它不影响其他 div(即使正在调整大小的 div 落后于或超过任何其他 div 的顶部)。在尝试了许多不同的事情之后,我无法实现它。

我创建了一个 jsFiddle (http://jsfiddle.net/gattml/Th75t/),它显示了我迄今为止的模型。

这里有一些sn-ps:

<div class="carousel-inner">
    <div class="item">

    <div class="widgetList">
        <div class="widgetRefresh">
            <div class="widgetResizable">
                <div class="widget-header">
                    <span>header1</span>
                </div>
                <div class="widget-body">
                    <span>body1</span>
                </div>
            </div>
        </div>
    </div>

    ...other "widget" divs here...

    </div>
</div>

.carousel-inner {
    position: relative;
    width: 100%;
    overflow: hidden;
    outline: 1px solid red;
}

.item {
    left: 0;
    display: block;
    position: relative;
    outline: 1px solid blue;
}

.widgetList {
    background-color: #f5f5f5;
    display: inline-block;
    margin: 1em;
    position: relative;
    vertical-align: top;
    min-width: 80px;
    outline: 1px solid green;
}

.widgetResizable {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    min-width: 80px;
    overflow: hidden;
    outline: 1px dashed red;
}

.widget-header {
    outline: 1px dashed blue;
}

.widget-body {
    overflow: hidden;
    width: auto;
    height: 100px;
    padding: 4px;
    outline: 1px dashed green;
}

var $widget = $(".widgetList");
var $widgetResizable = $widget.find(".widgetResizable");
$widgetResizable.css("height", "170px");
$widget.draggable({
    cursor: "move",
    grid: [4, 4],
    handle: ".widget-header",
    opacity: 0.85,
    zIndex: 100
});
$widgetResizable.resizable({
    grid: [4, 4],
    handles: "e, s, se",
    minHeight: 100,
    minWidth: 80
});

那么,我怎样才能实现我的可调整大小的“小部件”div,以便它们不会推挤其他“小部件”div?

谢谢!

【问题讨论】:

    标签: jquery css jquery-ui html


    【解决方案1】:

    你的盒子必须是绝对的。您可以在 start:function(){} 上添加我推荐的类,也可以添加 css 属性。您还需要添加一个 z-index 值以使您的框位于其他框之上。

    http://jsfiddle.net/Th75t/7/

    start:function(event,ui){
            ui.element.css('position','absolute');
        }
    

    更好

    start:function(event,ui){
            ui.element.addClass('active');
        }
    

    【讨论】:

    • 感谢您的回答。我试过你的建议,它几乎可以工作。我不得不将开始事件更改为: ui.element.parents('.widgetList').css('position', 'absolute').css('z-index', 1000);因为 .widgetList 容器类有点搞砸了,我失去了容器和边框。但是,我说您的解决方案“几乎有效”的主要原因是,当我调整小部件 div 的大小时,所有其他 div 都会移动,以便在位置 0、0 处始终存在一个(直到我调整大小并将它们全部移动)。我想我需要从一开始(或其他)绝对定位所有小部件 div。
    • 您可以 clone() 移动的 DIV,将其附加到 .after() 当前动画 DIV 并将克隆的 DIV 设置为可见性:隐藏;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    相关资源
    最近更新 更多