我想显示带有图片和文字的按钮。文本和图像必须居中并位于同一行/行上。
在Firefox中,图像和文本始终位于不同的行上。我该如何解决这个问题?
这就是我所拥有的:
button {
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-content: stretch;
align-items: center;
}
button img {
order: 0;
flex: 0 1 auto;
align-self: auto;
}
button span {
order: 0;
flex: 0 1 auto;
align-self: auto;
}
答案 0 :(得分:5)
某些HTML元素按设计不接受display
更改。其中三个元素是:
<button>
<fieldset>
<legend>
例如,display: table
无效fieldset
。
同样,浏览器会忽略将display: inline-flex
应用于button
。
还有其他合理的限制。例如,某些浏览器会忽略overflow: scroll
元素上的button
。 (已测试:Firefox,无滚动; Chrome,是)
因此,底线,
button
元素不能是灵活容器。简单的解决方法是将
button
的内容包装在div
中, 使div
灵活容器。或者(如评论中所述)使用span
代替div
,因为这可以保持标准合规性。
<强> HTML 强>
<button href="#">
<div>
<img src="http://placehold.it/10x10">
<span>Click me</span>
</div>
</button>
<强> CSS 强>
div {
display: flex;
justify-content: center;
align-items: center;
}
注意:虽然它们不能是flex容器,button
elements can be flex items.
在此处了解详情:
答案 1 :(得分:-1)