Определение размера шрифтов с использованием «em» по-прежнему актуально? - PullRequest
63 голосов
/ 13 января 2010

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

Учитывая эти (предположительно незначительные) проблемы и учитывая недавний прогресс, достигнутый основными браузерами в решении проблем доступности, таких как масштабирование / масштабирование страницы, используется em для определения размера шрифтов, которые все еще рассматриваются стоит? *

* устаревшая поддержка браузера (IE6) исключена.

Ответы [ 8 ]

41 голосов
/ 13 января 2010

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

Если вы будете использовать этот метод, не нужно рассчитывать

Вы можете установить размер шрифта для тела на 62,5% (что составляет 62,5% от значения по умолчанию для 16 пикселей), что соответствует 10 пикселям или 0,625EM. Теперь вы можете установить размер шрифта в EM с помощью простого для запоминания преобразования, разделив px на 10.

* 12px = 1.2EMs
* 13px = 1.3EMs
* 16px = 1.6EMs
* 8px = 0.8EMs
* etc…

Это делает все СУПЕР легко запоминающимся и устраняет необходимость в таблицах преобразования. Конечно, вам все равно нужно будет использовать таблицу преобразования для вложенных элементов при использовании EM, если вы не конкретизируете свой CSS, что является отдельной проблемой.

Но 76% намного лучше, и вы можете использовать это для расчета http://pxtoem.com/

Да, это все еще актуально:

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

и

IE 7 и 8 также не меняют размер текста в пикселях. У них действительно есть масштабирование страницы, но некоторые люди предпочитают увеличивать только размер текста.

Вот краткое изложение того, что хорошо и что плохо в настройке шрифта в целом.

Размер шрифта в CSS http://easycaptures.com/fs/uploaded/213/2470522253.png

Мне лично нравится ЭМС. Другим, например, Крису Койеру из CSS-Tricks.com, нравятся пиксели. ( У Криса есть отличная статья о различных единицах шрифта ).

Это действительно сводится к личным предпочтениям.

Почти похожие или похожие вопросы по SO

Должны ли мы по-прежнему использовать em и% для определения размера шрифта элементов сайта?

Есть ли смысл использовать относительный размер шрифта в CSS?

Почему em вместо px?

Размер шрифта в CSS -% или em?

Размер шрифта CSS: относительные и абсолютные значения. Что использовать?

Проблема с EM

Использование относительного вместо фиксированного размера в CSS

Полезный онлайн-инструмент для px to em

http://pxtoem.com/

http://riddle.pl/emcalc/

http://convert -to.com / пикс пикс к эм-conversion.html

Преобразование всего сайта из px в em (Этот инструмент все еще находится в разработке)

http://converter.elementagency.com/

Приложение EM Calculator AIR (будет работать на всех ОС)

http://jameswhittaker.com/journal/em-based-layouts-vertical-rhythm-calculator/

http://jameswhittaker.com/projects/apps/em-calculator-air-application/

Приложения для Windows

http://www.thebrightlines.com/2009/11/16/pixem-pixel-to-em-converter/

http://www.storkas.com/Projects.aspx(go внизу)

Таблица перевода пикселей в Ems для CSS

http://jontangerine.com/silo/css/pixels-to-ems/

http://reeddesign.co.uk/test/points-pixels.html

emchart

http://aloestudios.com/tools/emchart/

http://aloestudios.com/code/emchart/

Еще несколько статей на эту тему

http://www.d.umn.edu/itss/support/Training/Online/webdesign/type.html

20 голосов
/ 14 апреля 2010

