下面的示例显示了一个 <button>
元素,其父元素的高度不是按钮的高度。在保持语义并保持<button>
内联的同时消除这种多余的高度的最佳方法是什么?
如果我将按钮设置为 display:block
则删除多余的高度。如果我将父级的字体大小设置为 0,那么它也被删除了。如果我将<button>
更改为<div>
元素,那么它也是固定的。我不应该是语义的吗?
我已经在谷歌浏览器的稳定版本下对此进行了测试。
.box {
height: 30px;
width: 30px;
background-color: green;
}
.outer {
background-color: blue;
}
button {
border: 0;
margin: 0;
padding: 0;
}
<div class='outer'>
<button class='box'></button>
</div>
><button>
是一个inline-replaced
元素,所以你只需要在CSS中设置line-height
属性。
.box {
height: 30px;
width: 30px;
background-color: green;
}
.outer {
background-color: blue;
line-height: 0;
}
button {
border: 0;
margin: 0;
padding: 0;
}
<div class='outer'>
<button class='box'></button>
</div>
我希望这有所帮助。 如果您需要任何其他帮助,请在下面评论。
发生了此问题,因为空文本不会呈现,并且基线会使边距
。您只需将文本添加到按钮,然后它将更正呈现。
硬编码vertical-align
也应该可以解决问题。
.box {
height: 30px;
width: 30px;
background-color: green;
}
.fix {
vertical-align: sub;
}
.outer {
background-color: blue;
}
button {
border: 0;
margin: 0;
padding: 0;
}
<h5>Initial issue</h5>
<div class='outer'>
<button class='box'></button>
</div>
<hr/>
<h5>Add a text</h5>
<div class='outer'>
<button class='box'>+</button>
</div>
<hr/>
<h5>Fix by vertical-align</h5>
<div class='outer'>
<button class='box fix'></button>
</div>