【问题标题】:rotate img inside Panel with CSS and get the panel to update its height使用 CSS 旋转面板内的图像并让面板更新其高度
【发布时间】:2016-08-09 06:07:20
【问题描述】:

我有以下 html,它在 bootstrap 3 面板主体内显示一个 img。

我需要将图像旋转 -90 度,我使用了这个问题的答案:CSS: rotate image and align top left 以便能够将旋转后的图像与面板顶部对齐。

请注意,图像是长矩形而不是正方形,因此旋转 90 度会极大地改变宽度/高度。

<div class="panel-body">
    <div id="media_content">
        <img class="img-responsive rotate270" src="dessin-3.jpg">
    </div>
</div>

    .rotate270 {
        -webkit-transform: translateX(-100%) rotate(-90deg); /* Safari */
        -moz-transform: translateX(-100%) rotate(-90deg); /* Firefox 3.6 Firefox 4 */
        -ms-transform: translateX(-100%) rotate(-90deg); /* IE9 */
        -o-transform: translateX(-100%) rotate(-90deg); /* Opera */
        transform: translateX(-100%) rotate(-90deg); /* W3C */  
        -webkit-transform-origin: top right;
        -moz-transform-origin: top right;
        -ms-transform-origin: top right;
        -o-transform-origin: top right;
        transform-origin: top right;        
    }

现在,我的问题是图像被绘制在该面板的底部,因为该面板似乎没有“通知”图像的转换垂直尺寸。

我正在寻找让面板动态调整其高度的方法,因为我将有一个按钮,可以让用户根据需要将图像旋转 90/180/270°。 (现在我将旋转硬编码为 CSS 类...)

谢谢!

【问题讨论】:

  • 你能给我们看看你的截图吗?
  • 您是否使用 JavaScript 来设置旋转?如果是这样,您可以使用 JavaScript 调整面板的高度。
  • 我使用的不是javascript而是CSS,如上图所示。一切都在那里(除了周围的html代码,但无关紧要)。

标签: html css image twitter-bootstrap rotation


【解决方案1】:

所以这里有很多代码,因为这是一个相当繁琐的转换。代码和样式会用不同大小的图像稍微改变,但你会明白的。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

<div id="box" style="border: 2px solid red;">

<img id="img1" src="https://placehold.it/350x150">

</div>

<input id="button" type="button" value="Rotate 90 deg">

$(document).ready(function() {
    $("#box").height($("#img1").height());
    $("#box").width($("#img1").width());
    var rotation = 0;
    function turn(deg) {
        // Img height and width
        var imgH = $("img").height();
        var imgW = $("img").width();

        console.log(imgH + " " + imgW);

        // Div
        $box = $("#box");
        // Img
        $img = $("#img1");

        // Make deg less than 360
        while(deg >= 360) {
            deg -= 360;
        }

        console.log(deg);

        // Check deg, adust height and width
        if(deg == 90) {
            $img.addClass("rotate90");
            $img.removeClass("rotate2700");
            $img.removeClass("rotate180");
            $img.removeClass("rotate0");
            $box.height(imgW);
            $box.width(imgH);
        } else if .......

    }
}

您的 CSS 语法相同,但每次旋转的值不同。

JSFiddle:https://jsfiddle.net/a11sters/1/

如果您有任何问题,请发表评论。

【讨论】:

  • 好的,我检查了小提琴,它也可以按我的需要工作。如果我正确理解您的代码,那么您可以手动更新盒子的尺寸。我会在我的代码上尝试一下并告诉你:) 非常感谢!所以只是为了扩展我的知识,CSS 为我们提供了旋转等工具,但是元素本身并没有考虑到新的尺寸?
  • 不是我所知道的 CSS。 div 无法识别方向变化。它只知道图像的高度和宽度是相同的,即使角度不同。
  • 我不知道 CSS 解决方案,我研究了您的问题,但没有通过 CSS 找到解决方案,只能通过 JS。因此我给你的解决方案是 JS。
  • 没问题,如果有效,请评价为最佳答案,以便其他人看到找到的解决方案。快乐编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 2012-03-22
  • 1970-01-01
相关资源
最近更新 更多