This question already has answers here:
input / button elements not shrinking in a flex container
                                
                                    (2个答案)
                                
                        
                                2年前关闭。
            
                    
好像我不明白flexbox正确。

但是我认为flexboxitem中div的with被忽略了。

就像这个小提琴一样:https://jsfiddle.net/34f9awsk/6/

CSS:

.wrapper {
  width: 200px;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  flex-direction: row;
}

.ele {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  flex-direction: row;
  flex: 3;
}

.ele1 {
  flex: 1;
}

.ele input {
  display: inline;
  max-width: 100%;
}


HTML:

<div class="wrapper">
  <div class="ele ele3" style="background-color: red;">
    <input type="number" size="4" value="9999" />
  </div>
  <div class="ele ele1" style="background-color: green;">
    2
  </div>
  <div class="ele ele3" style="background-color: yellow;">
    <input type="number" size="4" value="9999" />
  </div>
</div>


你能帮我解决吗?

谢谢!

最佳答案

Flexbox项的min-width默认为auto,这表示它们不会缩小到其内容宽度以下。

在这种情况下,您的input元素在用户代理样式表中设置了默认宽度,然后指定了伸缩项目的大小。

ele一个min-width: 0,它将按预期工作。



.wrapper {
  width: 200px;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  flex-direction: row;
}

.ele {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  flex-direction: row;
  flex: 3;
  min-width: 0;
}

.ele1 {
  flex: 1;
}

.ele input {
  display: inline;
  max-width: 100%;
}

<div class="wrapper">
  <div class="ele ele3" style="background-color: red;">
    <input type="number" value="9999" />
  </div>
  <div class="ele ele1" style="background-color: green;">
    2
  </div>
  <div class="ele ele3" style="background-color: yellow;">
    <input type="number" value="9999" />
  </div>
</div>

07-24 18:29
查看更多