我正在使用 Moovweb 弹性盒子,但尺寸不能正常工作……发生了啥?

Posted

技术标签:

【中文标题】我正在使用 Moovweb 弹性盒子,但尺寸不能正常工作……发生了啥?【英文标题】:I'm using Moovweb flex boxes but the sizes aren't working properly... what's happening?我正在使用 Moovweb 弹性盒子,但尺寸不能正常工作……发生了什么? 【发布时间】:2013-06-16 16:26:33 【问题描述】:

我的结构如下:

<div class="_flex_box">
    <div class="_flex_box_item_1">Stuff</div>
    <div class="_flex_box_item_1">Other Stuff</div>
</div>

通常,这会将 div 并排拆分为每个 50% 的宽度。但它不起作用......有人有任何想法吗?基本上,不同项目的比例不是 50%,而是 70/30 或 60/40。

CSS 如下所示(我使用的是 Sass 和 Bourbon.io)

._flex_box 
  @include display-box;
  @include box-orient(horizontal);
  @include box-align(stretch);
  ._flex_box_item_1 
    display: block;
    @include box-flex(1);
  
 

【问题讨论】:

这些是已弃用的 2009 年 Flexbox 草案中的属性。请不要在未提供标准属性的情况下使用它们:w3.org/TR/css3-flexbox 【参考方案1】:

所以我找到了答案!

这似乎与弹性盒子的实现有关,但我可以通过将 ._flex_box_item_1 宽度设置为 100% 来解决它;

._flex_box 
  @include display-box;
  @include box-orient(horizontal);
  @include box-align(stretch);
  ._flex_box_item_1 
    display: block;
    @include box-flex(1);
    width: 100%;
  
 

这绝对不是总是必要的,但如果您在 Moovweb 项目中遇到此问题,它可能会起作用。

【讨论】:

【参考方案2】:

如果不指定宽度,弹性项目将根据需要占用尽可能多的空间,然后 flex-grow 和 flex-shrink 属性确定它们的最终宽度。如果一个项目需要 70% 而另一个只需要 30%,那么这就是它们将占用的空间量。

如果您希望您的弹性项目成为其弹性容器的特定百分比,您必须指定它。

.flex-item 
  width: 50%; // works with either Flexbox
  box-flex: 1; // deprecated Flexbox
  flex: 1 1 50%; // standard Flexbox

【讨论】:

以上是关于我正在使用 Moovweb 弹性盒子,但尺寸不能正常工作……发生了啥?的主要内容,如果未能解决你的问题,请参考以下文章

浅谈弹性盒子布局

flex弹性盒子的使用

将弹性项目的跨轴尺寸调整为适合内容

弹性盒布局display:flex详解

如何从卡片或类似物中获取标题与弹性盒子具有相同的高度?

弹性盒子flex布局