为什么这两个内联块没有对齐?

时间:2013-02-13 20:45:06

标签: css

这两个内嵌块<div>应该(至少,我认为它们会)对齐:

<div class="calendar">
    <div class="month">
        <div class="month-name">January</div>
    </div>
    <div class="day">
        <div class="day-number">21</div>
        <div class="day-name">Wednesday</div>
    </div>
</div>

<div class="button"></div>

我用像素精度设置每个<div>的高度:

.calendar {
    display: inline-block;
    width: 80px;
    height: 74px;
}
.calendar .month {
    background-color: firebrick;
    border-radius: 3px 3px 0 0;
}
.calendar .month-name {
    color: white;
    font-size: 13px;
    text-align: center;
    height: 26px;
}
.calendar .day {
    background-color: linen;
    border-radius: 0 0 3px 3px;
}
.calendar .day .day-number {
    color: black;
    font-size: 26px;
    font-weight: bold;
    text-align: center;
    height: 30px;
}
.calendar .day .day-name {
    color: darkgray;
    font-size: 10px;
    text-align: center;
    height: 18px;
}

.button {
    background-color: silver;
    display: inline-block;
    border-radius: 3px;
    width: 220px;
    height: 74px;
}

但这会产生以下结果:

inline-block

以下是此代码的fiddle

这让我发疯,但结果在多个浏览器中都是一致的,所以我一定做错了。

任何人都可以解释原因并提供修复吗?

2 个答案:

答案 0 :(得分:5)

对任何内联块进行vertical-align:top

.calendar { vertical-align: top; }

说明:内联块仍然是“内嵌”,垂直对齐是基线,意味着它们不一致,并且它们的高度会有所不同,顶部使它们始终从顶部开始。

答案 1 :(得分:3)

将日历div上的垂直对齐设置为顶部

.calendar {
    display: inline-block;
    width: 80px;
    height: 74px;
    vertical-align:top;
}

<强> jsFiddle example