Одиниці довжини в CSS — px, em, rem і відсотки


CSS має кілька різних одиниць для вираження довжини.

Багато властивостей CSS приймають значення "довжини", такі як width, margin, padding, font-size, border-width тощо.

Довжина - це число, за яким слідує одиниця довжини, наприклад 10px, 2em та ін.

Пробіл не відображається між значенням та одиницею виміру. Однак, якщо значення дорівнює 0, одиниця виміру може бути опущена. Для деяких властивостей CSS дозволені негативні довжини.

Є два типи одиниць довжини: абсолютна і відносна.

Абсолютні довжини

Абсолютні одиниці представляють собою фізичні розміри - дюйми, сантиметри, міліметри, пункти, піки, а також пікселі. У таблиці перераховані основні відносні одиниці.

Одиниция виміру Опис
cm сантиметр
mm міліметр
in дюйм (1in = 96px = 2.54cm)
px піксель (1px = 1/96th of 1in)
pt пункт (1pt = 1/72 1in)
pc піка (1pt = 1/72 1in)

Для пристроїв з низьким dpi (кількість точок, що припадають на один дюйм, визначає щільність точок) прив'язка йде до пікселя. У цьому випадку один дюйм дорівнює 96 пікселям. Очевидно, що реальний дюйм не співпадатиме з дюймом на такому пристрої. На пристроях з високим dpi реальний дюйм збігається з дюймом на екрані, тому розмір пікселя обчислюється як 1/96 від дюйма.

Відносні довжини

Відносні одиниці довжини вказують довжину щодо властивості іншої довжини. Відносна одиниця довжини збільшується між різними середовищами візуалізації.

Відносні одиниці зазвичай використовують для роботи з текстом.

Одиниция виміру Опис
em Розмір шрифту поточного елементу.
ex Відносно x-висоти поточного шрифту (рідко використовується)
ch Відносно ширини "0" (нуль)
rem Відносно розміру шрифту кореневого елемента.
vw Відносно 1% ширини вікна перегляду.
vh Відносно 1% висоти вікна перегляду.
vmin Відносно 1% від меншого розміру вікна перегляду.
vmax Відносно 1% від розміру вікна перегляду.
% Відносно батьківського елемента.

Одиниця em - це змінне значення, яке залежить від розміру шрифту поточного елементу (розмір встановлюється через стильову властивість font-size). В кожному браузері закладений розмір тексту, який застосовується в тому випадку, коли цей розмір явно не заданий. Тому спочатку 1em дорівнює розміру шрифту, заданого в браузері за замовчуванням або розміром шрифту батьківського елементу. Відсотковий запис ідентичний em, в тому сенсі, що значення 1em і 100% рівні.

Одиниця ex визначається як висота символу «x» в нижньому регістрі. На ex поширюються ті ж правила, що і для em, а саме, він прив'язаний до розміру шрифту, заданого в браузері за замовчуванням, або до розміру шрифту батьківського елементу.

Одиниця ch дорівнює ширині символу «0» для поточного елемента і подібно em залежить від розміру шрифту.

Різниця між em і rem наступна: em залежить від розміру шрифту батька елемента і змінюється разом з ним, а rem прив'язаний до кореневого елементу, тобто розміру шрифта заданого для елемента html.

автор: Svitlana

Загальний опис

автор: NagarD

Порада

При установці розмірів обов'язково вказуйте одиниці виміру, наприклад width: 30px. В іншому випадку браузер не зможе показати бажаний результат, оскільки не розуміє, який розмір вам потрібно. Одиниці не додаються тільки при нульовому значенні (margin: 0).

автор: Svitlana
Нотатка

Internet Explorer підтримує одиницю vm замість vmin.

автор: Svitlana

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
px, in, cm, mm, pt, pc, em, ex 1.0 1.0 1.0 3.5 12.0 3.0
ch 27.0 1.0 7.0 20.0 12.0 9.0
rem 4.0 3.6 4.1 11.6 12.0 9.0
vw, vh 20.0 19.0 6.0 20.0 12.0 9.0
vmax 26.0 19.0 6.1 15.0 16.0 не підтримується
vmin 20.0 19.0 6.0 15.0 12.0 9.0
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Mozilla Firefox Mobile Apple Safari
px, in, cm, mm, pt, pc, em, ex властивість повністю підтримується браузером з усіма допустимими значеннями властивість повністю підтримується браузером з усіма допустимими значеннями властивість повністю підтримується браузером з усіма допустимими значеннями
ch 4.4 2.0 71.1
rem 2.1 2.0 4.0
vw, vh 2.1 19.0 6.0
vmax 4.4 19.0 6.1
vmin 2.1 19.0 6.0

Приклади

+ запропонувати свій приклад у пісочниці

Один тип значення — розмір — у різних одиницях: абсолютних (px, cm, mm) і відносній rem. Зверни увагу: 1.5cm і 15mm — це одне й те саме.

HTML

<p class="px">50px — пікселі</p>
<p class="cm">1.5cm — сантиметри</p>
<p class="mm">15mm — міліметри</p>
<p class="rem">3rem — кратно кореневому шрифту</p>

CSS

.px  { font-size: 50px; }
.cm  { font-size: 1.5cm; }
.mm  { font-size: 15mm; }
.rem { font-size: 3rem; }
автор: Svitlana

Ліворуч кожен рівень списку має font-size: 1.3em, праворуч — 1.3rem. Розмітка однакова: em перемножується на кожному рівні вкладеності, rem лишається сталим. Нижче — відсоток у padding: обидві коробки мають padding: 10%, і верхній відступ у ширшої вдвічі більший, бо відсоток тут рахується від ШИРИНИ.

HTML

<div class="cols">
    <ul class="em">
        <li>font-size: 1.3em
            <ul><li>другий рівень
                <ul><li>третій рівень</li></ul>
            </li></ul>
        </li>
    </ul>

    <ul class="rem">
        <li>font-size: 1.3rem
            <ul><li>другий рівень
                <ul><li>третій рівень</li></ul>
            </li></ul>
        </li>
    </ul>
</div>

<div class="wrap narrow"><div class="pct">padding: 10% у коробці 160px</div></div>
<div class="wrap wide"><div class="pct">padding: 10% у коробці 320px</div></div>

CSS

body {
    font-family: system-ui, sans-serif;
    font-size: 16px;
}

.cols {
    display: flex;
    gap: 20px;
    align-items: flex-start;
    margin-bottom: 24px;
}

.cols ul {
    flex: 1;
    margin: 0;
    padding: 10px 10px 10px 28px;
    border: 2px solid #ccc;
}

/* накопичується: 1.3 → 1.69 → 2.2 від кореневого розміру */
ul.em li { font-size: 1.3em; }

/* стале: 1.3 від шрифту кореневого елемента на всіх рівнях */
ul.rem li { font-size: 1.3rem; }

.wrap {
    border: 2px solid #0172ad;
    margin-bottom: 12px;
}

.narrow { width: 160px; }
.wide   { width: 320px; }

.pct {
    padding: 10%;        /* усі чотири боки — від ШИРИНИ батька */
    background: #eef6fb;
}
автор: NagarD

Демонстрація роботи.

HTML

<h1>Перший заголовок</h1>
<h2>Другий заголовок</h2>
<p>Перший параграф</p>
<p>Інший параграф</p>

CSS

h1 {font-size: 4.5pc;}
h2 {font-size: 3pc;}
p {
    font-size: 1.5pc;
    line-height: 3pc;
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід