<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Что такое CSS Rem: простое объяснение с примерами и сравнением с em]]></title><description><![CDATA[<p dir="auto">CSS Rem — это единица измерения, которая упрощает верстку. Она всегда привязана к размеру шрифта корневого элемента html, обычно 16px по умолчанию. С rem проще делать адаптивные сайты, потому что все размеры масштабируются от одной точки.</p>
<p dir="auto">Это решает проблемы с непредсказуемыми отступами и шрифтами, когда используешь px или em. Один раз меняешь базовый font-size — и вся страница подстраивается. Полезно для мобильных устройств и когда нужно быстро править дизайн.</p>
<h2>Как работает rem в CSS</h2>
<p dir="auto">Rem расшифровывается как <strong>root em</strong> — корневой em. В отличие от обычных пикселей, rem зависит только от font-size элемента <code>&lt;html&gt;</code>. Если в html стоит <code>font-size: 16px</code>, то 1rem всегда равен 16px, независимо от родителей.</p>
<p dir="auto">Представь ситуацию: у тебя контейнер с font-size 20px, внутри параграф с 1.5rem. С rem параграф будет 24px (1.5 * 16px), а не 30px. Это исключает накопление ошибок в вложенных элементах. Такой подход делает код предсказуемым и легким для отладки.</p>
<p dir="auto">Далее логично посмотреть на примеры. Вот базовая настройка:</p>
<ul>
<li>Установи в html: <code>font-size: 16px;</code> — это <strong>базовый размер</strong> для всего сайта.</li>
<li>Для заголовка h1: <code>font-size: 2.5rem;</code> — получится 40px.</li>
<li>Отступы: <code>padding: 1.5rem;</code> — 24px везде, где применено.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Свойство</th>
<th>Значение в rem</th>
<th>Эквивалент в px (при 16px базовом)</th>
</tr>
</thead>
<tbody>
<tr>
<td>font-size</td>
<td>1rem</td>
<td>16px</td>
</tr>
<tr>
<td>margin</td>
<td>2rem</td>
<td>32px</td>
</tr>
<tr>
<td>padding</td>
<td>0.5rem</td>
<td>8px</td>
</tr>
</tbody>
</table>
<h2>rem против em и px: ключевые различия</h2>
<p dir="auto">Em зависит от размера шрифта <strong>непосредственного родителя</strong>, что часто приводит к сюрпризам. Если родитель 20px, то 2em внутри — 40px, а если внук добавит свой em, расчеты усложняются. Rem же всегда смотрит на html, игнорируя цепочку.</p>
<p dir="auto">Px — фиксированные, не масштабируются при зуме или смене настроек пользователя. Rem гибче: пользователь увеличит font-size в браузере — весь сайт подстроится. Это критично для доступности. Em хорош для локальных компонентов, как кнопки, где нужно пропорциональное масштабирование внутри группы.</p>
<p dir="auto">Сравним на практике:</p>
<ul>
<li><strong>px</strong>: <code>font-size: 16px;</code> — статично, не меняется при зуме.</li>
<li><strong>em</strong>: В родителе 20px, ребенок <code>1.2em</code> — 24px; внук <code>1.2em</code> — 28.8px (накопление!).<br />
<em>Нюанс: em полезен для padding в компонентах, чтобы они росли вместе с текстом.</em></li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Единица</th>
<th>От чего зависит</th>
<th>Плюсы</th>
<th>Минусы</th>
</tr>
</thead>
<tbody>
<tr>
<td>px</td>
<td>Фиксированное значение</td>
<td>Точная верстка</td>
<td>Не адаптивно</td>
</tr>
<tr>
<td>em</td>
<td>Родительский font-size</td>
<td>Локальное масштабирование</td>
<td>Накопление эффекта</td>
</tr>
<tr>
<td>rem</td>
<td>Корневой html font-size</td>
<td>Предсказуемость, глобальность</td>
<td>Нужно задавать базовый размер</td>
</tr>
</tbody>
</table>
<h2>Когда и как применять rem на практике</h2>
<p dir="auto">Rem идеален для <strong>глобальных стилей</strong>: типографика, отступы контейнеров, сетки. Меняешь font-size в html на 18px для больших экранов — все rem подхватят. Это упрощает медиа-запросы в адаптивной верстке.</p>
<p dir="auto">Пример адаптивного контейнера: <code>.container { padding: 2rem; margin: 1rem; }</code>. На десктопе с 16px — 32px/16px, на мобильном меняешь html на 14px — автоматически 28px/14px. Добавь JavaScript для динамического font-size по ширине экрана — и сайт идеально подстроится.</p>
<p dir="auto">Практические советы:</p>
<ol>
<li>Всегда задавай <code>html { font-size: 16px; }</code> или <code>62.5%</code> (для 10px базового, удобно считать).</li>
<li>Используй rem для h1–h6: <code>h1 { font-size: 2.5rem; }</code> — пропорционально.</li>
<li><em>Комбинируй с em локально: в кнопке <code>padding: 0.5em;</code> для синхронизации с текстом.</em></li>
<li>Тестируй зум: в браузере Ctrl+ и проверь масштабирование.</li>
</ol>
<pre><code class="language-css">html {
  font-size: 16px;
}

@media (max-width: 768px) {
  html {
    font-size: 14px;
  }
}

.card {
  padding: 2rem;
  font-size: 1.1rem;
}
</code></pre>
<h2>rem в реальных проектах: подводные камни</h2>
<p dir="auto">В больших проектах rem упрощает командную работу — все опираются на один базис. Но если забудешь задать font-size в html, браузер возьмет 16px по умолчанию. Это плюс, но <em>проверь в разных браузерах: старые версии могут варьировать</em>.</p>
<p dir="auto">Компоненты вроде модальных окон: задай им локальный font-size в rem, чтобы они не ломались. Интеграция с фреймворками (Bootstrap) — там rem уже вшит. Проблема: в email-шаблонах rem слабо поддерживается, там лучше px.</p>
<p dir="auto">Что учесть дальше:</p>
<ul>
<li>Переход от px к rem: найди все font-size, margin/padding и конвертируй (16px = 1rem).</li>
<li>Динамический root: <code>html { font-size: calc(100vw / 120); }</code> для fluid-типографики.</li>
<li>Сочетание с clamp: <code>font-size: clamp(1rem, 4vw, 2rem);</code> — идеал для современного веба.</li>
</ul>
<h2>Почему rem меняет подход к верстке</h2>
<p dir="auto">Rem делает CSS системным: один рычаг для всего. Ты избегаешь хаоса с вложенностью, как в em, и жесткости px. Остается поэкспериментировать с vh/vw для высоты или ch для моноширинных текстов.</p>
<p dir="auto">В итоге, rem — не панацея, но основа хорошей верстки. Подумать стоит над комбинацией с современными единицами вроде lvh или hybrid-системами в Tailwind.</p>
]]></description><link>https://forum.exlends.ru/topic/453/chto-takoe-css-rem-prostoe-obuyasnenie-s-primerami-i-sravneniem-s-em</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:12:37 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/453.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Feb 2026 12:00:17 GMT</pubDate><ttl>60</ttl></channel></rss>