Div的定位

时间:2014-01-24 06:57:22

标签: javascript jquery html css position

我的工作中有一个问题,请查看

这是我的Js小提琴Demo

我有一个名为 Dekey 的可拖动Div,最初我设置了固定的topLeft.。最初你可以看到Draggable div触及Mountain's peek。当我单击下方的创建按钮时,图像会变焦并且可拖动div的位置会发生变化。我不想从正确的位置改变可拖动的div。我怎么能这样做

HTML

<div id="conainter" style="width: 500px; height: 300px; background: gray; position: relative; text-align: center;">

    <div style="width: auto; height: auto; background: blue;" id="divSpot">
        <img src="http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg" style="max-width: 400px; max-height: 400px;" id="image">
        <div id="draggable" class="ui-widget-content" style="background: rgba(255, 85, 85, 0.5); z-index: 1; cursor: move; position: absolute; top:83px; left:127px; ">
            <p>Dekey</p>
        </div>
    </div>

</div>




<a href="javascript:;" class="ui-button" id="create-spot-btn">create</a>

Jquery的

$(function() {
$( "#draggable" ).resizable({ containment: '#conainter>#divSpot'});
$( "#draggable" ).draggable({ containment: '#conainter>#divSpot'});


$('#image').load(function(){

    $("#create-spot-btn").click(function(){
        var scale = 1.2
        $('#divSpot').css('transform', 'scale(' + scale + ')');
        $('#divSpot').children('div').css('transform', 'scale(' + 1/scale + ')');

    });
});


});

CSS

#draggable { width: 50px; height: 50px; padding: 0.5em; }

2 个答案:

答案 0 :(得分:2)

删除以下行。

$('#divSpot').children('div').css('transform', 'scale(' + 1/scale + ')');

这会导致第二次可拖动div的缩放。

当您为id="divSpot"应用缩放时,它会自动缩放内部元素,因此您无需再为子元素提供缩放。

<强> DEMO

答案 1 :(得分:1)

我想你必须做一些数学运算..

由于可拖动框的大小为59,大小乘数为.2(1.2-1)。因此,规模后箱子的总体增加量为59 * .2 = 11.8。我们将采取一半,因为增加是双方。对于定位,我们将可拖动框从左侧增加一半。 因此,我们将向左上角重新定位5.9单位。请验证一下,我可能错了。 Check this fiddle

我添加了以下这些行: -

var pos = $('#draggable').offset();

   $('#draggable').offset({top: pos.top - 5.9, left: pos.left - 5.9});

谢谢