【问题标题】:How to set flex item height equally [duplicate]如何平等地设置弹性项目高度[重复]
【发布时间】:2018-02-18 01:20:15
【问题描述】:

我有一个弹性盒容器和两个弹性盒项目:item-imgitem-contentitem-img 里面有一张图片。我希望item-img 的高度等于item-content 的高度,并且图像将覆盖它的所有空间。

这意味着item-img 的高度是基于 item-content 的高度设置的。 item-content 的高度不是固定的,可能比图像的高度大得多或小得多。

任何帮助将不胜感激。非常感谢。

.flex-container {
  display: flex;
  width: 500px;
  border: solid 1px #123;
}

.flex-item {
  max-width: 50%;
  overflow: hidden;
  flex-basis: 50%;
}

.item-img {
  display: flex;
}

img {
  object-fit: cover;
}
<div class="flex-container">
  <div class="flex-item item-img">
    <img src="http://via.placeholder.com/350x350">
  </div>
  <div class="flex-item item-content">
    <p>This is conent with text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p> 
  </div>
</div>

【问题讨论】:

  • 不明白你的问题。现在两个部分的高度相同。
  • @SauravRastogi 我更新了我的问题。是不是更清楚了?

标签: html image css flexbox


【解决方案1】:

height: 100%max-width: 100% 设置为img 并将图像绝对 放置在item-img 内(这样容器始终采用item-content 的高度)- 参见演示下面:

.flex-container {
  display: flex;
  width: 500px;
  border: solid 1px #123;
}

.flex-item {
  max-width: 50%;
  overflow: hidden;
  flex-basis: 50%;
}

.item-img {
  display: flex;
  position: relative;
}

img {
  /*object-fit: cover;*/
  height: 100%;
  max-width: 100%;
  position: absolute;
  top: 0;
  left: 0;
}
<div class="flex-container">
  <div class="flex-item item-img">
    <img src="http://via.placeholder.com/350x350">
  </div>
  <div class="flex-item item-content">
    <p>This is content with text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p> 
  </div>
</div>

<br/><br/>

<div class="flex-container">
  <div class="flex-item item-img">
    <img src="http://via.placeholder.com/50x50">
  </div>
  <div class="flex-item item-content">
    <p>This is content with text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p> 
  </div>
</div>

编辑:为img 添加一个容器并定位它以及object-fit: coverwidth: 100% 用于img - 下面的演示:

.flex-container {
  display: flex;
  width: 500px;
  border: solid 1px #123;
}

.flex-item {
  max-width: 50%;
  overflow: hidden;
  flex-basis: 50%;
}

.item-img {
  display: flex;
  position: relative;
}

.item-img div {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

img {
  object-fit: cover;
  width: 100%;
}
<div class="flex-container">
  <div class="flex-item item-img">
    <div>
      <img src="http://via.placeholder.com/350x350">
    </div>
  </div>
  <div class="flex-item item-content">
    <p>This is content with text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p> 
  </div>
</div>

<br/><br/>

<div class="flex-container">
  <div class="flex-item item-img">
    <div>
      <img src="http://via.placeholder.com/50x50">
    </div>
  </div>
  <div class="flex-item item-content">
    <p>This is content with text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p>
    <p>more text</p> 
  </div>
</div>

【讨论】:

  • 对不起,这不是它想要的。如果将图像大小更改为 350*350,item-img 将大于item-content。我希望他们总是平等的。
  • @Duannx 使用一些 定位 - 查看更新的答案,谢谢!
  • 不错。它似乎更接近我想要实现的目标。但是图片并没有覆盖item-img的所有空间。我认为我们应该在item-img 中添加一个 div 并覆盖图像。设置该 div 全尺寸,position: absolutedisplay: flex。现在object-fit: cover 可以工作了。您能否像这样编辑您的答案。我会接受的。
  • @Duannx 更新了答案,谢谢! :)
猜你喜欢
  • 2016-07-04
  • 2016-08-27
  • 2017-05-07
  • 2017-07-04
  • 2017-03-14
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2016-08-11
相关资源
最近更新 更多