【问题标题】:Why is flexbox space-between not working?为什么 flexbox space-between 不起作用?
【发布时间】:2016-01-05 18:10:22
【问题描述】:

我正在尝试实现 flexbox,但无法使其正常工作。我错过了什么?我有所有的 flexbox 供应商前缀。

.main-navigation ul { 
   width:100%; 
   display: -webkit-box;  /* OLD - iOS 6-, Safari 3.1-6, BB7 */
   display: -ms-flexbox;  /* TWEENER - IE 10 */
   display: -webkit-flex; /* NEW - Safari 6.1+. iOS 7.1+, BB10 */
   display: flex;         /* NEW, Spec - Firefox, Chrome, Opera */
  }

.main-navigation ul li {
   justify-content:space-between; 
   width:100px; 
   background:#666; 
   display:block;
 }

目标是让最左边的li 与 ul 容器的左侧齐平,最右边的li 与 ul 容器的右侧齐平。欢迎任何帮助。

【问题讨论】:

  • 你能创建一个演示吗?
  • 你确定你没有错过空格规则@alySebastien上的供应商前缀吗?

标签: css flexbox


【解决方案1】:

还有一点要记住,除了需要将justify-content:space-between 添加到弹性容器而不是元素本身之外;确保容器内没有空元素(例如空的 div:after)。

在我的例子中,从 flex 之前的日子开始,当事情完成浮动元素时,JS 添加了一个空 div 作为“clearfix”。

justify-content:space-between 将证明容器内的所有元素,即使是那些没有内容的元素,这会弄乱对齐和换行。

【讨论】:

  • 感谢您指出flex容器内的伪元素可能引起的问题,在计算布局时确实会考虑到它们。
  • 最佳答案,还在解决这类问题。谢谢。
  • 这对我很有帮助。
  • 这是我的问题。伪:在“clearfix”元素之后。搞定了@ccrez。
【解决方案2】:

Flex 属性分为两类:flex 容器flex 项

某些属性仅适用于容器,其他属性仅适用于项目。

justify-content 属性仅适用于弹性容器。

在您的代码中,justify-content 应用于项目,因此它没有任何效果。

将其重新分配给容器。

当然,一个元素既可以是弹性容器,也可以是项目,在这种情况下,所有属性都适用。但这里不是这样。 li 元素只是弹性项目,将忽略容器属性。

有关 flex 属性列表 - 按容器和项目划分 - 请参阅:A Complete Guide to Flexbox

【讨论】:

    【解决方案3】:

    问题是您应该在具有display: flex 属性的元素上设置justify-content: space-between;,或者更好地在“父”上设置,这样“子”元素将与彼此之间的空格对齐。

    .main-navigation ul { 
      width: 100%; 
      display: -webkit-box;  /* OLD - iOS 6-, Safari 3.1-6, BB7 */
      display: -ms-flexbox;  /* TWEENER - IE 10 */
      display: -webkit-flex; /* NEW - Safari 6.1+. iOS 7.1+, BB10 */
      display: flex;         /* NEW, Spec - Firefox, Chrome, Opera */
      -webkit-box-pack: justify;
      -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
      justify-content: space-between;
    }
    
    .main-navigation ul li {
      width: 100px; 
      background: #666; 
      display: block;
    }
    

    【讨论】:

    • 谢谢。看起来我错过了间隔规则上的供应商前缀。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2016-04-01
    • 1970-01-01
    • 2023-01-31
    • 2020-09-06
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多