基本上,我在flexbox中有一个label
和一个文本input
内联,input
展开,align-items
设置为基线。 input
会弯曲以正确填写包含div
,但label
与input
的底部对齐,而不是与文本基线的位置对齐。
此问题出现在Chrome和其他WebKit浏览器中。
这是代码。 You can check out how it renders in this Codepen.
HTML:
<div>
<label>Email:</label>
<input type='text' />
</div>
CSS:
div{
width:20rem;
background:#999;
padding:.5rem;
display:flex;
align-items:baseline;
}
input{
flex:1;
}
如果您注释掉display: flex
,则对齐方式是正确的,但自然它不再弯曲。
如何在不使用align-items: center
之类的黑客的情况下解决此问题?
注意:我最初在另一个问题上发布了这个问题和答案,但它已被删除。我按照建议修改了它,希望它现在符合指南。
答案 0 :(得分:9)
基本上,如果value
上没有placeholder
或input
属性,布局引擎会将input
的基线解释为{{的底部1}},而不是文本基线的位置。
因此修改后的HTML将如下所示:
input
或
<div>
<label>Email:</label>
<input type='text' value='example@gmail.com' />
</div>
这是布局引擎的一个错误,并且已经通知了开发人员。 You can read more about the bug here.
答案 1 :(得分:2)
如果您不想实际显示任何占位文字,<input type="text" placeholder=" ">
添加到其他答案中效果很好。