Ограничение на макет grid с значением по умолчанию
Описание
Хочу создать такой мает при помощи CSS - Grid:
| Насколько нужно для контента | Как можно больше | Насколько нужно для контента, но не больше 30vmin |
|
|---|---|---|---|
| Как можно больше | menu-area |
toolkit-area |
|
| Насколько нужно для контента | menu-area |
status-area |
toolkit-area |
Собственно создаю:
div.container {
position: fixed;
inset: 0;
display: grid;
grid-template: 'menu-area -1- toolkit-area' 1fr 'menu-area status-area toolkit-area' auto / auto 1fr minmax(auto, 30vmin);
}
div.menu {
grid-area: menu-area;
background-color: red;
}
div.status {
grid-area: status-area;
background-color: green;
}
div.toolkit {
grid-area: toolkit-area;
background-color: blue;
}
<div class="container">
<div class="menu">
<img alt="Icon">
</div>
<div class="status">
<img alt="Icon">
</div>
<div class="toolkit"></div>
</div>
Проблема в том, что toolkit-area (синяя область) по умолчанию занимает 30vmin, но внутри контента нет.
Поскольку я задал minmax(auto, 30vmin), он почему-то решил, что надо занять 30vmin даже без контента.
Вопрос
Я хочу, чтобы его ширина была столько, сколько понадобиться для контента внутри, но не больше 30vmin, а не 30vmin по умолчанию. Но у меня не удается контролировать размер по-умолчанию. Такие варианты как minmax(0, 30vmin), minmax(min-content, 30vmin) или minmax(max-content, 30vmin) не работают.
Как решить этот вопрос?
Уточнение
Поскольку в области toolkit-area могут быть совершенно разные панели, то есть нельзя задать его размер auto и задать максимальную ширину панелей max-width: 30vmin.
Не будем углубляться, просто примем что так не вариант. :)
Ответы (1 шт):
Много непонятного в вопросе... Откуда такая любовь к minmax(...) ? Чем не устраивает max-width ? И почему vmin, а не vmax ?
Решение ниже полностью отвечает на сам вопрос, но уточнение идёт вразрез.
div.container {
position: fixed;
inset: 0;
display: grid;
grid-template: 'menu-area . toolkit-area' 1fr 'menu-area status-area toolkit-area' auto / auto 1fr min-content;
}
div.menu {
grid-area: menu-area;
background-color: red;
}
div.status {
grid-area: status-area;
background-color: green;
}
div.toolkit {
grid-area: toolkit-area;
background-color: blue;
max-width: 30vmin;
}
<div class="container">
<div class="menu" contenteditable>
<img alt="Icon">
</div>
<div class="status" contenteditable>
<img alt="Icon">
</div>
<div class="toolkit" contenteditable>toolkit</div>
</div>
Я специально сделал блоки редактируемыми, чтобы можно было проверить, что всё растягивается и ограничивается, как нужно.