css - flex 速记如何处理以百分比表示的单个值?

标签 css flexbox specifications

Mozilla Developer Network flex article说到它的语法:

One-value syntax: the value must be one of:

  • a unitless <number>: then it is interpreted as <flex-grow>.
  • a valid value for width: then it is interpreted as <flex-basis>.
  • one of the keyword values none, auto, or initial.

第二个元素符号表示 flex: 20%;相当于flex-basis: 20%; , 作为 20%width 的有效值.

然而,实际情况并非如此:

  1. flex shorthand

.container {
  display: flex;
}

.container>div {
  padding: 6px;
}

.one {
  background: #fcc9e5;
  flex: 20%;
}

.two {
  background: #ecaef9;
  flex: 1;
}
<div class="container">
  <div class="one">one</div>
  <div class="two">two</div>
</div>

  1. flex-basis

.container {
  display: flex;
}

.container>div {
  padding: 6px;
}

.one {
  background: #fcc9e5;
  flex-basis: 20%;
}

.two {
  background: #ecaef9;
  flex: 1;
}
<div class="container">
  <div class="one">one</div>
  <div class="two">two</div>
</div>

那么,这里发生了什么?

最佳答案

spec说,在 flex速记声明,当<flex-grow><flex-shrink>被省略,它们都默认为 1。(MDN incorrectly states<flex-grow> 默认为 0。)

这意味着速记声明flex: 20%相当于flex: 1 1 20% .

仅指定 flex-basis: 20%叶子 flex-growflex-shrink它们的初始值分别为 0 和 1,使普通声明本身等同于简写 flex: 0 1 20% .

关于css - flex 速记如何处理以百分比表示的单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45439638/

相关文章:

html - 无法调整 bootstrap 3 框的大小以适合图像

css - 哪个边框半径属性适用于 IE9?

html - 如何使用使用 flex 的表结构定义 colspan?

javascript - 自动分号插入和返回语句

jquery - <ul> 的最后一个子元素不遵循其他子元素的风格

css - 如何更改 Google 搜索建议的字体颜色?

html - 将元素粘贴到固定元素的底部

html - 让 % 为 flex 元素的子元素正常工作

javascript - javascript : URLs (pseudo-protocol) introduced into the HTML standard? 是什么时候

java - spring boot 按字段搜索规范查找