В прошлом я создавал полностью масштабируемые сайты. Фактически, каждое измерение на сайте моей компании (http://kingdesk.com) основано на них. Во всей моей недавней работе я отказался от такой практики по четырем причинам:

  1. EM Техническое обслуживание - это b * tch. Одно дело получить правильную математику для вложенных элементов во время первоначального проекта, но переориентация себя через некоторое время обременительна - до такой степени, что просто вставляет фиксированные единицы в ущерб нарушению эффекта em-zooming.
  2. Браузеры прошли долгий путь за последние 2 года. Текущая версия каждого основного браузера поддерживает масштабирование страниц.
  3. Это правда, что эти сайты менее доступны для слабовидящих пользователей в IE6, но есть множество свободно доступных инструментов, которые решают эту проблему. Если нет разумной альтернативы, у меня есть моральное обязательство облегчить их потребность. Если у моей входной двери есть 4 пандуса, доступных для ADA, я не собираюсь демонстрировать шаги и заменять их на 5-й.
  4. Я полагаю, это экономит мне 20% времени на разработку.

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

О, и если вам интересно, я больше не пытаюсь сделать сайты выглядящими идеальными пикселями в IE6. Они все еще судоходны и достойно выглядят. Но время идет, и 9-летние браузеры получают внимание, которое им причитается.

11 голосов
/ 13 января 2010

Эта статья, опубликованная Ричардом Раттером в "A List Apart", по-прежнему актуальна,

Как изменить размер текста в CSS http://www.alistapart.com/articles/howtosizetextincss/

Если вы посмотрите на итерации, выобратите внимание:

Размер текста в пикселях - итерация 1

В результате Safari и Firefox по-прежнему изменяют размер текста, тогда как IE6 и IE7 этого не делают.Размер текста можно изменить в Opera и IE7 с помощью инструмента масштабирования страницы, который увеличивает макет страницы, текст и изображения в пределах.

Размер текста в ems - итерация 2

Результаты показывают, что во всех браузерах текст в настройке среднего браузера отображается идентично тексту в пикселях.Это также демонстрирует, что размер текста в ems можно изменить во всех браузерах.Однако IE6 и IE7 недопустимо преувеличивают малость и масштабность текста с измененным размером.

Размер тела в процентах - итерация 3

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

Установка высоты строки в пикселях - итерация 4

Результаты показывают, что высота строки 18px наследуется всем текстом на странице .... К сожалению, результаты показывают, что высота строки 18px не масштабируется IE6 и IE7, когда текстизменено, это означает, что наибольшее значение появляется для сжатия текста.

Настройка высоты строки в ems - итерация 5

Результаты показывают точный, согласованно измененный размер текста и высоту строкиво всех браузерах.Отлично.Или почти так.

Проблема моноширинного пространства Safari - итерация 6

Результаты показывают одинаково измененный размер текста и высоту строки во всех браузерах, включая моноширинный текст в Safari 2.

Хотя эта статья датирована 2007 годом, она все еще очень актуальна.Установка размеров шрифта - это больше, чем просто установка em (или px).

5 голосов
/ 12 августа 2010

Не используйте em, когда вы действительно имеете в виду%.Единственная причина, по которой em работает, заключается в том, что в CSS 1em, который должен представлять размер буквы «M» ( em происходит от «M») на самом деле эквивалентно размеру шрифта.Поэтому, когда вы пишете 1em, вы на самом деле пишете «100% от унаследованного размера шрифта ».Em предназначен для использования при указании размеров блока относительно размера шрифта (что редко, действительно очень редко).

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

Не сломается ли мой макет магическим образом, если я использую ems? Конечно, нет, это просто желаемое за действительное!

Предусматривают ли современные браузеры масштабирование текста?

Короче: не по умолчанию.Браузеры предлагают масштабирование страницы по умолчанию, и это скрыто глубоко в строке меню, обычно видимой.Вы можете ожидать, что некоторые из ваших пользователей будут знать сочетание клавиш Ctrl + MouseWheel, но реальное увеличение текста сложнее.С современной тенденцией к отказу от строки меню (примечание: по состоянию на момент написания бета-версия FF4 по умолчанию также покончила с ней), вы должны учитывать, что пользователям, которым требуется масштабирование текста, действительно нужны .Я говорю это потому, что тенденция обучающих программ / советов в сети заключается в том, чтобы просто прославлять эластичный макет и возможность изменять размер текста, но на самом деле это не проблема.К сожалению, слишком много «профессионалов» в макетах упругих / их / жидких полностью упускают из виду: сайт должен выглядеть хорошо, если я увеличу до 300% или выше!Если это выглядит просто хорошо для таких вещей, как 130% или 170%, то это совершенно бессмысленно и бесполезная трата усилий, и только действительно полезно, когда они были достаточно глупы, чтобы установить базовый шрифт примерно на 10px или ниже (слишком мал для больших текстовых текстов).

Другая проблема заключается в том, что «некоторые браузеры не масштабируют», из них IE6 является единственным релевантным, потому что он все еще занимает небольшую долю в Интернете.Если вы думаете иначе, вы, вероятно, читали некоторые статьи 2002 года или около того (т. Е. Через 1 год после его появления), осознав реальность:

  • Ваша аудитория использует IE6 илучше не знает?Если у вас нет статистической поддержки, предположим: НЕТ.Кроме того, вы должны сначала разработать для IE6?Ответ всегда: ада НЕТ.Разработайте в самом технически продвинутом, всеобъемлющем и совместимом со стандартами браузере, который вы можете найти.Обычно перетягивание каната происходит между Safari и Opera.Firefox не сильно отстает, но обычно реализует их как -moz- rules и медленно конвертирует в не -moz- правила.

  • Каковы шансы того, кто использует IE6?на самом деле знать инструменты размера шрифта?Если сомневаетесь, примите Ноль.Каковы шансы того, что люди на самом деле используют IE6 (в наше время) заботятся о размере шрифта всех вещей?Если вы сомневаетесь, принимайте ноль.

  • Если у вас действительно есть пользователи IE6, то одна невинная вещь, которую вы можете сделать, это дать им информативный толчок в правильном направлении, дискретно.Пример: "Ваш браузер, Internet Explorer 6, содержит множество недостатков безопасности . Для вашей безопасности и безопасности активов вашей компании рекомендуется обновить (или попросить администратора обновить) до более новой версии.: http://www.microsoft.com/nz/windows/internet-explorer/default.aspx (это абсолютно бесплатно!) "

Также может быть полезно знать, что текущая тенденция (для таких сайтов, как Google) составляет убей IE6 как можно скорее! Ты ни в коем случае не профессионал, поддерживая этот проклятый браузер почти десять лет назад вместе с другими чудовищами, такими как IE5.5.Прежде чем читать советы по веб-дизайну, проверьте дату.

Как использовать шрифты разных размеров

  • pt («точки») - размер для печати, а только для печати !Точка определяется как 1/72 дюйма и примерно 0,3527 мм. Никогда не используйте pt для стилей экрана , потому что браузер должен будет угадать;и многие браузеры действительно ужасно угадывают!A pica составляет 12 пт.

    Хотелось бы, чтобы был вежливый способ сказать это, но всякий раз, когда вы видите точки, используемые для стиля экрана (будь то сценарий сброса в режиме онлайн, сценарий ванили и т. Д.), Автор был идиотом.Даже одно простое пробное представление должно показывать, что измерение точки отключено.

  • ex (сокращение от x-height) - это причудливая единица CSS, которая, есливам повезло, что вы никогда не сможете использовать.

  • px ("пиксель") - более точная кросс-браузер И кросс-платформенная единица измерения тамявляется.В то время как ваш браузер не может точно знать, какой у экрана (в мм / дюймах) экран, точность pixel perfect довольно проста.Пользовательские пиксели в настройках (базовых) размеров шрифта для отображения на экране различных ключевых элементов, в частности, когда эти элементы сами по себе являются идеальными.Простой пример: текст на изображении.Даже если вы используете только значения em или% во всем коде, вы все равно полагаетесь на базу 16 пикселей, установленную браузером (при отображении на экране).

  • % - относительный размер.Используйте% всякий раз, когда вы просто хотите сказать: это во много раз больше / меньше, чем родитель.Он может быть использован в качестве основы, и, таким образом, теоретический стиль может быть использован как для экрана, так и для печати и других средств массовой информации.Но (и это только мое личное мнение) вы, вероятно, захотите создать отдельный стиль для каждого носителя, где по крайней мере вы устанавливаете наиболее подходящий базовый размер шрифта и семейство для этого конкретного носителя.Это вряд ли "слишком много работы".

  • em (как в "M") относится к размеру буквы M и является типографским измерением (как point ), но в CSS он просто равен размеру шрифта, при работе с экраном .Если вы имеете дело с печатью, бог знает, не вернется ли она к типографски правильному «размеру М» вместо «размера гарнитуры» (помните, что CSS не только для экрана).Наиболее целесообразно использовать em при указании размера для вмещающего блока относительно текста.Используйте его только тогда, когда вы не можете использовать%, так как процент более понятен и лучше код в целом.

  • именованные размеры: xx-small, x-small, small, normal,больших и т. д. следует избегать!Вы можете заметить, хотя экспериментирование, что «маленький» составляет практически 12px или 75%, но намного четче.Тем не менее, они противоречивы кросс-браузер.Small в Firefox меньше, чем small в Safari, поэтому никогда не используйте их.

Правило большого пальца: всегда пишите то, что вы имеете в виду, в контексте с кратким синтаксисом.


Реальный вопрос: как я могу дать своим пользователям возможность изменять размер текста

Пользователи, которым нужен крупный текст, - это пользователи с плохим зрением.Плохое зрение не следует путать с полной слепотой, когда текст имеет определенный размер.Учитывая, насколько широки типы глазных проблем, обычно предлагая небольшое увеличение размера, например, 130% или 160% или около того, просто не достаточно близко.Вы просто пытаетесь проявить фантазию, и это совсем не работает !

То, что вы хотите, - это дать вашим пользователям возможность изменять размер текста, который они хотят прочитать.И рекомендация состоит в том, чтобы предложить простой A / A (второе «A» должно быть меньше; полезно дополнить его текстом «нормальный», «в 2 раза больше» и т. Д.).Поместите это где-нибудь видимым, наиболее распространенная позиция находится в правом верхнем углу содержимого , которое пользователь хочет прочитать.Контекст «контента» очень важен:

  • Пользователи заботятся только о том, что они хотят, они хотят прочитать.Они не являются полностью слепыми, и вы увеличиваете базовый размер шрифта - это не совсем "излечение слепоты".Если у вас есть заголовок в 50px, да, они, вероятно, могут видеть это хорошо, нет необходимости делать это в 150px!Вы можете очень легко включить переключатель размера шрифта в статье, чтобы он влиял только на текст, и это сработает замечательно!

  • Сделайте ваш сайт удобным для пользователя;если вам нужен волшебный переключатель, чтобы сделать этот текст больше, чтобы некоторые из ваших пользователей могли его прочитать, то вам, вероятно, нужно сделать его больше по умолчанию!Примечание. Интерфейс, предназначенный для многократного использования, такой как панель управления, менее подвержен влиянию, поскольку вашим пользователям нужно только надеть очки и прочитать этот мелкий шрифт один раз, но все же он должен быть в значительной степени легкодоступным для всех.(Я имею в виду приемы, по которым трудно совершать деструктивные действия, чтобы случайно нажать на них, которые имеют приоритет над такими проблемами)на размер шрифта)

    • в первую очередь убедитесь, что пользователь должен использовать один из браузеров с функциями «Нет стиля» или «Стиль доступности» (см. Opera): ваш сайт выглядит хотя бы несколько прилично,Пользователи с реальными проблемами (а не просто дурачиться) с большей вероятностью используют их, а затем сразу же пытаются изменить их размер.

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

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

    • Тогда вы можетебеспокоиться о любой другой головной боли, связанной с упругой компоновкой.

    • Хотя все это анализирует высоту строки и обязательно выбирайте значение, которое изящно масштабируется для ваших приращений и гарнитуры.

    Примечание:очень большие размеры шрифтов не редкость, наоборот.Как правило, предпочтительными размерами являются 12px (у вас нет ничего ниже базового, никогда!), 16px и просто monster large .

