Я пытаюсь получить некоторые inline
и inline-block
компоненты выровнены по вертикали в div
. Почему span
в этом примере человек настаивает на том, чтобы его опускали? Я пробовал оба vertical-align:middle;
и vertical-align:top;
, но ничего не изменилось.
HTML:
<div>
<a></a><a></a>
<span>Some text</span>
</div>
CSS:
a {
background-color:#FFF;
width:20px;
height:20px;
display:inline-block;
border:solid black 1px;
}
div {
background:yellow;
vertical-align:middle;
}
span {
background:red;
}
РЕЗУЛЬТАТ:
<a>
элементы содержат текст внутри, см. эту ссылкуОтветы:
vertical-align
применяется к выравниваемым элементам, а не к их родительскому элементу. Чтобы выровнять дочерние элементы div по вертикали, сделайте следующее:div > * { vertical-align:middle; // Align children to middle of line }
См .: http://jsfiddle.net/dfmx123/TFPx8/1186/
ПРИМЕЧАНИЕ :
vertical-align
относительно текущей текстовой строки, а не полной высоты родительского элементаdiv
. Если вы хотите , родитель ,div
чтобы быть выше , и по- прежнему имеют элементы вертикально по центру, установитеdiv
«sline-height
свойство , а не егоheight
. Для примера перейдите по ссылке jsfiddle выше.источник
div
.vertical-align
относится к текущей текстовой строке, а не к родительскому элементу. Чтобы все работало так, как вы хотите, установите divline-height
вместо егоheight
.Дайте
vertical-align:top;
вa
&span
. Как это:a, span{ vertical-align:top; }
Отметьте это http://jsfiddle.net/TFPx8/10/
источник
Простое перемещение обоих элементов влево дает тот же результат.
div { background:yellow; vertical-align:middle; margin:10px; } a { background-color:#FFF; width:20px; height:20px; display:inline-block; border:solid black 1px; float:left; } span { background:red; display:inline-block; float:left; }
источник
inline-block
это единственное решение.Для точной настройки позиции
inline-block
элемента используйте top и left:position: relative; top: 5px; left: 5px;
Спасибо CSS-Tricks !
источник
translate
тоже возможно.