CSS: размер шрифта: наследовать * 70%?

Есть ли способ указать размер шрифта для класса, который, скажем, составляет 70% от унаследованного размера шрифта?

У меня есть общий класс «кнопки», который настраивает мои кнопки с соответствующими границами, фоном и т. д. Я использую его в нескольких местах, в том числе в одном, где размер шрифта довольно мал, и в другом, где размер шрифта довольно большой.

<div style = "font-size: 26px;">
Push this: <input class = "button" type = "submit" value = "Go">
</div>
<div style = "font-size: 10px;">
Push this too: <input class = "button" type = "submit" value = "Go">
</div>

В обоих случаях я бы хотел, чтобы размер шрифта кнопки составлял около 70% от размера шрифта диапазона или div, в котором находится кнопка.

Могу ли я сделать это с помощью чистого CSS?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
8
0
11 946
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Пытаться:

font-size: 0.7em;

Дополнительная информация: Как изменить размер текста в CSS в A List Apart

Я не понимаю, как 0,7em соотносится с родительским размером?

Tom 17.11.2008 11:54

@Tom: em относительно текущего размера шрифта.

Chris Jester-Young 17.11.2008 12:15

em всегда относительно размера родительского шрифта. Но 0.7em НЕ дает вам 70%.

Treb 17.11.2008 12:16

@Treb: [необходима ссылка] (чтобы украсть ссылку из Википедии)

Powerlord 17.11.2008 16:50

В CSS, если вы задаете относительную единицу, она по умолчанию соответствует размеру, от которого вы унаследовали. Это означает, что вы можете просто определить размер шрифта кнопки как «70%».

Также есть две другие относительные единицы, удобные для размеров шрифта: em и ex. 1 em - это ширина буквы «M», 1 ex - высота буквы «x» - очевидно, также унаследованная.

Вы не должны использовать px как размер шрифта, как в вашем примере. px не подчиняется разрешению экрана. Например, на моем экране и то и другое 10 пикселей и 26 пикселей будет маленьким. Вместо этого вы должны использовать «pt» или даже начинать с «em».

Чтобы добавить к этому - я всегда считал, что лучше установить размер шрифта на 62,5% для элемента body, а затем работать с em везде. 62,5% работает с размером шрифта 10pt при размере шрифта браузера по умолчанию (в большинстве случаев).

Ian 17.11.2008 11:40

62,5% для меня звучит очень резко. У вас есть пример URL? Мне было бы интересно, как это здесь выглядит. Взамен получу скриншот.

ypnos 17.11.2008 12:45

более конкретно 1 em - это ширина буквы верхний регистр 'M'

Henrik Paul 17.11.2008 12:56
<input style = "font-size: 70%" class = "button" type = "submit" value = "Go">

?

Всегда избегайте размещения кода на странице, старайтесь сохранить его в таблицах стилей для удобства обслуживания и разделения.

John_ 17.11.2008 12:00
Ответ принят как подходящий

EM работают как проценты в том смысле, что размер базового шрифта всегда равен 1em, а 0,7em будет составлять 70% от этого (точно так же, как 1,2em будет эквивалентно 120% от размера базового шрифта). Чтобы это работало правильно, вам необходимо определить базовый размер шрифта в теле документа. Путем экспериментов я обнаружил, что размер шрифта: 77%; дает вам хороший базовый размер во всех браузерах (то есть делает рендеринг 1em в "нормальном" и удобочитаемом размере). Вы можете попробовать другие значения от 75% до 80% в зависимости от того, какое семейство шрифтов вы хотите использовать. Также имейте в виду, что относительные размеры шрифтов наследуются накопительно, например:

<style>
small { font-size: .8em; }
span.tiny { font-size: .8em } 
</style>

<small>This text is 80% of base size where as 
    <span class = "tiny">this text is 80% of 80% (or 64%) of base size</span>
</small> 

Это работает в вашу пользу, так как для достижения желаемого вам нужно всего лишь задать классу кнопок размер шрифта 0,7em (кнопки тогда всегда будут иметь размер шрифта, равный 70% от родительского объекта). Удачного кодирования!

2014 редактирование:

Стоит отметить, что поддержка модуля Root EM в браузере теперь настолько хороша *, что, если вы еще не используете его, стоит изучить. Корневой EM (rem) привязан к размеру корневого (документа) шрифта и, в отличие от «обычного» EM, на него не влияет вложенность - он всегда связан с размером корневого шрифта. В то время как em по-прежнему очень полезны для большинства размеров текста, именно потому, что делает учитывает вложенность, rem отлично подходит для таких вещей, как поля и отступы, которые вы, возможно, не захотите изменять размер с вложением (это частая причина смещения левых полей) , но размер которого вы делать хотите изменить вместе с размером корневого шрифта html (обычно с помощью медиа-запросы).

Вы можете узнать больше о EM и REM на Design Shack.

*) IE8 - единственный распространенный браузер (~ 5%), который его не поддерживает - если вам нужно поддерживать IE8, просто включите эквивалентный размер в пикселях до в декларацию rem.

Другие вопросы по теме