【发布时间】:2017-04-05 06:57:39
【问题描述】:
我似乎观察到 flexbox 的一些令人困惑的行为,特别是在尝试使用 align-self: baseline 时。基本问题是它根本行不通。下面的 sn-p 演示了这个问题:
.flex-form {
display: flex;
}
.flex-form label {
align-self: baseline;
}
input[type=text] {
border: 1px solid black;
font-size: 16px;
margin: 0 10px;
padding: 5px;
}
button {
background-color: white;
border: 1px solid black;
margin: 0;
}
<form class="flex-form">
<label>Label: </label>
<input type="text" placeholder=" " />
<button type="submit">Submit</button>
</form>
这是输出的截图:
如您所见,尽管设置了align-self: baseline,标签的基线不与其他表单元素对齐。但是,如果我在父容器上使用 align-items: baseline,我会得到不同的结果:
.flex-form {
display: flex;
align-items: baseline;
}
input[type=text] {
border: 1px solid black;
font-size: 16px;
margin: 0 10px;
padding: 5px;
}
button {
align-self: stretch;
background-color: white;
border: 1px solid black;
margin: 0;
}
<form class="flex-form">
<label>Label: </label>
<input type="text" placeholder=" " />
<button type="submit">Submit</button>
</form>
这是符合规范的正确行为,还是一个错误?如果是这样,为什么?有解决方法吗?作为参考,我在 macOS 10.11.6 上的 Chrome 54、Safari 9.1.2 和 Firefox 50 上进行了测试,它们似乎都表现出相同的结果。
【问题讨论】: