【问题标题】:Combine Bootstrap columns and FlexBox结合 Bootstrap 列和 FlexBox
【发布时间】:2020-04-22 10:23:33
【问题描述】:

我在这里得到了一些混合的概念。我想要实现的是,在一组引导容器中,将 flexbox 与引导列结合起来,并根据他的容器调整最后一个图像(“img-team”)的大小。他们根据宽度而不是高度调整大小。什么时候超过容器的高度才会变大。 HTML 中发生的事情是一个大容器设置了 height 属性。然后在 subdivs 中,根据 flex-grow:1 或不 flex:0 来划分空间。

假装的抽奖 我希望图像适应那个 div,而不是改变大橙色容器的高度。它目前正在工作,但不使用高度增量,仅用于宽度增量。

HTML

.img-team {
  overflow: hidden;
  height: 100%;
  width: 100%;
}
<div class="container-fluid" style="display:flex; flex-flow: column; flex: 0 0 50vh">
  <div class="container-fluid" style="display:flex; flex-flow: column; flex-grow: 1">
    <div>
      <h4 class="">TITLE</h4>
    </div>
    <div class="row" style="display:flex; flex-grow: 1">
      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
        <div style="display:flex; flex-grow: 1; flex-shrink: 1; flex-basis: 0">
          <img class="img-team" src="img/team-1.jpg" href=""></img>
        </div>
        <div>
          <h4 class="xxx">Walter White</h4>
          <h4 class="xxx">More text</h4>
        </div>
      </div>
      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
        <div style="display:flex; flex-grow: 1">
          <img class="img-team" src="" href=""></img>
        </div>
        <div>
          <h4 class="xxx">Walter White</h4>
          <h4 class="xxx">More text</h4>
        </div>
      </div>
      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
        <div style="display:flex; flex-grow: 1">
          <img class="img-team" src="" href=""></img>
        </div>
        <div>
          <h4 class="xxx">Walter White</h4>
          <h4 class="xxx">More text</h4>
        </div>
      </div>
      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
        <div style="display:flex; flex-grow: 1">
          <img class="img-team" src="" href=""></img>
        </div>
        <div>
          <h4 class="xxx">Walter White</h4>
          <h4 class="xxx">More text</h4>
        </div>
      </div>
    </div>
  </div>
</div>
  1. 没有图像。一切都合适并且进展顺利。

  2. 有图片。包含不再适合(仅适合宽度而不是高度)。这就是为什么我认为它的图像的原因。

【问题讨论】:

  • 你可以做一些努力让虚拟图像更清晰。
  • 好的,我同意。泰
  • 完成,我希望现在能更好地理解它。感谢您的建议。

标签: html css flexbox


【解决方案1】:

我不太确定您要达到的目标,但这可能会有所帮助:

  1. 检查 div .img-team-wrap 的样式,它是带有 padding-top 的图像的包装 div,在这种情况下,保持 DIV 1:1 的纵横比是 100%,您可以找到更多关于它的信息 here
  2. 而不是使用 .img-team 中的样式让图像在 div 内居中。
  3. 同时添加flex: 1justify-content: flex-end;。对于每一列,我认为这解决了问题。

html,
body {
  margin: 0;
  padding: 0;
}

.page {
  display: flex;
}

.top-content,
.team-wrap {
  height: 50vh;
}

.team-wrap>div {
  flex: 1;
  justify-content: flex-end;
}

.img-team-wrap {
  padding-top: 100%; /* 1:1 Aspect Ratio */
  position: relative; /* For Positioning Image Inside */
  overflow: hidden;
}

.img-team {
  overflow: hidden;
  height: 101%;
  width: 101%;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -moz-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  -o-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  -o-object-fit: cover;
  object-fit: cover;
}
<div class="page">
  <div class="container-fluid" style="display:flex; flex-flow: column; flex: 0 0 100%">
    <div class="container-fluid" style="display:flex; flex-flow: column; flex-grow: 1">
      <div class="top-content">
        <h4 class="">TITLE</h4>
      </div>
      <div class="row team-wrap" style="display:flex; flex-grow: 1">
        <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
          <div class="img-team-wrap" style="display:flex; flex-grow: 1;">
            <img class="img-team" src="https://sparkwebservices.com/img/ww-1.jpg" />
          </div>
          <div>
            <h4 class="xxx">Walter White</h4>
            <h4 class="xxx">More text</h4>
          </div>
        </div>
        <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
          <div class="img-team-wrap" style="display:flex; flex-grow: 1">
            <img class="img-team" src="https://sparkwebservices.com/img/ww-2.jpg" />
          </div>
          <div>
            <h4 class="xxx">Walter White</h4>
            <h4 class="xxx">More text</h4>
          </div>
        </div>
        <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
          <div class="img-team-wrap" style="display:flex; flex-grow: 1">
            <img class="img-team" src="https://sparkwebservices.com/img/ww-3.jpg" />
          </div>
          <div>
            <h4 class="xxx">Walter White</h4>
            <h4 class="xxx">More text</h4>
          </div>
        </div>
        <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12" style="display:flex; flex-grow: 1; flex-flow: column">
          <div class="img-team-wrap" style="display:flex; flex-grow: 1">
            <img class="img-team" src="https://sparkwebservices.com/img/ww-1.jpg" />
          </div>
          <div>
            <h4 class="xxx">Walter White</h4>
            <h4 class="xxx">More text</h4>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 感谢您的回答。父 div 有 flex,只是代码有点乱,我没有全部粘贴。关于对象拟合属性。我已经尝试过了,但仍然无法正常工作。我要编辑问题以显示一些图像来澄清。
  • @JuanJesus 你能在问题内容中添加这些图片吗?
  • 完成,也尝试了您的代码,但发生的情况完全相同:/
  • 奇怪的行为是,如果不放图像,所有容器都按预期完美适应,但是当我放图像时,即使两者都是 100%,它只是不合身。
  • @JuanJesus 您现在可以查看吗?顺便说一句,每张图像都有不同的尺寸 - 所以它适用于任何图像尺寸和比例。另外,从图像中删除 href 属性,因为 t 无效。
猜你喜欢
  • 2016-09-18
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
相关资源
最近更新 更多