【问题标题】:Dynamic width parent with flexbox column wrapping? [duplicate]带有flexbox列换行的动态宽度父级? [复制]
【发布时间】:2019-06-20 09:52:43
【问题描述】:

父母只有display: flexflex-wrap: wrap,而孩子有固定的heightwidth150px。其行为如下:

父容器的高度垂直扩展,方便包裹子元素。

但是,将父级更改为 flex-direction: column 在水平方向上没有相同的行为:

不是父元素扩展以适应包装内容,而是子元素被重新排列以在父元素中方便。

我想通过垂直包装内容实现的行为如下所示:

差不多就是这样。想象一下父级垂直填充空间,并水平扩展包装内容。第一个 gif 的横向版本。

这可以通过 flex-box 实现吗?

【问题讨论】:

  • 请注意,在大多数情况下,元素默认设置为height: auto。这意味着元素的高度就是内容的高度。但是这种行为不适用于块级元素的宽度,默认情况下,它设置为父级的全宽(想想:width: 100%)。这就是您在 rowcolumn 方向 (read more) 中看到不同行为的原因之一。出于其他原因,请参阅重复的帖子。

标签: css flexbox multiple-columns col


【解决方案1】:

您正在寻找 align-content: start(它已弃用 flex-start,因此 grid 和 flexbox 获得统一的语法):

div {
  height: 100vh;
  display: flex;
  flex-wrap: wrap;
  flex-direction: column;
  align-content: start;
}
span {
  width: 150px;
  height: 150px;
  border: 2px solid #f66;
  background-color: #eee;
  color: #f66;
  font: italic 2.1em sans-serif;
  padding: .21em;
}
body {
  background-color: #f95b68;
}
body { margin: 0;}
* {box-sizing: border-box}
<div>
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>7</span>
  <span>8</span>
  <span>9</span>
  <span>10</span>
  <span>11</span>
  <span>12</span>
  <span>13</span>
  <span>14</span>
</div>

【讨论】:

  • 谢谢,这对于修复元素之间的间隙很有用,尽管我遇到的主要问题是父容器没有调整以方便包装列,就像包装行时一样。编辑:经过进一步研究,我发现这是 flex 布局的一个缺陷,而普通 css 是不可能的
  • stackoverflow.com/questions/33891709/… 我遇到的问题在这篇文章中得到了解决。简单地说,当列被包装时,父容器的宽度不会扩大(而当行被包装时,父容器会向下扩展而没有问题)。引用:“这看起来像是 flex 布局的一个根本缺陷。列方向的 flex 容器不会扩展以容纳额外的列。(这在 flex 方向:行中不是问题。)”
  • 这显然不是我从你的问题中理解的。很高兴你找到了答案。明天我会删除我的答案。已达到当天的删除配额。干杯!
  • 没关系。你的解释是有道理的,为什么这会是一个问题。感谢您的贡献。
  • 调查一下,我希望将 &lt;div&gt; 的显示值从 flex 更改为 inline-flex 以获得您正在寻找的效果。但是,它保持在 1 列的宽度。在我看来更像是一个错误。
猜你喜欢
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 2018-05-28
  • 2015-04-10
  • 2018-10-25
  • 2023-03-13
  • 1970-01-01
  • 2020-02-07
相关资源
最近更新 更多