CSS: 100% размер шрифта - 100% от чего?

Есть many статьи и questions о процентном размере и других размерах. Тем не менее, я не могу узнать, какова должна быть ссылка процентного значения. Я понимаю, что это "одинаковый размер во всех браузерах". Я также читал это, например:

Процент (%): единица процента очень похожа на блок "em", за исключением нескольких фундаментальных различий. Прежде всего, текущий размер шрифта равен 100% (т.е. 12pt = 100%). При использовании единицы процента ваш текст остается полностью масштабируемым для мобильных устройств и для доступности.

Источник: http://kyleschaeffer.com/best-practices/css-font-size-em-vs-px-vs-pt-vs/

Но если вы скажете "т.е. 12 pt = 100%", значит, вам сначала нужно определить font-size: 12pt. Так оно работает? Сначала вы определяете размер в абсолютной мере, а затем называете это "100%"? Не имеет большого смысла, так как многие образцы говорят, что полезно поставить:

body {
  font-size: 100%;
}

Итак, делая это, ЧТО это размер шрифта относительно? Я замечаю, что размер, который я вижу на моем экране, отличается для каждого шрифта. Например, Arial выглядит больше, чем Times New Roman. Кроме того, если бы я просто сделал это, размер тела = 100%, это означало бы, что он будет таким же во всех браузерах? Или только если я сначала определю абсолютное значение?

UPDATE, SAT JUL 23

Я добираюсь туда, но, пожалуйста, несите меня.

Таким образом, значение% относится к размеру браузера по умолчанию, если я правильно понимаю. Хорошо, это приятно, но снова дает мне еще несколько вопросов:

  • Этот стандартный размер всегда одинаковый для каждой версии браузера, или они варьируются между версиями?
  • Я! (см. рисунок ниже) настройки для Google Chrome (никогда не смотрел это раньше!), и я вижу стандартные настройки "serif", "sans-serif" и "monospace". Но как это интерпретировать для других шрифтов? Скажем, я определяю font: 100% Georgia;, какой размер будет брать браузер? Будет ли он выглядеть стандартным размером для засечки или имеет шрифт "Грузия" стандартного размера для браузера.
  • На нескольких веб-сайтах я читал такие вещи, как Sizing text and line-height in ems, with a percentage specified on the body [..], was shown to provide **accurate, resizable text across all browsers** in common use today. Но из того, что я сейчас изучаю, я считаю, что на самом деле вы должны выбрать либо изменяемый размер текста (используя% или em, как и то, что они рекомендуют в этой цитате), либо иметь "точные, согласованные размеры шрифта в браузерах" (используя px или pt в качестве базы). Это верно?

Настройки Google:

Google Chrome Settinsg

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

enter image description here

Ответ 1

В браузере по умолчанию, что-то вроде 16pt для Firefox, вы можете проверить, перейдя в опции Firefox, щелкнув вкладку "Содержание" и проверив размер шрифта. Вы можете сделать то же самое и для других браузеров.

Мне лично нравится управлять размером шрифта по умолчанию на моих сайтах, поэтому в CSS файле, который включен на каждую страницу, я установлю BODY по умолчанию, например:

body {
    font-family: Helvetica, Arial, sans-serif;
    font-size: 14px
}

Теперь размер шрифта всех моих HTML-тегов наследует размер шрифта 14px.

Скажите, что я хочу, чтобы все divs имели размер шрифта на 10% больше, чем тело, я просто делаю:

div {
    font-size: 110%
}

Теперь любой браузер, который просматривает мои страницы, автоматически сделает все div на 10% больше, чем у тела, что должно быть примерно 15.4px.

Если я хочу, чтобы размер шрифта для всех div был на 10% меньше, я делаю:

div {
    font-size: 90%
}

Это приведет к тому, что все div имеют размер шрифта 12.6px.

Также вы должны знать, что, поскольку размер шрифта наследуется, каждый вложенный div уменьшает размер шрифта на 10%, поэтому:

<div>Outer DIV.
    <div>Inner DIV</div>
</div>

Внутренний div будет иметь размер шрифта 11.34px (90% от 12.6px), который, возможно, не был предназначен.

Это может помочь в объяснении: http://www.w3.org/TR/2011/REC-CSS2-20110607/syndata.html#value-def-percentage

Ответ 2

Я понимаю, что когда шрифт устанавливается следующим образом

body {
  font-size: 100%;
}

браузер отобразит шрифт в соответствии с пользовательскими настройками для этого браузера.

