【问题标题】:Flexbox adjust height of the img after div rotateFlexbox在div旋转后调整img的高度
【发布时间】:2021-07-12 21:14:13
【问题描述】:

这是我的代码笔:https://codepen.io/Johngtrs/pen/oNWLYEw

当我点击旋转按钮时,div img 容器旋转,但图像在另一行重叠。

如果需要,如何调整 img 的高度?

CSS:

.row-documents {
    display: flex;
    flex-direction: row;
    align-items: center;
}
.row-documents img {
    width: 615px;
}
.img-document {
    transition: all 0.3s ease;
}
.rotate-button {
    margin: 0 10px;
    width: 50px;
    display: flex;
    justify-content: center;
}

HTML:

<div>
  <div class="row-documents">
    <div class="img-document">
      <img src="https://picsum.photos/1300/740" class="img-responsive">
    </div>

    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>

    <div class="img-document">
      <img src="https://picsum.photos/1300/740" class="img-responsive">
    </div>

    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>
  </div>

  <hr />

  <div class="row-documents">
    <div class="img-document">
      <img src="https://picsum.photos/1300/740" class="img-responsive">
    </div>
    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>
    <div class="img-document">
      <img src="https://picsum.photos/1300/740" class="img-responsive">
    </div>
    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>
  </div>

</div>

【问题讨论】:

  • 当我用 HTML 检查器 (FF) 检查时,我看到
    .img-document 被转换,而不是图像 .img-responsive。您如何(自动)调整 .img-document 的大小以使图像适合?

标签: css flexbox


【解决方案1】:

目前你不能只使用 Css 来做到这一点

您可以检查您的图像是否为纵向格式,并更改父级的高度

$('.btn-rotate').on('click', function () {
  let $img = $(this).parent().prev();
  let width = $img.width();
  let height = $img.height();
  let angle = ($img.data('angle') + 90) || 90;
  let scale = height < width ? height / width : width / height;
  if (angle % 180) {
    $img.css({'transform': 'rotate(' + angle + 'deg) scale('+ scale +')'});
    $img.data('angle', angle);
  }
  else {
    $img.css({'transform': 'rotate(' + angle + 'deg) scale(1)'});
    $img.data('angle', angle);
  }
})
.row-documents {
  display: flex;
  flex-direction: row;
  align-items: center;
}

.row-documents img {
  max-width: 215px;
  max-height: 200px;
}

.img-document {
  transition: all 0.3s ease;
  transform-origin: center center;
  display: flex;
  justify-content: center;
}

.rotate-button {
  margin: 0 10px;
  width: 50px;
  display: flex;
  justify-content: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div>
  <div class="row-documents">
    <div class="img-document">
      <img src="https://picsum.photos/1300/740" class="img-responsive">
    </div>

    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>

    <div class="img-document">
      <img src="https://picsum.photos/740/1300" class="img-responsive">
    </div>

    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>
  </div>

  <hr />

  <div class="row-documents">
    <div class="img-document">
      <img src="https://picsum.photos/1300/740" class="img-responsive">
    </div>
    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>
    <div class="img-document">
      <img src="https://picsum.photos/1300/740" class="img-responsive">
    </div>
    <div class="rotate-button">
      <button class="btn btn-default btn-rotate">
        Rotate
      </button>
    </div>
  </div>

</div>

【讨论】:

  • 谢谢你的回答,好的,我知道没有 JS 我不能这样做。对此没有自适应布局。我想我会尝试修改图像高度而不是行或两者都修改,但我认为我需要为行设置一个最大高度,因为如果我收到大高度图像,它会很脏
  • 如果图像以纵向方向开始,我会遇到问题。图像将与按钮重叠
  • 我编辑它以检查$img.width() &gt; $img.height()
  • 我认为它不起作用,试试这张图片https://picsum.photos/740/1500
  • 哦,是的,我的错我添加了一个垂直图像检查,检查它并告诉我这是否适合您的需求
猜你喜欢
  • 2013-10-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多