Сначала добавьте min-width:0
к элементу ввода и кнопке, чтобы позволить им сжаться.Затем вы можете отрегулировать flex-basis
, чтобы убедиться, что один вход или кнопка и вход будут иметь одинаковое значение.
В приведенном ниже примере значение равно 300px
.Если вход один, он примет все это как flex-basis
.С помощью кнопки значение будет разделено между
* {
box-sizing: border-box;
}
body {
font-family: Arial;
font-size: 12px;
}
.input1 {
min-width: 0;
flex-basis: 210px;
flex-grow: 1;
}
.input1:last-child {
flex-basis: 300px;
}
button:last-child {
flex-basis: 90px;
max-width: 90px;
min-width: 0;
padding: 1px 0;
flex-grow: 1;
}
.row {
flex-direction: row;
display: flex;
flex: 1;
align-items: center;
}
span {
flex-basis: 120px;
}
.group {
border: 1px solid rgba(0, 0, 0, .25);
width: 100%;
animation: change 5s linear infinite alternate;
}
@keyframes change {
to {
width: 18%;
}
}
<p>Full Size:</p>
<div class="group">
<div class="row"><span>ID</span><input class="input1" /></div>
<div class="row"><span>ID</span><input class="input1" /><button>X</button></div>
</div>
При небольшой ширине наблюдается небольшое смещение, я разберусь с этим.