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>

