我有一个可调整大小且可拖动的盒子(灰色)。可以通过从角落拉伸盒子来调整盒子的大小。
我想确保在任何一点上,内部灰色框不能被拖到外部黄色框之外。内部灰色框的边缘应该最大,触摸外部黄色框的边缘。
我的代码在这里。 http://jsfiddle.net/akashdmukherjee/sa44ks9u/4/
HTML:
<div id="outer" style="background-color: yellow; width: 600px; height: 400px; margin-left: 40px; margin-top: 50px;">
<div class="draggable_div rot">
<div class="rotatable">
<div id="inner" class="resizable" style="background-color: #3C3C3C; width: 300px; height: 300px;">
</div>
</div>
</div>
</div>
<div id="x_and_y_of_inner">Left: , Right: </div>
JS:
$('.draggable_div').draggable();
$( ".draggable_div" ).draggable({
drag: function( event, ui ) {
var left_most_cordinates = $("#outer").offset().left;
var top_most_cordinates = $("#outer").offset().top;
$("#x_and_y_of_inner").text( "Left: " + left_most_cordinates + " Top: " + top_most_cordinates );
ui.position.left = Math.min( left_most_cordinates, ui.position.left );
ui.position.top = Math.min( top_most_cordinates, ui.position.top );
}
});
$('.resizable').resizable({
aspectRatio: true,
handles: 'ne, se, sw, nw'
});
$(document).on('mouseover', '.rot', function(){
var tc = $(this);
tc.rotatable({
handle:tc.children('.rotate.left, .rotate.right')
});
return true;
});
CSS:
.draggable_div
{
position: relative;
display: -moz-inline-stack;
display: inline-block;
vertical-align: top;
zoom: 1;
*display: inline;
cursor: hand;
cursor: pointer;
}
.resizable
{
width: 50%;
border: 1px solid #bb0000;
}
.resizable img
{
width: 100%;
}
.ui-resizable-handle
{
background: #f5dc58;
border: 1px solid #FFF;
width: 9px;
height: 9px;
z-index: 2;
}
.ui-resizable-se
{
right: -5px;
bottom: -5px;
}
.ui-rotatable-handle
{
background: #f5dc58;
border: 1px solid #FFF;
border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
-webkit-border-radius: 5px;
cursor: pointer;
height: 10px;
left: 50%;
margin: 0 0 0 -5px;
position: absolute;
top: -5px;
width: 10px;
}
.ui-rotatable-handle.ui-draggable-dragging
{
visibility: hidden;
}
答案 0 :(得分:2)
使用resizable
的 containment
属性,使其在parent
$('.resizable').resizable({
aspectRatio: true,
containment:'#outer', //outer is the id of its root parent
handles: 'ne, se, sw, nw'
});
<强> DEMO 强>
答案 1 :(得分:0)
您需要相应地设置选项maxWidth
和maxHeight
。这两个选项都接受绝对值,因此将值设置为width
元素的height
和parent
。
试试这个:
$('.resizable').resizable({
maxWidth: $('#outer').width(),
maxHeight: $('#outer').height()
});