← Назад к вопросам
Почему размер шрифта устанавливаешь через пиксели а не через rem?
2.0 Middle🔥 151 комментариев
#HTML и CSS
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Использование px vs rem для размеров шрифта
Выбор между пикселями и rem имеет огромное значение для масштабируемости и доступности приложения. Каждый подход имеет свои преимущества и недостатки.
Проблемы с пикселями (px)
const badStyle = {
fontSize: '14px',
lineHeight: '20px',
marginBottom: '16px',
padding: '10px 15px'
};
// Проблемы:
// 1. Не уважает настройки масштаба браузера пользователя
// 2. Недоступно для людей с нарушениями зрения
// 3. При изменении базового размера нужно менять все значения
// 4. Сложнее поддерживать единую типографику
function PoorAccessibilityComponent() {
return (
<div style={{ fontSize: '12px' }}>
Маленький текст - невозможно увеличить через настройки браузера
</div>
);
}
Преимущества rem (относительные единицы)
const goodStyle = {
fontSize: '1rem',
lineHeight: '1.5rem',
marginBottom: '1rem',
padding: '0.625rem 0.9375rem'
};
// Преимущества:
// 1. Масштабируется с настройками браузера
// 2. Доступно для людей с нарушениями зрения
// 3. Единая точка контроля - базовый размер в html
// 4. Легче поддерживать и расширять
function GoodAccessibilityComponent() {
return (
<div style={{ fontSize: '1rem' }}>
Размер текста можно увеличить через настройки браузера
</div>
);
}
Система типографики на основе rem
export const typography = {
h1: {
fontSize: '2.5rem',
fontWeight: '700',
lineHeight: '1.2',
marginBottom: '1rem'
},
h2: {
fontSize: '2rem',
fontWeight: '600',
lineHeight: '1.3',
marginBottom: '0.875rem'
},
h3: {
fontSize: '1.5rem',
fontWeight: '600',
lineHeight: '1.4',
marginBottom: '0.75rem'
},
body: {
fontSize: '1rem',
lineHeight: '1.6',
marginBottom: '1rem'
},
small: {
fontSize: '0.875rem',
lineHeight: '1.5'
},
tiny: {
fontSize: '0.75rem',
lineHeight: '1.4'
}
};
function Typography() {
return (
<div>
<h1 style={typography.h1}>Заголовок 1</h1>
<h2 style={typography.h2}>Заголовок 2</h2>
<p style={typography.body}>Основной текст</p>
<small style={typography.small}>Дополнительный текст</small>
</div>
);
}
Tailwind CSS с rem
function TailwindTypography() {
return (
<div>
<p className="text-sm">Маленький текст</p>
<p className="text-base">Основной размер</p>
<p className="text-lg">Большой текст</p>
<p className="text-2xl">Очень большой текст</p>
<p className="text-[1.25rem]">1.25rem = 20px</p>
</div>
);
}
Когда использовать px
const border = {
borderWidth: '1px',
borderBottomWidth: '2px'
};
const absoluteStyle = {
position: 'absolute',
top: '10px',
left: '15px'
};
const imageStyle = {
width: '200px',
height: '150px'
};
Адаптивные размеры шрифтов
export const responsiveCSS = `
html {
font-size: 16px;
}
@media (max-width: 768px) {
html {
font-size: 14px;
}
}
@media (max-width: 480px) {
html {
font-size: 12px;
}
}
`;
// Весь текст масштабируется автоматически при изменении html font-size