html - 使用 flex 对齐已经有 flex 的元素?

标签 html css flexbox

我正在尝试创建一个容器,其中包含许多内容的子图 block 。每个子图 block 都包含我想要居中的数据,这就是 flex 在子图 block 上的原因——这样我就可以对齐图 block 内容。
我想将 3 均匀地对齐到一行,所以我将 flex 放在父类上并希望 space-evenly 但这似乎不起作用。关于我做错了什么的任何想法?

<div class="container">
  <div class="child">
      <img src="">
      <span>TITLE</span>
  </div>
  <div class="child">
      <img src="">
      <span>TITLE</span>
  </div>  
  <div class="child">
      <img src="">
      <span>TITLE</span>
  </div>  
  <div class="child">
      <img src="">
      <span>TITLE</span>
  </div>  
  <div class="child">
      <img src="">
      <span>TITLE</span>
  </div>  
  <div class="child">
      <img src="">
      <span>TITLE</span>
  </div>  
  <div class="child">
      <img src="">
      <span>TITLE</span>
  </div>

</div>

CSS

.parent {
    display: flex;
    max-width: 1200px;
}

.child {
    display: inline-flex;
    margin-bottom: 26px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 396px;
    height:396px;
}

最佳答案

您缺少一些关键的东西。第一,您的父容器缺少 parent 类,因此 CSS 永远不会达到它的目标。开始标记现在是:

<div class="container parent">

接下来,我向 .parent CSS 规则添加了一个重要的 flex 属性,允许元素换行,否则你无法获得超过 3 个元素的 3-across:

flex-wrap: wrap;

space-between 添加到 .parent 可确保元素边到边而不管元素之间的宽度和间距如何:

justify-content: space-between;

然后我向 .child 元素添加了一个宽度,它可以灵活地创建 3-cross 布局。我使用 calc 作为在元素之间获得一些空间而不是水平接触的快速方法:

width: calc(33.333% - 20px);

还在那里放了一些小图片,以查看更多的内部 flex 效果。希望这对您有所帮助!

.parent {
    display: flex;
    max-width: 1200px;
    justify-content: space-between;
    flex-wrap: wrap;
}
.child {
    display: flex;
    margin-bottom: 26px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: calc(33.333% - 20px);
    background-color: #ccc;
}
<div class="container parent">
  <div class="child">
      <img src="https://picsum.photos/40">
      <span>TITLE 1</span>
  </div>
  <div class="child">
      <img src="https://picsum.photos/40">
      <span>TITLE 2</span>
  </div>  
  <div class="child">
      <img src="https://picsum.photos/40">
      <span>TITLE 3</span>
  </div>  
  <div class="child">
      <img src="https://picsum.photos/40">
      <span>TITLE 4</span>
  </div>  
  <div class="child">
      <img src="https://picsum.photos/40">
      <span>TITLE 5</span>
  </div>  
  <div class="child">
      <img src="https://picsum.photos/40">
      <span>TITLE 6</span>
  </div>  
  <div class="child">
      <img src="https://picsum.photos/40">
      <span>TITLE 7</span>
  </div>

</div>

关于html - 使用 flex 对齐已经有 flex 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55125517/

相关文章:

html - 为什么带有 "display: flex"和 "position: fixed"的 div 没有占据全部可用宽度?

css - FlexBox 在 div 中拉伸(stretch) 1 个 div

jquery - CSS3 动画从上一个位置继续

python - 通过中国防火墙重定向推特页面

jquery - 使用 jQuery 检测容器溢出?

jquery - 使 div 出现在当前用户屏幕上

javascript - 如何用 div 作为背景模仿 JS 范围/选择?

javascript - localStorage.getItem 检索 'null'

css - 这是什么? (Wordpress 主题中的未知框)

html - 如何使用 CSS 网格将图像停靠在页眉中?