Как выровнять метку с "BOTTOM" div в CSS?
DEMO можно найти по адресу:
http://www.bootply.com/VZ7gvA7ndE#
Я установил высоту div
в 100px и хочу показать label
в нижней части div
. Я использую
#contain-word-lab {
vertical-align: bottom;
margin-bottom: 5px;
}
Однако это не работает вообще. label
по-прежнему выравнивается с вершиной div
.
Есть ли у кого-нибудь идеи об этом? Почему vertical-align
здесь не работает? Спасибо!
Ответы
Ответ 1
Почему vertical-align: bottom
не работает один
Поскольку высота родительского элемента больше, чем вычисленная высота метки, использование vertical-align: bottom
не будет перемещать этот встроенный элемент в нижней части родителя.
Так как во встроенном потоке vertical-align
определяет, как элементы позиционируются на основе исходной базовой линии; И использование этого свойства на ярлыке не изменит положение базовой линии его родителя.
Элементы встроенного уровня (inline
, inline-block
) расположены по умолчанию baseline, И если они имеют разную высоту, самый высокий элемент определит, где остальные будут размещены.
т.е. В поточном потоке самый высокий элемент будет влиять на/перемещать базовую линию родителя:
![illustration of baseline]()
Поиск решения
Следовательно, в случаях, когда родитель имеет явный height
, если у нас может быть встроенный ребенок, который имеет ту же высоту, что и parent (полноразмерный ребенок), это повлияет на поток inline и переместит базовую линию вниз:
![A full-height element which affects the baseline]()
Чтобы сохранить элементы (включая буквы с descenders) внутри родительского элемента, мы должны выровнять их по вертикали с помощью объявления vertical-align: bottom;
.
![applying vertical align property]()
10.8 Расчет высоты линии: свойство vertical-align
baseline
Совместите базовую линию с базой исходного поля. Если в поле нет базовой линии, выровняйте нижнюю край края с исходной базой.
bottom
Выровняйте нижнюю часть выровненного поддерева с нижней частью строки.
Общие сведения
Поэтому вы можете создать элемент с полной высотой (Лично мне лучше пойти с псевдоэлементы) в родительском, чтобы выровнять метку внизу.
ПРИМЕР ЗДЕСЬ
#contain-word-div:after {
content: "";
display: inline-block;
height: 100%; /* Let it be as height as the parent */
vertical-align: bottom; /* Align the element at the bottom */
}
#contain-word-lab {
display: inline-block;
vertical-align: bottom; /* Align the element at the bottom */
}
Ответ 2
быстрый пример
http://jsfiddle.net/oa2gmuq3/
если вы добавите
position:absolute;
bottom:0px;
на ярлык, которому нравится держать его внизу
Ответ 3
Примените position:relative
к родительскому div и сделайте свою метку как position:absolute
.
#contain-word-div {
height: 100px;
position:relative;
}
#contain-word-lab {
position:absolute;
bottom:5px;
}
DEMO
Ответ 4
установите его как position: absolute;
#contain-word-lab {
position:absolute;
bottom:5px;
}
Ответ 5
vertical-align
имеет тенденцию работать лучше всего, когда контейнеры представляют собой таблицы/табличные элементы (например, table
, tr
, td
, th
) или встроенные текстовые элементы (например, span
). Однако, поскольку элементы table
для макета не являются хорошей идеей. Мы можем сделать другие элементы такими же, как они, используя свойства display:table;
и display:table-cell;
css.
Попробуйте применить следующий css:
#contain-word-div {
height: 100px;
border: 1px solid black; /* added just for visualising position */
display:table;
}
#contain-word-lab {
display:table-cell;
vertical-align: bottom;
padding-bottom: 5px; /* use padding to give the label more height rather than trying to push the "cell" upwards */
}
DEMO
Ответ 6
vertical-align
применяется только к ячейкам таблицы. Если вы хотите поместить элемент в нижней части своего родителя, вам нужно указать его position: absolute;
и bottom: 0;
.
Ответ 7
Попробуйте сделать следующее
FIDDLE DEMO
#contain-word-lab {
vertical-align='bottom';/***Remove This***/
bottom:2px;
position:absolute;
}
Ответ 8
"bottom" не будет работать в любом случае:) Попробуйте просто bottom
, без ".
Кроме того, ваша этикетка также нуждается в высоте. Теперь используется автоматическая высота, и это точно размер шрифта. Я бы предложил добавить line-height: 100px;
к вашей метке.