2013-04-29 5 views
0

Я пытаюсь повернуть и изменить размеры элементов («мебель» в моем плане помещения). Каждый элемент (изображение) имеет завернутый 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 находится на другой позиции, а затем внутри. Я пытался работать с полями, но я думаю, что это не правильное решение?

я установка пример: http://jsfiddle.net/Hqcnh/6/

+0

По умолчанию, изображение вращается вокруг его Центральная точка. Почему бы вам не вращать весь «div», а не только изображение внутри? – ahren

+0

Ну, сначала я повернул весь div, но потом у меня проблема с изменением размера .. (ручки не вращаются) –

ответ

1

Поверните родительский DIV, все остальное будет вращаться

$(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, но теперь у меня проблема с изменением размера .. (ручки не будут вращаться), вот почему я только повернул изображение. –