Как вертикально центрировать <span> внутри div?
Код:
<div style="
border:solid 1px gray;
cursor:text;
width:400px;
padding:0px;"
id="theMainDiv">
<span id="tag1_outer" style="
background:#e2e6f0;
padding-right:4px;
padding-left:4px;
border:solid 1px #9daccc;
font:normal 11px arial;
color:#3c3c3c
">as</span>
</div>
Теперь, когда он отображает, пролет выравнивает нижний левый угол div.
Ответы
Ответ 1
См. мою статью о понимание вертикального выравнивания. Существует несколько методов для достижения того, чего вы хотите в конце обсуждения.
(Супер-короткая сводка: либо установить высоту линии ребенка, равную высоте контейнера, либо установить позиционирование на контейнере и полностью поместить дочерний элемент в top:50%
с помощью margin-top:-YYYpx
, а YYY - половину известная высота ребенка.)
Ответ 2
В родительском DIV добавьте
display:table;
и у вашего дочернего элемента add
display:table-cell;
vertical-align:middle;
Ответ 3
Как и в аналогичном вопросе, используйте display: inline-block
с элементом-заполнителем для вертикального центрирования пролета внутри элемента блока:
html, body, #container, #placeholder { height: 100%; }
#content, #placeholder { display:inline-block; vertical-align: middle; }
<!doctype html>
<html lang="en">
<head>
</head>
<body>
<div id="container">
<span id="content">
Content
</span>
<span id="placeholder"></span>
</div>
</body>
</html>
Ответ 4
Быстрый ответ для одиночного диапазона
Сделайте дочерний элемент (в данном случае span) тем же самым line-height
, что и родительский <div>
height
<div class="parent">
<span class="child">Yes mom, I did my homework lol</span>
</div>
Затем вы должны добавить правила CSS
.parent { height: 20px; }
.child { line-height: 20px; vertical-align: middle; }
Или вы можете настроить таргетинг с помощью дочернего селектора
.parent { height: 20px; }
.parent > span { line-height: 20px; vertical-align: middle; }
Фон для моего собственного использования
Я столкнулся с подобной проблемой, когда мне нужно было вертикально центрировать элементы в мобильном меню. Я сделал div и промежутки внутри одной линии. Обратите внимание, что это для проекта метеора и, следовательно, не используется встроенный css;)
HTML
<div class="international">
<span class="intlFlag">
{{flag}}
</span>
<span class="intlCurrent">
{{country}}
</span>
<span class="intlButton">
<i class="fa fa-globe"></i>
</span>
</div>
CSS (опция для нескольких интервалов в div)
.international {
height: 42px;
}
.international > span {
line-height: 42px;
}
В этом случае, если бы у меня был только один диапазон, я мог бы добавить правило CSS непосредственно к этому диапазону.
CSS (опция для одного определенного диапазона)
.intlFlag { line-height: 42px; }
Вот как он отображается для меня
![enter image description here]()
Ответ 5
В родительский div добавьте высоту, скажем, 50px. В дочернем промежутке добавьте высоту линии: 50 пикселей;
Теперь текст в промежутке будет вертикально центром. Это сработало для меня.