4 голосов
/ 14 января 2010

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

Проценты и Ems не являются взаимозаменяемыми - хотя может быть, а может и не быть предпочтительным, указывать размер шрифта относительно родителя как 80%, а не 0,8em, например, то же самое не выполняется для других мест. Если мне нужно поле 1em вокруг элемента, которое полностью отличается от указания 100%, которое в этом случае будет зависеть от количества места, которое элемент занимает.

Указание абсолютных единиц приведёт дизайн в хаос. Если пользователь выбирает увеличить свой шрифт, некоторые браузеры могут не масштабировать текст - и при этом размер пикселя не должен зависеть от размера точки. Существует также проблема, заключающаяся в том, что если вы используете относительные размеры для шрифтов и абсолютные размеры для других измерений, то ваш дизайн, вероятно, умрет ужасной смертью, поэтому вам следует указать все измерения относительно, где это возможно, что означает использование ems. Браузеры, которые путают «увеличить размер шрифта» с «увеличить эту веб-страницу» на том основании, что «пользователь хочет видеть все больше и будет сохранять страницу такой, какой задумал дизайнер», ошибочны, какой бы полезной она ни казалась. Именно такие вещи привели к тому, что HTML стал таким большим беспорядком.

Я также не вижу смысла в указании размера основного шрифта 62,5% - хотя это может облегчить измерения, потому что 1em = 10px, есть пара проблем. Во-первых, вы все еще технически работаете в пикселях, а во-вторых, предполагается, что размер шрифта по умолчанию для пользователя равен 16px. Если вы полагаетесь на это соотношение где-либо в макете (например, сопоставление размеров изображения), ваш дизайн может пострадать, если у пользователя будет другой размер шрифта по умолчанию, и если вы не полагаетесь на него, и все относительно, тогда размер шрифта не не имеет значения, потому что все будет соответствовать.

