CSS grid адаптивное расширение/сжатие ячеек

Я пытаюсь сделать так, чтобы столбцы были одинаковой ширины и могли свободно расширяться/сужаться при вводе или удалении чисел. Мне удалось добиться желаемого результата, но как предотвратить бесконечное расширение правого столбца и его перекрытие левым?

.tool-element__for {
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight: 600;
    background: #2F2F2F;
    border-radius: 2px 2px 0 0;
    height: 18px;
    line-height: 18px;
}

.tool-element__value {
    background: #373737;
    display: flex;
    align-items: center;
    padding: 5px;
}

.movement-points {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-auto-rows: 18px;
    gap: 0 2px;
    align-items: stretch;
    align-content: start;
}

.movement-points__for {
    grid-column: 1 / -1;
}

.movement-points__value {
    display: contents;
}

.movement-points__value > div:first-child,
.movement-points__value > div:last-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    align-self: stretch;
}

.movement-points__value > div:last-child {
    justify-content: flex-end;
    text-align: right;
    cursor: text;
}
<div id="tool-movements-infantry" class="movement-points collapsible">
    <div class="tool-element__for movement-points__for">Движение для пехоты</div>
    <div class="movement-points__value">
        <div class="tool-element__value">Всего очков движения</div>
        <div class="tool-element__value" contenteditable="true">1000</div>
    </div>
</div>

Нормальное поведение Плохое поведение


Ответы (1 шт):

Автор решения: R3DRUMVNE

Я немного упростил код

Решение такое:

#tool-movements-infantry{
    width: 500px;
    color: white;
    background: #2F2F2F;
}

.tool-element__for {
    text-align: center;
    font-weight: 600;
    border-radius: 2px 2px 0 0;
    height: 18px;
    padding: 5px;
}

.tool-element__value {
    display: flex;
    flex-direction: column;
    gap: 0 2px;
}

.movement-points__value {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0 2px;
    max-width: 100%;
}

.movement-points__value > div{
    background: #373737;
    padding: 5px;
    height: max-content;
    cursor: text;
}

.first_child {
    min-width: max-content;
}

.second_child {
    display: inline-block;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    text-align: right;
}
<div id="tool-movements-infantry" class="movement-points collapsible">
    <div class="tool-element__for">Движение для пехоты</div>
    <div class="movement-points__value">
        <div class="first_child">Всего очков движения</div>
        <div class="second_child" contenteditable="true">1000</div>
        <div class="first_child">Кол-во ОД на 1px для Рельеф #1</div>
        <div class="second_child" contenteditable="true">10</div>
        <div class="first_child">Кол-во ОД на 1px для Рельеф #2</div>
        <div class="second_child" contenteditable="true">10</div>
        <div class="first_child">Кол-во ОД на 1px для Рельеф #3</div>
        <div class="second_child" contenteditable="true">10</div>
        <div class="first_child">Кол-во ОД на 1px для Рельеф #4</div>
        <div class="second_child" contenteditable="true">10</div>
        <div class="first_child">Кол-во ОД на 1px для Рельеф #5</div>
        <div class="second_child" contenteditable="true">10</div>
    </div>
</div>

→ Ссылка