我正在使用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)
@R_301_323@
jQuery的draggable通过操纵css top和left值来工作.如果框中设置了顶部和底部值(并且没有静态高度),则框将拉伸以匹配两个属性.这就是导致调整大小的原因.
@R_301_323@可能是在框上设置静态高度,或者如果这不是一个选项,则在创建draggable时将底部值设置为“auto”,并同时获取当前的“top”位置以确保元素保持不变.
$('.dragBox').draggable({ create: function( event,ui ) { $(this).css({ top: $(this).position().top,bottom: "auto" }); } });