Внешний отступ
Классы m-* задают свойство margin — пространство снаружи элемента, которое
отодвигает соседей и края родителя. Берите их, чтобы отделить блок от
окружения, прижать элемент к краю через auto или сдвинуть его
отрицательным отступом.
Пример
Шкала отступов
Тёмный блок стоит внутри пунктирной рамки; светлая полоса между ними — внешний отступ. Подпись над образцом — класс на тёмном блоке.
m-0
m-1/4
m-1/2
m-1
m-2
m-3
m-4
Одна сторона или ось
m-top-* и m-bottom-* задают отступ сверху и снизу, m-inline-start-* и
m-inline-end-* — в начале и в конце строки, m-inline-* и m-block-* —
сразу по обе стороны строчной или блочной оси.
m-top-3
m-bottom-3
m-inline-start-3
m-inline-end-3
m-inline-3
m-block-3
Начало и конец строки
Стороны inline-start и inline-end следуют направлению текста: при
dir="rtl" начало строки справа, и отступ переходит туда же.
dir="ltr" · m-inline-start-4
dir="rtl" · m-inline-start-4
Отрицательный отступ
Класс с минусом впереди тянет элемент наружу: на соседний блок или за край родителя.
-m-top-3 на втором блоке
-m-inline-start-3 на элементах 2 и 3
Автоматический отступ
auto забирает всё свободное место по своей стороне: центрирует блок
заданной ширины или прижимает элемент флекс-контейнера к дальнему краю.
m-inline-auto
m-inline-start-auto на последнем элементе
m-top-auto на последнем элементе
Фиксированная шкала
Классы вида m-a4, m-c4 берут размер из шкалы --sf-a0 … --sf-i9 и
не меняются с шириной экрана.
m-a4
m-b0
m-b8
m-c4
m-d0
Ширина экрана
С префиксом ширины класс действует от указанной ширины и шире. Меняйте
ширину окна просмотра: начиная с ширины md отступ вокруг блока растёт.
Классы
| Класс | CSS | Значения |
|---|---|---|
m-{значение} |
margin: var(--sf-space-{значение}) |
auto, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-{значение} |
margin: calc(0rem - var(--sf-space-{значение})) |
auto, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
m-top-{значение} |
margin-top: var(--sf-space-{значение}) |
auto, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-top-{значение} |
margin-top: calc(0rem - var(--sf-space-{значение})) |
auto, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
m-inline-end-{значение} |
margin-inline-end: var(--sf-space-{значение}) |
auto, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-inline-end-{значение} |
margin-inline-end: calc(0rem - var(--sf-space-{значение})) |
auto, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
m-bottom-{значение} |
margin-bottom: var(--sf-space-{значение}) |
auto, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-bottom-{значение} |
margin-bottom: calc(0rem - var(--sf-space-{значение})) |
auto, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
m-inline-start-{значение} |
margin-inline-start: var(--sf-space-{значение}) |
auto, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-inline-start-{значение} |
margin-inline-start: calc(0rem - var(--sf-space-{значение})) |
auto, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
m-inline-{значение} |
margin-left: var(--sf-space-{значение}); margin-right: var(--sf-space-{значение}); margin-inline: var(--sf-space-{значение}) |
auto, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-inline-{значение} |
margin-left: calc(0rem - var(--sf-space-{значение})); margin-right: calc(0rem - var(--sf-space-{значение})); margin-inline: calc(0rem - var(--sf-space-{значение})) |
auto, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
m-block-{значение} |
margin-top: var(--sf-space-{значение}); margin-bottom: var(--sf-space-{значение}); margin-block: var(--sf-space-{значение}) |
auto, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-block-{значение} |
margin-top: calc(0rem - var(--sf-space-{значение})); margin-bottom: calc(0rem - var(--sf-space-{значение})); margin-block: calc(0rem - var(--sf-space-{значение})) |
auto, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5, 6, 7, 8 |
-m-0 |
margin: calc(0rem - var(--sf-space-0)) |
— |
-m-top-0 |
margin-top: calc(0rem - var(--sf-space-0)) |
— |
-m-inline-end-0 |
margin-inline-end: calc(0rem - var(--sf-space-0)) |
— |
-m-bottom-0 |
margin-bottom: calc(0rem - var(--sf-space-0)) |
— |
-m-inline-start-0 |
margin-inline-start: calc(0rem - var(--sf-space-0)) |
— |
-m-inline-0 |
margin-left: calc(0rem - var(--sf-space-0)); margin-right: calc(0rem - var(--sf-space-0)); margin-inline: calc(0rem - var(--sf-space-0)) |
— |
-m-block-0 |
margin-top: calc(0rem - var(--sf-space-0)); margin-bottom: calc(0rem - var(--sf-space-0)); margin-block: calc(0rem - var(--sf-space-0)) |
— |
m-{значение} |
margin: var(--sf-{значение}) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
-m-{значение} |
margin: calc(0rem - var(--sf-{значение})) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
m-top-{значение} |
margin-top: var(--sf-{значение}) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
-m-top-{значение} |
margin-top: calc(0rem - var(--sf-{значение})) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
m-inline-end-{значение} |
margin-inline-end: var(--sf-{значение}) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
-m-inline-end-{значение} |
margin-inline-end: calc(0rem - var(--sf-{значение})) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
m-bottom-{значение} |
margin-bottom: var(--sf-{значение}) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
-m-bottom-{значение} |
margin-bottom: calc(0rem - var(--sf-{значение})) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
m-inline-start-{значение} |
margin-inline-start: var(--sf-{значение}) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
-m-inline-start-{значение} |
margin-inline-start: calc(0rem - var(--sf-{значение})) |
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 |
Условия (что это): ширина экрана — sm:, md:, lg:, xl:, xxl:; состояния — нет. Например: sm:m-auto.
Классы и переменные собраны из CSS выпуска и обновляются вместе с ним.
Переменные
Классы читают эти токены темы. Изменённый токен меняет все места, где он используется, — классы, компоненты и тему; задайте его в теме проекта, а не на отдельном элементе. Все токены — на странице Все токены.
| Переменная | Значение по умолчанию |
|---|---|
--sf-space-auto |
auto |
--sf-space-0 |
0 |
--sf-space-1/4 |
0.25rem; от ширины lg: var(--sf-a4) |
--sf-space-1/3 |
0.5rem; от ширины lg: var(--sf-a8) |
--sf-space-1/2 |
0.5rem; от ширины lg: 0.75rem |
--sf-space-1 |
var(--sf-b2); от ширины lg: var(--sf-b6) |
--sf-space-2 |
var(--sf-b6); от ширины lg: var(--sf-c0) |
--sf-space-3 |
var(--sf-b6); от ширины lg: var(--sf-c2) |
--sf-space-4 |
var(--sf-c2); от ширины lg: var(--sf-c6) |
--sf-space-5 |
var(--sf-c6); от ширины lg: var(--sf-d0) |
--sf-space-6 |
var(--sf-c6); от ширины lg: var(--sf-d2) |
--sf-space-7 |
var(--sf-d0); от ширины lg: var(--sf-d6) |
--sf-space-8 |
var(--sf-d2); от ширины lg: var(--sf-e0) |
--sf-a0 |
0rem |
--sf-a1 |
0.0625rem |
--sf-a2 |
0.125rem |
--sf-a3 |
0.1875rem |
--sf-a4 |
0.25rem |
--sf-a5 |
0.3125rem |
--sf-a6 |
0.375rem |
--sf-a7 |
0.4375rem |
--sf-a8 |
0.5rem |
--sf-a9 |
0.5625rem |
--sf-b0 |
0.625rem |
--sf-b1 |
0.6875rem |
--sf-b2 |
0.75rem |
--sf-b3 |
0.8125rem |
--sf-b4 |
0.875rem |
--sf-b5 |
0.9375rem |
--sf-b6 |
1rem |
--sf-b7 |
1.0625rem |
--sf-b8 |
1.125rem |
--sf-b9 |
1.1875rem |
--sf-c0 |
1.25rem |
--sf-c1 |
1.375rem |
--sf-c2 |
1.5rem |
--sf-c3 |
1.625rem |
--sf-c4 |
1.75rem |
--sf-c5 |
1.875rem |
--sf-c6 |
2rem |
--sf-c7 |
2.125rem |
--sf-c8 |
2.25rem |
--sf-c9 |
2.375rem |
--sf-d0 |
2.5rem |
--sf-d1 |
2.75rem |
--sf-d2 |
3rem |
--sf-d3 |
3.25rem |
--sf-d4 |
3.5rem |
--sf-d5 |
3.75rem |
--sf-d6 |
4rem |
--sf-d7 |
4.25rem |
--sf-d8 |
4.5rem |
--sf-d9 |
4.75rem |
--sf-e0 |
5rem |
--sf-e1 |
5.5rem |
--sf-e2 |
6rem |
--sf-e3 |
6.5rem |
--sf-e4 |
7rem |
--sf-e5 |
7.5rem |
--sf-e6 |
8rem |
--sf-e7 |
8.5rem |
--sf-e8 |
9rem |
--sf-e9 |
9.5rem |
--sf-f0 |
10rem |
--sf-f1 |
11rem |
--sf-f2 |
12rem |
--sf-f3 |
13rem |
--sf-f4 |
14rem |
--sf-f5 |
15rem |
--sf-f6 |
16rem |
--sf-f7 |
17rem |
--sf-f8 |
18rem |
--sf-f9 |
19rem |
--sf-g0 |
20rem |
--sf-g1 |
22rem |
--sf-g2 |
24rem |
--sf-g3 |
26rem |
--sf-g4 |
28rem |
--sf-g5 |
30rem |
--sf-g6 |
32rem |
--sf-g7 |
34rem |
--sf-g8 |
36rem |
--sf-g9 |
38rem |
--sf-h0 |
40rem |
--sf-h1 |
44rem |
--sf-h2 |
48rem |
--sf-h3 |
52rem |
--sf-h4 |
56rem |
--sf-h5 |
60rem |
--sf-h6 |
64rem |
--sf-h7 |
68rem |
--sf-h8 |
72rem |
--sf-h9 |
76rem |
--sf-i0 |
80rem |
--sf-i1 |
88rem |
--sf-i2 |
96rem |
--sf-i3 |
104rem |
--sf-i4 |
112rem |
--sf-i5 |
120rem |
--sf-i6 |
128rem |
--sf-i7 |
136rem |
--sf-i8 |
144rem |
--sf-i9 |
152rem |
В CSS косую черту в имени экранируют: var(--sf-space-1\/4).
Применение
Какую шкалу выбрать
Основная шкала m-0 … m-8 читает токены --sf-space-*. Они согласованы
с p-*, gap-* и space-* и подрастают от ширины lg, поэтому
интерфейс на широком экране получает больше воздуха без префиксов. Шаги
шкалы на узком экране частично совпадают: 1/3 и 1/2, 2 и 3, 5 и 6
дают одинаковый отступ.
Фиксированная шкала (m-a0 … m-i9) нужна, когда отступ должен совпасть с
размером из той же шкалы — шириной, высотой или радиусом — и не меняться с
шириной экрана. У неё есть все стороны и отрицательные варианты, но нет
осевых классов m-inline-* и m-block-*.
Стороны
Для отступа слева и справа используйте inline-start и inline-end, а не
физические стороны: тогда разметка без правок работает в языках с письмом
справа налево.
<div class="m-bottom-3">Абзац с отступом снизу</div>
<span class="m-inline-start-1">Иконка после текста</span>
<section class="m-block-4">Секция с отступами сверху и снизу</section>
Центрирование и прижатие к краю
<div class="w-f4 m-inline-auto">Блок по центру</div>
<div class="flex gap-1">
<a href="#">Раздел</a>
<a href="#">Раздел</a>
<button type="button" class="m-inline-start-auto">Войти</button>
</div>
Отрицательный отступ
Отрицательный отступ вытягивает элемент за внутренний отступ родителя —
например, изображение в карточке на всю ширину — или накладывает элементы
друг на друга. Префикс ширины ставится перед минусом: md:-m-top-2.
<div class="p-3">
<img class="-m-inline-3 -m-top-3" src="cover.jpg" alt="">
<p>Текст карточки</p>
</div>
Ограничения
- Классы
-m-auto,-m-top-auto,-m-inline-autoи другие отрицательныеautoесть в CSS, но их значение недопустимо, и браузер отбрасывает объявление: отступ получается нулевым. Не используйте их. - Вертикальные отступы соседних блоков в обычном потоке схлопываются: между ними остаётся больший из двух отступов, а не их сумма. Во флекс- и грид-контейнерах отступы не схлопываются.
- У семейств нет префиксов состояния:
hover:m-1и подобные классы не существуют.