在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>

显示我所期待的内容的代码.(using DIVs instead of 100 and 101).

.inputrow {
  width: 30rem;
  display: flex;
  flex-flow: row nowrap;
  margin: 0 -.25rem;
}

.inputrow>* {
  margin: 0 .25rem;
  height: 1.75rem;
}

.nickname {
  flex: 1;
  background-color: blue;
}

.message {
  flex: 4;
  background-color: red;
}

.s-button {
  flex: 1;
  background-color: green;
}
<div class="inputrow">
  <div class="nickname">Nickname</div>
  <div class="message">Message</div>
  <div class="s-button">Submit</div>
</div>

推荐答案

div不同,input元素具有默认宽度.

以下是此设置的简单说明:

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>

此外,弹性项的初始设置为min-width: auto.这意味着项目在主轴上不能缩小到其宽度以下.

因此,input个元素不能缩小到其默认宽度以下,并且可能会强制使弹性容器溢出.

您可以通过将输入设置为min-width: 0(revised codepen)来覆盖此行为

Here's a full explanation: Why don't flex items shrink past content size?

在某些情况下,可能需要使用width: 100%width: 0覆盖输入宽度.

Css相关问答推荐

如何为FLEX方向编写响应式的CSS

防止表格水平拉伸整个Blazor页面

material 设计--Bootstrap输入域问题

将特定样式应用于递归Angular 元素

两列网格中左列第一个文本正下方的按钮

如何使用 :has() 父 Select 器 Select 父元素的子元素,在父元素和子元素之间没有中间层的情况下?

背景图像允许溢出输入按钮

Nativewind 的某些样式不适用于本机 (Android),但它们适用于网络

在 WooCommerce 变体 Select 中转换属性文本以大写

带填充的水平边框

CSS 使文本扩展并保持居中与圆形扩展 div 的问题

创建一条淡出/在各个方向变得透明的线

删除在 ios safari / chrome / firefox 中单击的链接上的灰色背景

在响应式设计中指定 HTML 文本中的首选换行点

重置子元素的不透明度 - Maple Browser (Samsung TV App)

我应该使用 CSS :disabled 伪类还是 [disabled] 属性 Select 器,还是见仁见智?

如何使用 CSS 绘制复选标记/勾号?

CSS 中的星号属性是什么意思?

对象拟合不影响图像

使用 HTML data-attribute 设置 CSS background-image url