html - flex 元素忽略宽度

标签 html css flexbox

我在网站的响应式设计中使用 flexbox 对我的 html 中的一些元素进行了重新排序,这工作正常,但这些元素无法正确调整大小。

在断点处,我将一类 flex 应用到 home-promos div 并重新排序了元素。这工作正常。

当我尝试将 div 的大小时调整为百分比宽度时,问题就出现了。它们只会调整到某个点,例如 50%,然后就不会再变大了。

有比我更擅长 flexbox 的人能告诉我问题出在哪里吗?

.home-promos {
  display: flex;
}
.home-promo-center {
  order: 1;
}
.home-promo-left {
  order: 2;
}
.home-promo-right {
  order: 3;
}
<div class="home-promos">
  <div class="home-promo-left">
    <div class="promo-left-content">
      *content*
    </div>
  </div>
  <div class="home-promo-center">
    <div class="promo-center-content">
      *content*
    </div>
  </div>
  <div class="home-promo-right">
    <div class="promo-right-content">
      *content*
    </div>
  </div>
</div>

最佳答案

当您创建一个 flex 容器(display: flexdisplay: inline-flex)时,它带有几个默认设置。其中有:

  • flex-direction: row - flex 元素将水平对齐
  • justify-content: flex-start - flex 元素将堆叠在行的开头
  • flex-wrap: nowrap - flex 元素被强制留在一行
  • flex-shrink: 1 - flex 元素允许收缩

注意最后两个设置。

您的三个 div 被迫保持在一行中。因此,它们的组合宽度限于容器的宽度。

此外,它们可以收缩,以防止它们溢出容器。这也限制了它们的宽度。

要将您想要的任何宽度应用于每个 flex 元素,您可以使用以下方法覆盖这些初始设置:

  1. flex-wrap: wrap - 现在有更多空间,因为 flex 元素可以换行
  2. flex-shrink: 0 - 现在有更多空间,因为 flex 元素不会收缩,必要时可以溢出容器

关于html - flex 元素忽略宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37815450/

相关文章:

html - 子菜单在大型菜单中未正确显示

css - 如何删除 div 标签内的顶部空间

html - Flexbox:水平和垂直居中

html - flexbox:打断长文本直到同胞适合容器

html - 内联样式缩短了其他div的宽度

html - Eclipse JavaDoc 生成失败并出现 IllegalArgumentException?

html - 如何使用 css flexbox 使表格垂直和水平居中?

php - 在多个文件 uploader 中验证 JS 中的多种图像格式

css - sIFR 中的首行文本缩进

jquery - 设置子元素高度以填充 CSS