Текст не вертикально центрирован
Я использую свойство line-height для выравнивания текста с иконками в меню. Я создал упрощенную версию (без значков), чтобы проиллюстрировать мою проблему. Кажется, что проблема связана с общим выравниванием шрифтов по вертикали.
Вы можете увидеть эту проблему на jsfiddle: http://jsfiddle.net/KFxG3/1/
Код очень прост:
<div>qb - Some text - qb</div>
Добавление стиля:
div {
background-color: green;
height: 22px;
line-height: 22px;
font-size: 20px;
font-family: 'Segoe UI', 'Verdana', 'Arial';
}
Вот как это выглядит:
![This is how it looks like]()
И вот как это ДОЛЖНО выглядеть:
![And this is how it SHOULD look like]()
Почему это происходит в новых браузерах? Я тестировал его на 64-разрядной версии Windows 8.1 в Firefox 27.0.
EDIT: Я хочу знать, ПОЧЕМУ браузеры не отображаются правильно. Маленькая буква типа "a" должна иметь одинаковое пространство сверху и снизу "зеленого", когда применяется высота линии, высота которой равна размеру контейнера. Но рендеринг ошибочен.
ИЗМЕНИТЬ № 2: проблема с шрифтом. У Segoe UI, похоже, странная базовая линия. При использовании Arial, Verdana или любого другого вертикального выравнивания лучше подходит (но это также не идеально). → http://jsfiddle.net/KFxG3/22/
Ответы
Ответ 1
Каждый браузер поддерживает разные типы файлов, из-за этого иногда браузеры не могут отображать свойства шрифта, как ожидалось, и проблема с высотой строки.
Для платных шрифтов всегда добавляйте все файлы расширения шрифтов в папку шрифтов/вендоров и используйте следующий формат для добавления шрифтов в таблицу стилей.
формат шрифта:
@font-face {
font-family: 'MyWeb';
src: url('webfont.eot'); /* IE9 Compat Modes */
src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('webfont.woff2') format('woff2'), /* Super Modern Browsers */
url('webfont.woff') format('woff'), /* Pretty Modern Browsers */
url('webfont.ttf') format('truetype'), /* Safari, Android, iOS */
url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
}
Для получения дополнительной информации вы можете обратиться по ссылке ниже:
https://css-tricks.com/snippets/css/using-font-face/
Ответ 2
JSFiddle!
Помните, если вы устанавливаете фиксированную высоту, а также корректируете размер шрифта, высоту строки, то ее граница должна быть беспорядочной. Вы либо делаете его поплавком, либо удаляете высоту и позволяете ей занимать столько же высоты, сколько требуется, либо вручную устанавливаете большую высоту, но все же различные методы рендеринга, используемые в разных браузерах, затруднят вам поддерживать одинаковый внешний вид браузера, поэтому я предлагаю метод, который я использовал в JSFiddle.
вы можете компенсировать разницу, применяя отступы.
padding-bottom: 5px;
Ответ 3
Вы хотите добавить/изменить a line-height
.
Чтобы получить q
и b
в середине, используйте line-height:16px;
, однако some text
будет выглядеть изворотливым. Размещайтесь с 16px;
, и вы можете найти то, что хотите.
Пример:
div{
line-height:16px;
}
Ответ 4
Вы можете обернуть свою текстовую часть в другую <div>
и попробовать display:table
и display:table-cell
с помощью verical-align:middle
Хотя это отличается от вашего требования, но я думаю, что вы должны практиковаться таким образом:
Удалить высоту линии полностью из родительского
HTML
<div class="container"><div class="content">qb - Some text - qb</div></div>
CSS
.container {
background-color: green;
height: 55px;
display:table; // here it is
font-size: 20px;
font-family: 'Segoe UI', 'Verdana', 'Arial';
}
.content{
display:table-cell; // here it is
vertical-align:middle;
}
Пример скрипта
Ответ 5
div - это неправильный элемент для вас в этом случае. Просто попробуйте этот вариант и сравните:
span {
background-color: green;
height: 22px;
line-height: 22px;
font-size: 20px;
font-family:'Segoe UI', 'Verdana', 'Arial';
}
div {
background-color: green;
height: 22px;
line-height: 22px;
font-size: 20px;
font-family:'Segoe UI', 'Verdana', 'Arial';
}
и
<span>qb - Some text - qb|ÜÄÖ</span>
<br><br>
<div>qb - Some text - qb|ÜÄÖ</div>
Ответ 6
Браузеры действуют нормально. Вы можете быть смущены, потому что ваш размер шрифта, 20 пикселей меньше, чем высота вашей линии, 22 пикселя, и похоже, что он будет вписываться. Но это не так.
В качестве примера установка размера шрифта H1 на 24px создаст высоту строки 39 пикселей. Размер шрифта 12px приведет к высоте строки 18px.
Ответ 7
Попробуйте добавить дополнение к вашему коду.
Пример:
div {
background-color: green;
height: 22px;
line-height: 22px;
font-size: 20px;
font-family: 'Segoe UI', 'Verdana', 'Arial';
padding: 5px 0;
}
Ответ 8
Я предполагаю, что это то, что вы ищете:
http://jsfiddle.net/KFxG3/19/
Вам нужно добавить строку ниже в ваш CSS.
padding-bottom:5px;
Однако это не значит, что строка должна "работать". Насколько мне известно, нижняя часть букв, таких как p и q, не учитывается в среднем значении высоты шрифта. Чтобы получить довольно точный результат, вам придется измерять большую заглавную букву.
Вам не нужна высота div, кстати, если вам не нужна какая высота будет снаружи.
Я бы посоветовал вам заглянуть в "размер коробки". Чтобы предотвратить расширение проложенного элемента наружными размерами.
Кроме того, использование старых браузеров в качестве меры правильных и неправильных способов сделать вещи, вероятно, не самый безопасный подход к любым выводам, связанным с CSS.
Ответ 9
Это похоже на 4 года, но иногда вам нужно проверить правильность размеров коробки.
a{
box-sizing: content-box
}
Затем ваша высота и высота линии должны центрировать текст.
Ответ 10
Я знаю, что могу немного опоздать, но лучше поздно, чем никогда. Да, вы правы - это проблема с вашим шрифтом, в вашем случае с восходящим.
Чтобы это исправить, вам нужно изменить опечатку (в некоторых других случаях).
Одно решение для пользователей Mac:
"Чтобы отредактировать их в шрифте, вам нужно скачать Apple Font Tool Suite. После установки вам нужно открыть терминал и перейти в каталог, содержащий ваш шрифт. После этого введите следующую команду:
ftxdumperfuser -t hhea -A d font.ttf
Это создаст файл с именем font.hhea.xml, откроет этот новый файл в текстовом редакторе и отрегулирует значения для ascender и descender. Как правило, если ваш шрифт расположен слишком низко, вы хотите уменьшить его и увеличить. После редактирования и сохранения введите следующую команду в терминал, чтобы восстановить файл Font:
ftxdumperfuser -t hhea -A f font.ttf
Теперь вы можете использовать файл font.ttf в вашем приложении. Если шрифт по-прежнему неправильный, просто повторите описанную выше процедуру, пока вы не будете счастливы. "- Источник: Энди Ярдли
Ответ 11
Вы применяете определенную высоту для div и line-height. Вам не нужно ничего, чтобы центрировать вертикальный текст.
div {
background-color: green;
font-size: 20px;
font-family: 'Segoe UI', 'Verdana', 'Arial';
}
Пример: http://jsfiddle.net/KFxG3/2/
Ответ 12
vertical-align: middle;
padding-bottom:5px;
вам нужно добавить в свой css
Ответ 13
Вот обновленная скрипка http://jsfiddle.net/KFxG3/16/
Вам нужно удалить элемент высоты. div вычисляет высоту в соответствии с размером шрифта.
CSS
div{
background-color: green;
font-size: 20px;
font-family: 'Segoe UI', 'Verdana', 'Arial';
}