Пустой div vs div с текстом, имеющим свойство inline-block
Хотите узнать причину такого поведения.
CSS
div {
display: inline-block;
margin-right: 2px;
width: 20px;
background-color: red;
}
Пустое div
<div style="height:20px;"></div>
<div style="height:40px;"></div>
<div style="height:60px;"></div>
<div style="height:80px;"></div>
поведение: элемент увеличивается снизу вверх (высота)
div с текстом
<div style="height:20px;">20</div>
<div style="height:40px;">30</div>
<div style="height:60px;">40</div>
<div style="height:80px;">50</div>
поведение: элемент увеличивается сверху вниз (высота)
видеть в действии: http://jsfiddle.net/8GGYm/
Ответы
Ответ 1
В основном это связано с тем, как вычисляется значение vertical-align:. Поэтому, если вы установите вертикальное выравнивание: bottom; атрибут в css, то вы заметите, что он будет таким же с текстом и без него.
вы можете прочитать это для более подробной информации.
Когда у div нет содержимого, в поле не накладывается отступы (т.е. когда 0, если есть контент, браузер вычисляет, где будет заполнение). поэтому есть небольшая разница в вычислении с текстом и без него.
Надеюсь, что это полезно.
Ответ 2
Привет, см. здесь: http://jsfiddle.net/dd24z/ по умолчанию текст вертикально-выравнивается вверх, но вы можете изменить это поведение;
div {
display: inline-block;
margin-right: 2px;
width: 20px;
background-color: red;
vertical-align: bottom;
}
http://www.w3.org/TR/2008/REC-CSS2-20080411/visudet.html#line-height
'vertical-align': базовый
Совместите базовую линию с базой исходного поля. Если поле не имеет базовой линии, выровняйте нижнюю часть поля с исходной базой.
Ответ 3
Добавить
vertical-align: bottom;
для вашего CSS. Надеюсь, он работает так, как вы хотите.
Ответ 4
Я думаю, это можно объяснить выравниванием текста, независимо от div.
Текст, помещенный в div, по умолчанию по вертикали выровнен по левому краю. Эти divs без текста выравниваются рядом друг с другом (встроенный блок), расширяя страницу вниз. Если вы добавите еще один div, вы увидите, что второй заголовок идет дальше.
<h1>Empty div</h1>
Some text
<div style="height:20px;"></div>
<div style="height:40px;"></div>
<div style="height:60px;"></div>
<div style="height:80px;"></div>
continuing here
<h2>Div with text</h2>
Some text
<div style="height:20px;">20</div>
<div style="height:40px;">40</div>
<div style="height:60px;">60</div>
<div style="height:80px;">80</div>
continuing here
...
div {
display: inline-block;
margin-right: 2px;
width: 20px;
background-color: red;
}
Fiddle
В приведенной выше скрипте вы можете видеть, что текстовая строка является "ориентиром".
Возможно, это объяснение: после того, как у div есть текст в них, они выровнят его с окружающим текстом и, если они не будут существовать, затем выровнят их нижнюю строку.
Извините, может быть, не очень понятно, но надеюсь, вы понимаете мое мнение.