Спектр говорит, что% отображается

относительно размера шрифта родительского элемента

http://www.w3.org/TR/CSS1/#font-size

В этом случае я считаю, что это означает, что браузер установлен.

Ответ 3

Процент в значении свойства font-size относится к размеру родительских элементов. CSS 2.1 говорит об этом неясно и смутно (ссылаясь на "унаследованный размер шрифта" ), но CSS3 Text говорит это очень четко.

Родительом элемента body является корневой элемент, т.е. элемент html. Если не указано в таблице стилей, размер шрифта корневого элемента зависит от реализации. Обычно это зависит от пользовательских настроек.

Настройка font-size: 100% во многих случаях бессмысленна, поскольку элемент наследует размер шрифта своих родителей (приводя к одному и тому же результату), если ни одна таблица стилей не устанавливает свой собственный размер шрифта. Тем не менее, может быть полезно переопределить настройки в других таблицах стилей (включая таблицы стилей браузера по умолчанию).

Например, элемент input обычно имеет параметр в таблице стилей браузера, делая размер шрифта по умолчанию меньше, чем размер текста копии. Если вы хотите сделать размер шрифта одинаковым, вы можете установить

input {font-size: 100%}

Для элемента body логически избыточный параметр font-size: 100% используется довольно часто, так как считается, что он помогает в некоторых ошибках браузера (в браузерах, которые, вероятно, потеряли свое значение сейчас).

Ответ 4

Это относительно размера шрифта браузера по умолчанию, если вы не переопределите его со значением в pt или px.

Ответ 5

Извините, если я опаздываю на вечеринку, но в вашем редактировании вы сделаете замечание о font: 100% Georgia, на которое другие ответы не ответили.

Существует разница между font: 100% Georgia и font-size:100%; font-family:'Georgia'. Если бы это был весь сокращенный метод, размер шрифта был бы бессмысленным. Но он также устанавливает множество свойств по умолчанию: высота строки становится normal (или около 1,2), а также для стиля (неитальянный) и веса (не жирный).

Это все. В других ответах уже упоминалось все, что можно было упомянуть.

Ответ 6

Как вы убедительно показали, font-size: 100%; не будет отображаться одинаково во всех браузерах. Тем не менее, вы установите шрифт в свой CSS файл, так что он будет таким же (или резервным) во всех браузерах.

Я считаю, что font-size: 100%; может быть очень полезным при объединении с конструкцией на основе em. Как показано в этой статье, это создаст очень гибкий веб-сайт.

Когда это полезно? Когда ваш сайт должен адаптироваться к пожеланиям посетителей. Возьмем, к примеру, пожилого человека, который устанавливает размер шрифта по умолчанию в 24 пикселя. Или кто-то с маленьким экраном с большим разрешением, который увеличивает его размер шрифта по умолчанию, потому что он в противном случае должен косоглазиться. Большинство сайтов будут разбиты, но сайты на основе em могут справиться с этими ситуациями.

Ответ 7

Относительно размера по умолчанию, определенного этому шрифту.

Если кто-то открывает вашу страницу в веб-браузере, там используется шрифт и размер шрифта по умолчанию, который он использует.

Ответ 8

По моему мнению, это помогает вашему контенту корректироваться с разными значениями семейства шрифтов и размерами шрифтов. Таким образом, ваш контент масштабируется. Что касается вопроса о наследовании размера шрифта, мы всегда можем переопределить его, указав определенный размер шрифта для элемента.

Ответ 9

В соответствии с ВСЕ СПЕЦИАЛЬНЫЕ ЗНАКИ, НАХОДЯЩИЕСЯ НА 1996 ГОДА, процентные значения на font-size относятся к размеру родительского элемента (вычисленного).

<style>
div {
  font-size: 16px;
}
span {
  font-size: 75%;
}
</style>
<div><span>this font size is 12px!</span></div>

Это легко.

Что делать, если div объявляет относительный размер шрифта, например em s, или еще хуже, другой процент? См. "Вычисленное" выше. Независимо от абсолютной единицы относительная единица преобразуется в.

Остается только вопрос: когда вы используете процентное значение для корневого элемента, у которого нет родителя:

html {
  font-size: 62.5%; /* 62.5% of what? */
}

В этом случае см. "дубликат" этого вопроса. TL;DR: проценты в корневом элементе относятся к размеру шрифта браузера, который может отличаться для каждого пользователя.

Литература: