你在这里做了很多事情,所以我稍微简化了你的代码来说明一些有助于澄清事情的想法。
考虑以下:
<div id="calculator">
<div class="button">Basic</div>
<div class="button"><span style="font-size: 30px;">Tall</span></div>
<div class="button">
<img src="http://placehold.it/28x28">
</div>
<div class="button">
<img src="http://placehold.it/28x28" style="vertical-align: bottom;">
</div>
<div class="button" style="height: 28px; width: 28px;">
<img src="no-image.jpg">
</div>
<div class="button" style="height: 28px; width: 28px;">
<img src="no-image.jpg" alt="alt">
</div>
<div class="button">
<img src="no-image.jpg" alt="alt">
</div>
</div>
和以下 CSS(基本上是您的按钮样式):
.button {
border: 1px outset;
background-color: #FACC43;
color: darkgreen;
display: inline-block;
margin: 10px 0px;
}
和更新小提琴:http: //jsfiddle.net/audetwebdesign/j3SRn/
从左到右,我在行内块上显示了 7 个按钮。
按钮 1,只有文本,内联块缩小以适应,足够简单。
按钮 2,再次增加字体大小,框缩小以适应,并注意文本的底部与按钮 1 共享一个公共基线。
按钮 3,28x28 图像,图像底部在基线上,注意图像下方的间隙。
按钮 4,与 3 相同,但使用vertical-align: bottom
和图像位置略低,位于行框底部。
按钮 5,在这种情况下,图像文件不存在,因此在不存在的图像(0x0 像素尺寸)周围绘制了一个 28x28 的框,并位于行的中间,这就是它向上突出的原因。
按钮 6,没有图像,但这次我们有替代文本,包裹在一个 28x28 的盒子中,所以文本落在基线上,边框框围绕它并向下突出。
按钮 7,没有带有替代文本的图像,没有框大小,因此边框会缩小以适合落在基线上的文本。
我希望这能让您了解内联块的行为方式,这是一个非常灵活的元素。