旋转图像 "overlaps" 其他 html 个元素

Rotate image "overlaps" other html elements

我想通过单击按钮来旋转图像,但是当我这样做时图像与按钮重叠。我该怎么做?

我的代码和示例 here (http://jsfiddle.net/jj03b17n/5/).

发生了什么:

我想要的:

JS轮换代码:

        $(optionsPreview.rotateRightBt).unbind("click").click(function () {
                var deg = $(optionsPreview.img).data('rotate') || 0;

                if (deg == 0) deg = 90;
                else deg = deg + 90 == 360 ? 0 : deg + 90

                $(optionsPreview.img).data('rotate', deg);

                var rotate = 'rotate(' + deg + 'deg)';
                $(optionsPreview.img).css({
                    '-webkit-transform': rotate,
                    '-moz-transform': rotate,
                    '-o-transform': rotate,
                    '-ms-transform': rotate,
                    'transform': rotate
                });
                return false;
            });

您可以通过获取图像的当前大小使用 jQuery 设置 .tdBarPreviewmargin-top,例如,如果图像根本没有缩放,则以下会工作,现在当图像被缩放时,获取它的大小并相应地更改以下 margin-top 属性。

.tdBarPreview
{ 
    display:block;
    margin-top:20px;
}

@Ninita,当您尝试使用 css 旋转来旋转元素时,旋转的轴心位于元素的中心。如果您查看您的 jsfiddle 代码 (http://jsfiddle.net/bjLqztdw/),旋转的枢轴点位于中心,即黄色 'O' 所在的位置。

您可以更改枢轴的位置,以便旋转会根据枢轴位置而变化。

要更改枢轴位置,您必须使用“-webkit-transform-origin”样式。

更新了您的 JSfiddle (http://jsfiddle.net/bjLqztdw/1/)。您可以尝试更改枢轴点。

$(optionsPreview.img).css({
 '-webkit-transform': rotate,
 '-moz-transform': rotate,
 '-o-transform': rotate,
 '-ms-transform': rotate,
 'transform': rotate,
 '-webkit-transform-origin': '90% 30%',
});

参考:

已解决!我使用 JS 将图像容器高度更改为其旋转。因此,当图像处于垂直位置时,图像容器高度会更改为图像宽度。像这样 (JSFiddle):

$(optionsPreview.rotateRightBt).unbind("click").click(function () {
    var deg = $(optionsPreview.img).data('rotate') || 0;

    if (deg == 0) deg = 90;
    else deg = deg + 90 == 360 ? 0 : deg + 90

    $(optionsPreview.img).data('rotate', deg);

    var rotate = 'rotate(' + deg + 'deg)';
    $(optionsPreview.img).css({
        '-webkit-transform': rotate,
        '-moz-transform': rotate,
        '-o-transform': rotate,
        '-ms-transform': rotate,
        'transform': rotate
    });

    if (deg == 90 || deg == 270) {
        var width = $(optionsPreview.img).width();
        $($(optionsPreview.img).parent()).css("height", width + "px");
    }
    else
        $($(optionsPreview.img).parent()).css("height", "auto");

    return false;
});