Как установить нормальный и жирный шрифт независимо с помощью CSS?

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

Использование font-weight: lighter в этом случае не работает, потому что оно приводит к тому, что жирный текст становится обычным, тем самым нарушая функциональность полужирного шрифта.

Каков правильный CSS для достижения этой цели?

<html>
<style>
p {
  font-weight: lighter;
}
</style>
<body>
<p>Light weight, <b>bold weight</b></p>
</body>
</html>

он заставляет жирный текст иметь обычный вес, тем самым нарушая функциональность жирного шрифта --> нет, это не так

Temani Afif 19.05.2024 00:27

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

telenachos 19.05.2024 00:33
b имеет font-weight: bold; по умолчанию, поэтому вес шрифта, который вы применяете к p, не имеет большого значения (если только у вас нет дополнительного кода, который вы должны нам показать)
Temani Afif 19.05.2024 00:35

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

telenachos 19.05.2024 00:41

@telenachos — Это сложно. Браузеры делают разные вещи. В некоторых браузерах элементы b по умолчанию имеют значение font-weight:bolder, другие — font-weight:bold. В вашем примере в первых браузерах вес шрифта, используемый элементом b, уменьшается до нормального, в последних браузерах он остается жирным.

Alohci 19.05.2024 01:09

@PoulBak нет наследования, когда вы устанавливаете толщину шрифта p, а для b установлен шрифт по умолчанию. Всегда будет учитываться тот, что на b (определяется браузером).

Temani Afif 19.05.2024 01:13

@PoulBak i.sstatic.net/pB6teObf.png Я по-прежнему настаиваю на том, что здесь нет наследования, потому что к элементу b применяется шрифт по умолчанию. Проверьте себя и проверьте код, чтобы увидеть «нет наследования».

Temani Afif 19.05.2024 01:18

@TemaniAfif: Извините, вы правы (почему я просто не запустил фрагмент кода)?

Poul Bak 19.05.2024 01:28

@TemaniAfif — здесь определенно сложно. В спецификации CSS Fonts Level 4 указано font-weight:bolder«Вычисляемый вес рассчитывается на основе унаследованного значения веса шрифта с использованием приведенной ниже диаграммы.. Firefox по умолчанию устанавливает для элементов b значение font-weight:bolder и спецификацию HTML. В разделе рендеринга говорится, что это ожидаемое поведение, хотя Chromium не соответствует требованиям. Лично я считаю, что использование «унаследованного» здесь неудачно. Это не то, что мы обычно называем наследованием.

Alohci 19.05.2024 01:29
Приемы 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 сценарий полностью изменился.
0
9
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

CSS:

p {font-weight: lighter;}
b, strong {font-weight: bold;}

Вы также можете переназначить свои шрифты на желаемую толщину шрифта по умолчанию с помощью пользовательских правил @font-face:

/* map light (300) to regular (400) */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 400;
  src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLDz8Z1xlFQ.woff2) format('woff2');
}

/* heavy (800) to bold (700) */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 800;
  src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLDD4Z1xlFQ.woff2) format('woff2');
}

body{
    font-family: 'Poppins';
}
<p>Light weight, <b>bold weight</b></p>
<p>Light weight, <strong>bold weight</strong></p>

В приведенном выше примере мы сопоставляем фактический Poppins Light/300 с обычным/400. Вы можете расширить эту концепцию, например, настроить жирность по умолчанию для (по умолчанию) выделенных жирным шрифтом элементов, таких как <strong>, или заголовков, таких как <h1-5> (например, если вы считаете, что жирный шрифт по умолчанию слишком толстый или слишком тонкий).

Кроме того, я рекомендую избегать относительных начертаний шрифтов, таких как lighter или bolder, поскольку они не очень интуитивно понятны (см. документацию mdn: «Значение относительной толщины» ). Похожий пост «Выделение текста жирным шрифтом не работает на разных устройствах»

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