Сброс размера шрифта CSS?

В моем коде я использую css, который устанавливает для свойства HTML font-size разные проценты в зависимости от ширины экрана, поэтому любые значения rem изменяются соответствующим образом, но теперь все мои размеры шрифта испорчены. Я пробовал использовать сброс CSS и настройку body font-size, но это кажется, не работает. Вот фрагмент:

@media only screen and (max-width:75em) {
    html {
        font-size: 59%
    }
}

@media only screen and (max-width:56.25em) {
    html {
        font-size: 56%
    }
}

@media only screen and (min-width:112.5em) {
    html {
        font-size: 65%
    }
}

body {
    box-sizing: border-box;
    position: relative;
    line-height: 1.5;
    font-family: sans-serif;
    font-family: 'Source Sans Pro', sans-serif;
    padding-top: 3.8rem;
    width: 100vw;
    font-size: 100%;
}

Обратите внимание, что это стройный компонент, импортированный с использованием тега слота.

Мне не понятно, какой вы хотите, чтобы размер шрифта в теле был - относительно рем или нет?

A Haworth 01.04.2024 09:09

нет, я хочу, чтобы это было 100%, например. браузер по умолчанию.

Mulham Alamry 03.04.2024 16:01
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
97
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
@media only screen and (max-width:75em) {
    html {
        font-size: 59% !important;
    }
}

@media only screen and (max-width:56.25em) {
    html {
        font-size: 56% !important;
    }
}

@media only screen and (min-width:112.5em) {
    html {
        font-size: 65% !important;
    }
}

body {
    box-sizing: border-box;
    position: relative;
    line-height: 1.5;
    font-family: sans-serif;
    font-family: 'Source Sans Pro', sans-serif;
    padding-top: 3.8rem;
    width: 100vw;
    font-size: 100%;
}

Я попробовал ваш код в браузере Google Chrome и увидел, что он работает корректно https://codepen.io/agokselb/pen/JjVORBE . Не могли бы вы попробовать приведенный выше код? Возможно, браузер, классы не перезаписывают или не поддерживают модуль em.

Хотя технически это работает, !important следует использовать разумно, см. ответы на: stackoverflow.com/questions/3706819/…

Ood 01.04.2024 04:20

Вы правы, но мне просто интересно узнать причину ошибки.

Ali Bektash 01.04.2024 04:32

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

Mulham Alamry 01.04.2024 04:36

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

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

Я предлагаю вам сделать это:

html {
  font-size: 100%; /* Set a default value as fallback */
}

@media only screen and (max-width:75em) {
    html {
        font-size: 59%; /* <- do not forget the semicolon here */
    }
}

@media only screen and (max-width:56.25em) {
    html {
        font-size: 56%; /* <- do not forget the semicolon here */
    }
}

@media only screen and (min-width:112.5em) {
    html {
        font-size: 65%; /* <- do not forget the semicolon here */
    }
}

body {
    box-sizing: border-box;
    position: relative;
    line-height: 1.5;
    font-family: sans-serif;
    font-family: 'Source Sans Pro', sans-serif;
    padding-top: 3.8rem;
    width: 100vw;
    font-size: 100%; /* This will most likely not work, because you are setting the font-sizes on html, which is higher on hierarchy than body. */
}
<html>
  <body>
    Hello world
  </body>
</html>

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

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

Пожалуйста, уточните ваши требования, чтобы мы могли оказать дополнительную помощь. Я не совсем понимаю, какие rem значения вы хотите изменить, если работаете с % над запросами @media. Если вы хотите динамически изменять значения rem в зависимости от размера окна, вам нужно будет определить переменные CSS для различных размеров текста и изменить их значение с помощью запросов @media вместо непосредственного изменения размера шрифта.

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