javascript – 具有绝对位置和底部属性的jQuery UI可拖动

前端之家收集整理的这篇文章主要介绍了javascript – 具有绝对位置和底部属性的jQuery UI可拖动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用jQuery UI创建一个可拖动的< div>. < div>使用CSS绝对定位到右下角或左上角:
.dragBox {
    position: absolute;
    width: 140px;
    min-height: 140px; /* I need to use min-height */
    border: 3px solid black;
    padding: 10px;
}
.bottom {
    bottom: 5px; /* causes Box to resize when dragged */
    right: 5px;
}
.top {
    top: 5px; /* does not cause Box to resize */
    left: 5px;
}

HTML看起来像这样:

<div class="dragBox bottom">
    Bottom Box :(
</div>
<div class="dragBox top">
    Top Box :)
</div>

JavaScript是$(‘.dragBox’).draggable();制作< div>可拖动的元素.左上角< div>按预期工作,但右下角< div>拖动时调整大小.如果我将.dragBox的最小高度更改为高度,我会看到两个框的预期行为,但我需要使用min-height,因为我不知道内部内容的长度.

如何定位< div>在右下方并启用拖动而不使用< div>拖动时调整大小?左上角和右下角< div>元素的行为方式应该相同.

DEMO(我使用的是Chrome 27和Safari 6)

解决方法

jQuery的draggable通过操纵css top和left值来工作.如果框中设置了顶部和底部值(并且没有静态高度),则框将拉伸以匹配两个属性.这就是导致调整大小的原因.

解决方法可能是在框上设置静态高度,或者如果这不是一个选项,则在创建draggable时将底部值设置为“auto”,并同时获取当前的“top”位置以确保元素保持不变.

$('.dragBox').draggable({
    create: function( event,ui ) {
        $(this).css({
            top: $(this).position().top,bottom: "auto"
        });
    }
});

http://jsfiddle.net/expqj/8/

猜你在找的jQuery相关文章