Раскладка
Раскладка
Восемь примитивов, и ни один из них не рисует — они только расставляют. Разница между ними в масштабе: оболочка держит окно, сплит и контейнер держат экран, стопка и кластер держат блоки внутри него.
| что держит | сколько на документ | |
|---|---|---|
| Оболочка | окно целиком, области с независимой прокруткой | одна |
| Рельс | узкая колонка разделов со значками | один, внутри оболочки |
| Строка состояния | показания внизу окна | одна |
| Контейнер | ширину и боковые поля содержимого | сколько угодно |
| Сплит | две колонки разной важности | сколько угодно |
| Поток | ритм: стопка, кластер, сетка | везде |
| Шапка экрана | название экрана и его действия | одна на экран |
| Секция | заголовок блока внутри экрана | сколько угодно |
Сравнение стоит здесь, а не на страницах: «возьмите другое» — это утверждение о СОСЕДЯХ, и повторённое восемь раз оно расходится с ними по одной строке за правку.
Что выбрать
| Что нужно | Возьмите | Почему не соседа |
|---|---|---|
| Каркас всего приложения с независимо прокручиваемыми областями | Оболочку | Сплит переносится сам и не занимает всю высоту окна |
| Две части разной важности: список и его инспектор | Сплит | У сетки все колонки одинаковые |
| Ограничить ширину содержимого и дать боковые поля | Контейнер | Он задаёт только ширину; ритм — работа потока |
| Вертикальный ритм между блоками | inst-stack — поток |
Контейнер про ширину, а не про просветы |
| Ряд, который переносится по ширине | inst-cluster — поток |
У сплита есть порог переноса, у кластера нет |
| Карточки в адаптивную сетку | inst-grid — поток |
У таблицы строки и заголовки колонок |
| Название экрана и 1–3 действия над ним | Шапку экрана | Секция тише и не претендует на <h1> |
| Заголовок блока внутри экрана | Секцию | У панели есть рамка, фон и своя прокрутка |
| Разделы значками, когда место дороже подписи | Рельс | Из десяти похожих глифов рельс не читается — там нужны подписи |
| Постоянные показания окна: ветка, кодировка, счётчик ошибок | Строку состояния | Тулбар держит контролы и потому вдвое выше |
Когда ни один не подходит
| Что нужно | Возьмите | Почему не отсюда |
|---|---|---|
| Область приложения с рамкой, шапкой и прокруткой | панель | Примитивы раскладки не рисуют |
| Инструменты над содержимым панели | тулбар | Он часть панели, а не раскладки экрана |
| Табличные данные | таблицу | У сетки нет строк и заголовков колонок |
| Сообщение уровня экрана | баннер | Строку состояния читают краем глаза |
| Итог таблицы | tfoot |
Он стоит под своими данными, а не внизу окна |
| Действие, а не переход | иконочную кнопку | Пункт рельса ведёт на адрес |
Общее для всех восьми
Примитив не рисует. Ни рамки, ни фона, ни тени: как только раскладка начинает красить, её нельзя вложить в то, что красит иначе. Рисуют панель и карточка, и это их работа.
Просвет называется намерением, а не числом. --gap-section между
разделами, --gap-row внутри, --gap-inline в строке. Шкала --space-*
берётся напрямую только там, где роли нет и заводить её не на что, — и это
сторожит гейт сборки.
Компонент отвечает на ширину СВОЕЙ области, а не окна. Поэтому в ките два
именованных @container — app и content — и ровно одна медиазапросная
точка на всю библиотеку, у оболочки.
Почему кит устроен именно так — конституция · Открытый код под MIT, github.com/keshon/instrument