Выравнивание текста с IE9 в стандартном режиме - PullRequest
2 голосов
/ 24 марта 2011

Может ли кто-нибудь помочь мне вертикально центрировать текст внутри div, последовательно в разных браузерах. В IE9 ТОЛЬКО текст на один пиксель ближе к вершине родительского div. Все остальные браузеры отображают текст как положено.

Важно: я использую стандартный режим:

<!DOCTYPE html>

Вот пример HTML:

<!DOCTYPE html>
<div style="width:100px; height:16px; font-size:13px; font-family:Arial; line-height:1.2; background-color:red; color:White; vertical-align:middle">
<div style="line-height:16px">XXXXXXXXXX</div></div>

Ответы [ 3 ]

2 голосов
/ 24 мая 2012

Немного опоздал на вечеринку. Однако недавно я столкнулся с подобной проблемой. После некоторых размышлений я наткнулся на эту статью: Субпиксельные шрифты в IE9 .

Я думаю, что это напрямую связано с вопросами вертикального выравнивания шрифта в IE9. К сожалению, кажется, что нет исправления, так как это принудительная опция или настраиваемая пользователем (маловероятно).

Таким образом, похоже, что единственным решением является увеличение высоты строки, как упоминалось ранее.

1 голос
/ 24 марта 2011

Возможно, вы захотите взглянуть на следующее:

CSS: стандартный (динамический) способ централизации элемента по оси y

Есть несколько полезных ссылок, которые, вероятно, все еще будут применяться к IE9.

На основе вашего кода : вы устанавливаете высоту строки в нескольких местах. Попробуйте удалить свойство line-height:16px в вашем внутреннем div, фактически избавьтесь от внутреннего div, поскольку вертикальное выравнивание повлияет только на встроенные элементы.

Кроме того, убедитесь, что высота вашего контейнера достаточно велика для размещения текста (1.2 * 13), иначе вы можете столкнуться с проблемами, связанными с различными шрифтами или разными размерами шрифтов по умолчанию в разных браузерах.

Вероятно, происходит то, что 1,2 * 13 = 15,6, и в зависимости от того, как браузер округляет числа с плавающей запятой, это может учитывать сдвиг в 1 пиксель. Установите высоту строки 16 пикселей вместо 1,2 и посмотрите, работает ли это.

Вторая попытка :

.outer {
    background-color: red;
    color: white;
    width: 100px;
    height: auto;
    padding-top: 0px;
    font-family: Arial, sans-serf;
    font-size: 13px;
    line-height: 5.0;
}

применяется к:

<div class="outer">XXXXXXXXXX</div>

Если это что-то исправит, сделайте высоту строки достаточно большой, чтобы над / под буквой было свободное пространство. Установите высоту контейнера на auto и позвольте line-height контролировать высоту контейнера.

0 голосов
/ 02 мая 2011

Здесь есть ответ на этот вопрос:

http://www.sitepoint.com/forums/css-53/text-alignment-w-ie9-standards-mode-745359.html

У меня была такая же проблема с рендерингом текста в 1 пиксель, и он появлялся только с размером шрифта 13 пикселей в IE9.

добавление стиля CSS

    {
      height: 16px;
      line-height:16.99px;
    }

чтобы окружающий div исправил проблему для меня на IE7-9, FF и Chrome на Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...