【问题标题】:Flexbox - flex items layout alignment issue [duplicate]Flexbox - 弹性项目布局对齐问题[重复]
【发布时间】:2018-08-19 02:45:04
【问题描述】:

我遇到了一个由 flexbox 属性引起的问题。我需要通过向上移动第三个孩子来填充第一个孩子的下方空间。 flexbox有可能吗?在此处添加代码。 jsfiddle

HTML/CSS

.flex {
  display: flex;
  width: 100%;
  flex-wrap: wrap;
  align-items:flex-start;
  align-content:flex-start;
}

.flex-child {
  height: 200px;
}

.one {
  width: 70%;
  height: 100px;
  background-color: #bada55;
}

.two {
  width: 30%;
  background-color: #f00;
}

.three {
  width: 70%;
  background-color: #0f0;
}
<div class="flex">
  <div class="flex-child one"></div>
  <div class="flex-child two"></div>
  <div class="flex-child three"></div>
</div>

【问题讨论】:

  • 是否有可能以不同的方式构建它?就像容器内的第一个和第三个孩子一样?还是标记不值得讨论?
  • @Kriszta 是的,你可以,但在响应式屏幕中,第二个应该在第一个孩子之下。
  • 好的,你需要支持哪些浏览器?
  • @Kriszta Chrome,FF,safari
  • 请参阅stackoverflow.com/a/45200955/2756409,了解这方面的最全面的解释。

标签: html css layout flexbox css-grid


【解决方案1】:

Flexbox 是单向的,你不能直接做。

要实现这种布局,您需要组合第一个和第三个孩子,然后应用 flex。

<div class="flex">
  <div class="flex-child one">
    <div class="one"></div>
    <div class="third"></div>
  </div>
  <div class="flex-child two"></div>
</div>

或者考虑使用网格布局,这是一种二维布局

【讨论】:

  • 还有另一个问题是,对于响应式屏幕,第二个孩子应该在第一个孩子之下。根据您的标记,它不会发生。
【解决方案2】:

给你。

您实际上并不需要 flexbox 来实现这一点,只需古老的 position: absolute。 ;)

@media only screen and (min-width: 640px) {
  .container {
    position: relative;
  }
}

@media only screen and (min-width: 640px) {
  .child {
    width: 70%;
  }
}

.one {
  background: rgba(255, 0, 0, 0.2);
}

.two {
  background: rgba(0, 0, 255, 0.2);
}
@media only screen and (min-width: 640px) {
  .two {
    width: 30%;
    position: absolute;
    top: 0;
    right: 0;
  }
}

.three {
  background: rgba(0, 128, 0, 0.2);
}
<div class="container">
  <div class="child one">1. Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nulla maxime fuga architecto magni suscipit dignissimos eius modi excepturi eos ab, quia ipsum dolor tenetur reprehenderit incidunt dicta maiores, quibusdam quas! Lorem ipsum dolor sit amet consectetur, adipisicing elit. Enim magnam ut repellat quibusdam! Dolorem, sunt?</div>
  <div class="child two">2. Lorem ipsum dolor sit amet consectetur adipisicing elit. Exercitationem vel amet ut, iste eveniet quidem neque natus eum ipsum inventore quod veritatis a ipsam eos, non impedit minus, itaque magni? Lorem ipsum dolor sit amet.</div>
  <div class="child three">3. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Numquam voluptatem quibusdam sed consectetur! Impedit numquam voluptatem nemo qui magnam natus suscipit architecto inventore! Voluptatem reprehenderit, aperiam nam laborum hic explicabo!</div>  
</div>

【讨论】:

  • 嘿,我非常感谢您的努力。但我试图通过 CSS flexbox 来实现这一点。我们可以通过使用 CSS 浮动轻松实现所需的结果,但我更喜欢 flexbox。
  • 示例中没有使用浮点数,只是position: absolute,它没有浮点数的缺点。请问为什么在不需要的时候还要使用flexbox?
  • Kriszta,我正在使用 BS4 网格系统,其中 'row' 具有 'display: flex' 属性。出于演示目的,我创建了不包括 BS4 的小提琴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2014-08-04
  • 2018-01-26
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多