Из CSS 2.2 SPE c:
10.6.7 'Авто' высоты для корней контекста форматирования блока
... если у элемента есть плавающие потомки, нижний край которых находится ниже нижнего края содержимого элемента, тогда высота увеличивается, чтобы включить эти края.
Это то же правило, что и overflow:hidden
на block box содержат float, похожий на clearfix.
Все элементы inline-block являются корнями контекста форматирования блока, поэтому это правило применяется к ним, когда вы не указываете высоту, потому что высота по умолчанию - auto .
Затем в самом конце Раздел 10 spe c говорит:
Базовая линия 'inline-block' - это базовая линия его последнего линейного блока в нормальном потоке, если только он не имеет ни одного проходного линейного бокса или если его свойство 'overflow' имеет вычисленное значение, отличное от 'visible', и в этом случае базовой линией является край нижнего поля.
В вашем примере inlin Электронный блок содержит только поплавок, поэтому у него нет проходных линий, и поэтому его базовая линия является его нижним краем поля. Он не имеет нижнего отступа, границы и поля, поэтому его базовая линия также является его нижним краем содержимого.
Затем ваша метка и ввод текста вертикально выравнивают их базовую линию по этому нижнему краю содержимого встроенного блока, поэтому чем ниже нижняя часть поплавка, чем ниже будут эти элементы, чтобы они оставались выровненными по вертикали.
Но если вы укажете высоту для встроенного блока, его нижний край содержимого не будет перемещен вниз, чтобы охватить поплавок - т.е. поплавок переполнит встроенный блок. Метка и ввод текста по-прежнему выровнены по вертикали с нижней частью поля содержимого встроенного блока, но его высота равна указанной вами высоте.
Чтобы избежать этого, применяется обычный метод нарушения базового вертикального выравнивания между встроенными элементами, например, путем установки встроенного блока в vertical-align:top