Есть ли практические причины использовать «em» вместо «pt» единиц размера шрифта? - PullRequest
16 голосов
/ 08 декабря 2008

Одно правило CSS, которое я узнал, состоит в том, что вы должны использовать относительную единицу размера шрифта em вместо абсолютного pt. Общая идея состоит в том, чтобы установить размер шрифта в вашем теге body, например. "94%", а затем установите все остальные элементы с размером "em", как это. Аргументация:

  • затем вы можете изменить относительный размер всех размеров шрифта на вашем сайте, изменив размер шрифта тела в одной точке
  • Пользователи сами могут изменять размер шрифтов, так как они определены в «em»

Однако при использовании «em» вместо «pt» я постоянно сталкиваюсь с такими проблемами, как следующие: элемент с размером шрифта внедряется в другой элемент с размером шрифта и, таким образом, становится крошечным (в случае ниже одного словарное слово 0,8 из 0,8, а другое 0,8 из 1,2).

<html>
<head>
    <style type="text/css">
        body {
            font-size: 94%;
        }
        p {
            font-size: .8em;
        }
        li {
            font-size: 1.2em;
        }
        .vocabulary {
            font-size: .8em;
        }
    </style>
</head>
<body>
    <p>This is an <span class="vocabulary">egregious</span> test.</p>
    <ul>
        <li>This is in a <span class="vocabulary">superb</span> list.</li>
    </ul>
</body>
</html>

Конечно, на очень простых, простых HTML-сайтах это не проблема, но в реальном мире с импортированными таблицами стилей, которые, возможно, вы даже не создавали, и с динамическими сайтами, где элементы управления встроены в другие элементы управления, все они выводят HTML с, возможно, встроенным стилем. Я считаю, что веб-сайты с единичным размером шрифта «em» иногда невозможно поддерживать, и способ получить размер шрифта под контролем - просто преобразовать все в жесткие размеры «px».

Кроме того, я только что проверил четыре основных браузера, и у каждого из них есть горячие клавиши, которые увеличивают и уменьшают размер шрифтов в стиле «pt».

Итак, вот мои вопросы:

  • есть ли какая-то реальная причина, почему я должен использовать «em» вместо «pt»?
  • Есть ли хитрость в использовании размеров "em", чтобы я не столкнулся с проблемой размера встроенного шрифта выше?

Ответы [ 7 ]

11 голосов
/ 08 декабря 2008

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

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

Для работы местных органов власти в Великобритании были установлены целевые показатели, обеспечивающие соответствие веб-сайтов правилам Double A, одно из которых гласит: «Используйте относительные, а не абсолютные единицы в значениях атрибутов языка разметки и значениях свойств таблицы стилей». Смотри здесь .

2 голосов
/ 08 декабря 2008

1) IE6 по-прежнему широко используется и не может изменить размер шрифтов, определенных в px. => Проблемы с юзабилити. Только этого нет-нет.

2) См., Например, CSS Units .

3) Большинство авторов сходятся во мнении, что pt - это в основном единица печати: в худшем случае используйте их в таблицах стилей печати, где проблема изменения размера исчезает ...

2 голосов
/ 08 декабря 2008

Из моего опыта веб-пользователя, которому нравится большой текст:

Указывать «pt» для размеров шрифта можно, если вы не указали размеры элементов в px / pt. Потому что, когда вы это делаете, а я увеличиваю размер текста, половина текста переполняется, а элемент слишком часто становится скрытым.

Это не должно искажать ваш макет - просто оставьте место для всего, чтобы расти вниз. Я справлюсь с прокруткой страницы лучше, чем не вижу текст.

2 голосов
/ 08 декабря 2008

Даже если вы жестко закодировали размер шрифта в пикселях, вы все равно можете использовать em для единицы измерения, чтобы указать поля, длину и т. Д., Аналогично использованию em quad для отступа абзаца в Печатный станок в любом случае.

Редактировать (После того, как плакат был изменен с px на pt): если вы хотите быть «безупречным пикселем», безопаснее использовать px, а не pt, поскольку в разных операционных системах разные настройки dpi, и пользовательские изменения резко меняются, особенно в Linux. Точка PostScript определена как 1/72 дюйма. «Дюйм» на экране может находиться в диапазоне от 72 пикселей до того, что плавает на вашей лодке.

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

Некоторые профессиональные CSS-разработчики, которых я знаю, используют «px» для определения размеров шрифта в своей основной таблице стилей для современных браузеров, а затем имеют отдельную таблицу стилей для IE6, которая определяет их с использованием относительных единиц измерения. Таким образом, они обеспечивают удобство использования и позволяют увеличивать шрифты во всех браузерах, но без ущерба для их дизайна в современных браузерах.

(Они на самом деле идут дальше этого: их таблица стилей IE6 отключает большинство блочных форматов и просто раскладывает все, используя общий, мобильный вид. Таким образом, пользователи IE6 могут видеть простой макет, а все остальные получают профессиональный вид где блоки на самом деле плавают правильно.)

1 голос
/ 08 декабря 2008

px: изменения в зависимости от разрешения экрана и других зависимых проблем

em: независимо от разрешения экрана оно будет одинаковым для всех

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