Flex项目正在拉伸[重复]

Posted

技术标签:

【中文标题】Flex项目正在拉伸[重复]【英文标题】:Flex items are stretching [duplicate] 【发布时间】:2022-01-12 13:19:45 【问题描述】:

如何避免 flex 列中的项目拉伸到全宽?我希望它是创建时的原始大小。

.myForm 
  display: flex;
  flex-direction: column;
<form class="myForm">
  <input type="text" />
  <input type="text" />
  <button>Test</button>
</form>

【问题讨论】:

正确的输入和按钮没有给定宽度。给它们一些宽度。 【参考方案1】:

在子元素上使用max-width: max-content;width: max-content;

.myForm 
  display: flex;
  flex-direction: column;

/* below will be select any first level children under .myForm */
.myForm > * 
    max-width: max-content;
<form class="myForm">
  <input type="text" />
  <input type="text" />
  <button>Test</button>
</form>

【讨论】:

【参考方案2】:

CSS 中,flex 属性align-items 的默认值是stretch,正如您猜想的那样,它会将 flex 父级的子级拉伸到全宽。你可以改变它来解决这个问题。比如

.myForm 
  display: flex;
  flex-direction: column;
  align-items: flex-start;
<form class="myForm">
  <input type="text" />
  <input type="text" />
  <button>Test</button>
</form>

在此处阅读有关此属性的更多信息https://developer.mozilla.org/en-US/docs/Web/CSS/align-items

【讨论】:

您的回答效果很好,但与我的方法不同。因此,请不要编辑与我的答案无关的内容。我会为你投票,因为它是工作和 100% 弹性 CSS。 我知道对不起,我试图编辑我的,结果不知何故编辑了你的 没问题 :-) 我也搞错了。【参考方案3】:

你提到了 display:flex;因此您的元素大小也可以调整为列大小。 您可以为您的第一级孩子单独提供 css 属性,例如

.myForm > * 
    width: fit-content;

.myForm 
  display: flex;
  flex-direction: column;

/* below will be select any first level children under .myForm */
.myForm > * 
    width: fit-content;
<form class="myForm">
  <input type="text" />
  <input type="text" />
  <button>Test</button>
</form>

【讨论】:

以上是关于Flex项目正在拉伸[重复]的主要内容,如果未能解决你的问题,请参考以下文章

防止弹性项目拉伸

Flex - Baseline,水平子对齐内容,拉伸子框

flex项目的flex-grow和width之间的不一致[重复]

当窗口变小时,Flex项目不会缩小[重复]

CSS Flex将项目堆叠在一起[重复]

在 flexbox 中使用“高度:100%”和“对齐项目:拉伸”[重复]