Так что да, ЭМС все еще стоит.

4 голосов
/ 13 января 2010

Несмотря на то, что это разрешено, я всегда чувствовал, что размер шрифтов с помощью em немного глупый. Когда используется для определения размера шрифта, это относительная мера, и я думаю, что это только добавляет путаницы в ваш CSS Если вы действительно хотите задать размер шрифта относительно размера родительского шрифта, используйте проценты. (font-size: 0.8em эквивалентно font-size: 80%, но процент более чувственный.)

В противном случае используйте одну из абсолютных единиц. Браузеры теперь отлично справляются и масштабируются.

0 голосов
/ 14 января 2010

Я никогда не использую размеры в пикселях для шрифтов ни в одной программе (за исключением Photoshop, я полагаю, поскольку он по умолчанию был в пикселях) Я всегда использовал размер точек (например, в Word) и с тех пор перешел к масштабированию относительно CSS с em. Я устанавливаю тело font-size, затем масштабирую, используя em.

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

0 голосов
/ 13 января 2010

Размер шрифтов в ems не имеет особого смысла, потому что 1 em - это размер шрифта , по определению.

Определение размера других элементов в ems имеет решающее значение, поскольку это означает, что когда вы решите изменить размер шрифта, вам не придется полностью терять все поля, отступы и другие аспекты макета.

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