Элементы ввода/кнопки не сжимаются в гибком контейнере
При использовании элементов ввода и кнопки внутри контейнера flex свойства flex
и/или flex-grow
ничего не делают.
Код, демонстрирующий мою проблему.
button,
input {
font-size: 1rem;
}
button {
border: none;
background-color: #333;
color: #EEE;
}
input {
border: 1px solid #AAA;
padding-left: 0.5rem;
}
.inputrow {
width: 30rem;
display: flex;
margin: 0 -.25rem;
}
.inputrow>* {
margin: 0 .25rem;
border-radius: 2px;
height: 1.75rem;
box-sizing: border-box;
}
.nickname {
flex: 1;
}
.message {
flex: 4;
}
.s-button {
flex: 1;
}
<div class="inputrow">
<input type="text" class="nickname" placeholder="Nickname">
<input type="text" class="message" placeholder="Message">
<button type="submit" class="s-button">Submit</button>
</div>
Ответы
Ответ 1
Элемент input
, в отличие от div
, имеет ширину по умолчанию.
Вот простая иллюстрация этого параметра:
![enter image description here]()
Браузер автоматически дает input
данные ширину.
input {
border: 1px solid blue;
display: inline;
}
div {
border: 1px solid red;
display: inline;
}
<form>
<input>
<br><br>
<div></div>
</form>
Ответ 2
Я хотел бы расширить решение Michael_B
В некоторых случаях вам может потребоваться переопределить ширину ввода, используя width: 100% или width: 0.
Вы также можете сделать calc(100%)