【问题标题】:Wrapping flex items in the last row [duplicate]在最后一行包装弹性项目[重复]
【发布时间】:2019-02-12 10:40:59
【问题描述】:

我有一个img-gallery,它现在可以正确集中。问题是当图像换行时,它也与中心对齐。换行后,图片应与上一行的第一张图片垂直对齐。

.gallery-links {justify-content: flex-start;}

这使它几乎解决了。但是在图像换行之后,整个img-gallery 并没有集中。见fiddle和sn-p:

.gallery-links {
  display: flex;
  flex-flow: row wrap;
  justify-content: center;
  align-items: center;
}

.gallery-img {
  flex-basis: 300px;
  margin: 10px;
}

.gallery-img img {
  width: 100%;
}
<section class="gallery-links">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img1">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img2">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img3">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img4">
</section>

【问题讨论】:

  • 能否请您截图一下您的期望
  • @Temani 请停止回滚战争。编辑已与编辑谈过。让它安定下来,如果它继续下去,我们将采取行动。
  • @YvetteColomb 我是标记此 war 的人,因为我为改进问题而进行的逻辑编辑每次都会回滚。你也做了和我一样的编辑,应该做什么。 [我还删除了不相关的 css-grid 标签] .. 希望它不会再次回滚
  • @YvetteColomb 已经做了很多时间,而且对于这个问题也.. 它被标记为有帮助,所以我认为问题已经解决(已联系编辑),如果我再次编辑它就赢了'不会被回滚但不幸的是没有..所以我再次标记。让我们希望这会停止,因为有很多问题需要编辑,老实说,每次同一用户回滚我的编辑时标记是没有意义的。 [让我们也删除那些 cmets,因为它们与问题无关]

标签: html css flexbox


【解决方案1】:

Flexbox 不能解决这个问题

所以问题是,如果您使用您不想要的 justify-content: center,并且如果您使用 flex-start 对齐,那么您的最后一行将 居中,那么您的 flexbox 将有右侧的一些空间。

以全屏方式查看下面的 sn-ps,这样您就可以连续获得两张图像并查看最后一张图像。

  1. justify-content: center,最后一张图片不左对齐:

    .gallery-links {
      display: flex;
      flex-flow: row wrap;
      justify-content: center;
      align-items: center;
      border: 1px solid;
    }
    
    .gallery-img {
      flex-basis: 300px;
      margin: 10px;
    }
    
    .gallery-img img {
      width: 100%;
    }
    <section class="gallery-links">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img1">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img2">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img3">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img4">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img1">
     
    </section>
  2. 给出justify-content: flex-start 弹性框作为一个整体向左侧错位:

    .gallery-links {
      display: flex;
      flex-flow: row wrap;
      justify-content: flex-start;
      align-items: center;
      border: 1px solid;
    }
    
    .gallery-img {
      flex-basis: 300px;
      margin: 10px;
    }
    
    .gallery-img img {
      width: 100%;
    }
    <section class="gallery-links">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img1">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img2">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img3">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img4">
      <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img1">
     
    </section>

这是flexbox 的限制,因为它只是一维布局解决方案。


但 CSS 网格可以

对于 2D 解决方案,CSS Grid 是首选。请参阅下面的演示,您的问题已解决-

  1. 使用grid-template-columns: repeat( auto-fit, 300px) 实现具有300px 框的环绕网格

  2. 为了使网格居中,我们使用justify-content: center

  3. 使用grid-gap 作为边距

请看下面的演示:

.gallery-links {
  display: grid;
  grid-template-columns: repeat( auto-fit, 300px);
  justify-content: center;
  grid-gap: 10px;
  border: 1px solid;
}

.gallery-img {
  width: 100%;
}
<section class="gallery-links">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img1">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img2">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img3">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img4">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img1">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img2">
  <img class="gallery-img" src="https://www.w3schools.com/howto/img_forest.jpg" alt="img3">
</section>

【讨论】:

  • 请不要将解决方案添加到标题中,这没有意义。另外,停止回滚战争。
  • 是的,正如我们已经在单独的线程中讨论过的那样,我明白了它的要点,谢谢
猜你喜欢
  • 2017-08-29
  • 2018-07-29
  • 2020-07-25
  • 2017-08-03
  • 2016-03-23
  • 2019-04-24
  • 1970-01-01
  • 2016-07-01
  • 2021-06-25
相关资源
最近更新 更多