2013-04-29 130 views
0

我正在嘗試旋轉和調整元素(我的roomplanner中的'傢俱')。 每個元素(圖像)都有一個div包裝。這個div是可拖動的,圖像可以旋轉。有一個第二個div包裹在我用來調整大小的圖像上。位置旋轉div

<div class="element furniture" height="53" width="146"> 
    <div class="imageholder"> 
     <img width="146" height="53" src="/images/furniture/bankstel_3zits.png" /> 
    </div> 
</div> 

旋轉之後,我將div的高度設置爲圖像的寬度,將div的寬度設置爲圖像的高度。但是,當我旋轉,div的是在另一個位置,然後內部的圖像..我嘗試使用邊距,但我想這不是正確的解決方案?

我設置一個例子: http://jsfiddle.net/Hqcnh/6/

+0

默認情況下此小提琴,你的形象是圍繞其旋轉中心點。你爲什麼不旋轉整個div而不是內部的圖像? – ahren 2013-04-29 10:40:27

+0

那麼,首先我旋轉整個div,但然後我有一個調整大小的問題..(手柄不會旋轉) – 2013-04-29 11:13:12

回答

1

旋轉父格,其他的一切都會旋轉

$(document).ready(function() { 
    $('.rotate').click(function() { 
     Rotate(); 

    }); 
    function Rotate(){ 
     var clickedElement = $('.element.furniture'); 
     var imageHolder = clickedElement.find('.imageholder'); 
     var clickedElementToRotate = $('.element.furniture'); 

     var degrees = 90; 
     if (typeof (clickedElementToRotate.attr('rotate')) !== 'undefined') { 
      degrees = parseFloat(clickedElementToRotate.attr('rotate')) + 90; 
     } 

     clickedElementToRotate.attr('rotate', degrees); 
     clickedElementToRotate.cssrotate(degrees); 

     if (degrees == 90 || degrees == 270) { 
      clickedElementToRotate.attr('data-width', clickedElementToRotate.height()).attr('data-height', clickedElementToRotate.width()); 
     } else { 
      clickedElementToRotate.attr('data-width', clickedElementToRotate.width()).attr('data-height', clickedElementToRotate.height()); 
     } 



    } 
    $("div.element.furniture").each(function() { 
     var div = $(this); 
     var img = $(this).find('img'); 

     div.draggable(); 
     div.css('border', '1px solid red'); 
     div.width(img.width()); 
     div.height(img.height()); 

     img.wrap('<div class="imageholder" />'); 
     div.find('.imageholder').css('border', '1px solid blue').css('width', div.width()); 
     div.find('.imageholder').css('height', div.height()); 

     div.find('.imageholder').resizable({ 
      handles: "n, e, s, w", 
      aspectRatio: true, 
      resize: function (event, ui) { 

       if (img.attr('rotate') == 90 || img.attr('rotate') == 270) { 
        img.css('width', ui.size.height); 
        img.css('height', ui.size.width); 
       } else { 
        img.css('width', ui.size.width); 
        img.css('height', ui.size.height); 
       } 

       div.css('width', ui.size.width); 
       div.css('height', ui.size.height); 
      } 
     }); 
    }); 
}); 


(function ($) { 
    var _e = document.createElement("canvas").width; 
    $.fn.cssrotate = function (d) { 
     return this.css({ 
      '-moz-transform': 'rotate(' + d + 'deg)', 
       '-webkit-transform': 'rotate(' + d + 'deg)', 
       '-o-transform': 'rotate(' + d + 'deg)', 
       '-ms-transform': 'rotate(' + d + 'deg)' 
     }).prop("rotate", _e ? d : null); 
    }; 
    var $_fx_step_default = $.fx.step._default; 
    $.fx.step._default = function (fx) { 
     if (fx.prop != "rotate") return $_fx_step_default(fx); 
     if (typeof fx.elem.rotate == "undefined") fx.start = fx.elem.rotate = 0; 
     $(fx.elem).cssrotate(fx.now); 
    }; 
})(jQuery); 

看到這裏FIDDLE

+0

Thnx,但現在我有一個調整大小的問題..(手柄不旋轉),這就是爲什麼我只旋轉圖像。 – 2013-04-29 11:13:43