"vertical-align: middle" не выравнивается по середине в Firefox
Я пытаюсь выровнять текст разных размеров по вертикали, однако Firefox отображает меньший текст выше середины.
CSS:
div.categoryLinks {
margin: 1em 16px;
padding: 0 4px;
border-width: 1px 0;
border-style: solid;
border-color: #ece754;
background: #f7f5b7;
color: #a49f1c;
text-align: center;
font-size: 1.4em;
}
div.categoryLinks em {
font-size: 0.6em;
font-style: normal;
vertical-align: middle;
}
HTML-код:
<div class="categoryLinks">
<em>SECTION:</em>
Page One ·
Page Two ·
<a href="link">Page Three</a>
</div>
скриншот: скриншот http://www.doheth.co.uk/files/valign.jpg
обновление: просто чтобы быть ясно, я знаю более или менее как vertical-align
работает, т. е. я уже знаю распространенные заблуждения.
от дальнейшего расследования, он кажется, самый простой способ исправить эту проблему-обернуть больший текст в span
и set vertical-align
и это тоже. Двое детей .categoryLinks
затем выровняйте относительно друг друга. Если кто-то может показать лучший способ без дополнительной разметки?
5 ответов
вертикальное выравнивание работает только так, как ожидалось, в ячейках таблицы или элементах встроенного блока. Если вам нужна дополнительная информация, я предлагаю вам прочитать понимание вертикального выравнивания или "как (не) вертикально центрировать содержимое".
Edit: у вас есть что-то еще, потому что это работает для меня, как в Firefox. Я даже сбросил размер шрифта раздела: прямо вниз, и он по-прежнему центрирован. Вы использовали Firebug, чтобы узнать, на что влияет другой CSS это?
это работает, как это:
<html>
<head>
<style type="text/css">
div.categoryLinks {
margin: 1em 16px;
padding: 0 4px;
border-width: 1px 0;
border-style: solid;
border-color: #ece754;
background: #f7f5b7;
color: #a49f1c;
text-align: center;
font-size: 1.4em;
}
div.categoryLinks em {
font-size: 0.4em;
font-style: normal;
vertical-align: middle;
}
</style>
</head>
<body>
<div class="categoryLinks">
<em>SECTION:</em>
Page One ·
Page Two ·
<a href="link">Page Three</a>
</div>
</body>
Примечание: размер шрифта раздела изменен на 0.4 em от исходного 0.6 em, чтобы подчеркнуть точку.
Firefox отображает правильно. Свойство vertical-align является встроенным, что означает, что оно не применяется к элементам блока, таким как
и т. д.). Попробуйте добавить дисплей: inline и посмотреть, если это работает.
вертикальное выравнивание должно применяться только к элементам встроенного блока ( я думаю, что изображения-это единственные вещи, которые имеют это свойство макета по умолчанию), поэтому, чтобы использовать его для размещения встроенного элемента, сначала превратите его в встроенный блок, затем вы можете использовать поле и заполнение, чтобы расположить его подобно тому, как вы woudl обычный элемент блока:
div.categoryLinks {
margin: 1em 16px;
padding: 0 4px;
border-width: 1px 0;
border-style: solid;
border-color: #ece754;
background: #f7f5b7;
color: #a49f1c;
text-align: center;
font-size: 1.4em;
}
div.categoryLinks em {
font-size: 0.6em;
display:inline-block;
vertical-align:top;
font-style: normal;
padding: 2px 0 0 0;
}
вы должны настроить его немного для firefox 2 хотя, но это из-за того, что пример raer firefox не поддерживает сетевые стандарты. С другой стороны, вы не могли беспокоиться о настройке, так как немногие люди все еще используют ffx2, и это только очень незначительный недостаток дизайна.
я исправил эти проблемы, просто удалив:
white-space: nowrap;
от родителя div. Я не уверен, почему, но с добавлением этого правила Firefox не применяет:
vertical-align: middle;
У меня была та же проблема. Это работает для меня:
<style type="text/css">
div.parent {
position: relative;
}
/*vertical middle and horizontal center align*/
img.child {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
}
</style>
<div class="parent">
<img class="child">
</div>