Вертикальное выравнивание: нижнее не работает
Я думал, что вертикальное выравнивание должно работать с встроенными элементами. Но почему-то все в сером div выравнивается по верху, а не внизу.
<div style="position:absolute; top:130px; right: 80px; width: 230px; background-color:Gray; height:30px;" class="defaultText" id="pager">
<span style="vertical-align:bottom;">Page Size:</span>
<select style="vertical-align:bottom; font-size:8pt; margin-top: 0; margin-left:3px; height:16px; text-align:center;">
<option value="50">50</option>
<option value="100">100</option>
<option value="200">200</option>
<option value="500">500</option>
<option value="10000">*</option>
</select>
<div style="float:right;">
<span style="vertical-align:bottom; color:Blue; cursor: pointer; margin-right: 10px;"><</span>
<input style="vertical-align:bottom; height:12px; font-size:8pt; width: 20px;" type="text" data-bind="value: pageNum" />
<span style="vertical-align:bottom;"> of </span>
<span style="vertical-align:bottom;" data-bind="text: numPages"></span>
<span style="vertical-align:bottom; color:Blue; cursor: pointer; margin-left: 5px;">></span>
</div>
</div>
Ответы
Ответ 1
Если вы не имеете дело с ячейкой таблицы, то какой выравнивание по вертикали выравнивает элемент относительно смежных элементов, в частности текста. Итак, элементы в сером div должны быть выровнены друг с другом, а не в нижней части div. См. Примеры на http://phrogz.net/css/vertical-align/index.html.
Ответ 2
Вот пример, где вы можете выполнить это, используя следующий код
DEMO: http://jsfiddle.net/SbNKa/1/
#theContainer {
height: 100px;
width: 500px;
position: relative;
border: 1px solid #900;
}
.content-bottom {
position: absolute;
width: 498px;
bottom: 0; /*This is the part that glues it to the bottom*/
border: 1px solid #000;
}
<div id="theContainer">
<div class="content-bottom">Content</div>
</div>
Ответ 3
Вот трещина. Я искал ответ (vertical-align
), а не альтернативный (bottom: 0
). Итак, вот решение.
vertical-align
устанавливается в отношении его контейнера, а не элемента parent (или wrapper
). Поэтому просто дайте ему некоторую линейную высоту, а затем примените vertical-align: bottom
.
div {
background:yellow;
margin:10px;
line-height:100px;
}
div > * {
vertical-align: bottom;
line-height: normal;
}
a {
background-color:#FFF;
height:20px;
display:inline-block;
border:solid black 1px;
padding:5px;
}
span {
background:red;
width: 50px;
}
<div>
<a>Some link</a>
<span>Some text </span>
</div>
Ответ 4
Вот современный обновленный ответ с использованием флагов.
div {
height: 100%; // containing div must fill the full height of the parent div
display: flex;
align-items: flex-end;
justify-content: flex-end;
}