2017-10-09 52 views
0

这是简化的布局:生成Flex容器宽度增长作为其子

<div class="root"> 
    <div class="container"> 
    <div class="cell"> 
     <input type="text" class="contact"></input> 
    </div> 
    </div> 
</div> 

,这是简化的CSS:

.root { 
    background-color: red; 
    overflow: auto; 
    width: 300px; 

} 

.container { 
    background-color: green; 
    display: flex; 
    height: 50px; 
} 

.cell { 
    background-color: black; 
    height: 30px; 
} 

.contact { 
    width: 400px; 
} 

这是jsFiddle

我觉得container的宽度与它的孩子所要求的不一样,而是受到rootdiv的限制。您可以在此jsFiddle中看到红色区域(根号div)没有填充绿色containerdiv

有人可以解释为什么flex容器宽度不会像其子女一样增长以及如何解决这个问题?

+1

这也许可以解释为什么*?*?https://stackoverflow.com/q/45497031/3597276 –

+1

@Michael_B我一直在寻找那个链接:) ...可能是一个可能的重复,将它添加到我的答案,并给它一个upvote – LGSon

+0

在我的答案中可以添加或调整,让你接受吗? – LGSon

回答

2

块元素增长到其父宽度,内联随内容增长。

一个伟大的,更深入的解释可以在这里找到:


更改为inline-flex,你会得到预期的结果。

.root { 
 
    background-color: red; 
 
    overflow: auto; 
 
    width: 300px; 
 
    
 
} 
 

 
.container { 
 
    background-color: green; 
 
    display: inline-flex;    /* changed */ 
 
    height: 50px; 
 
} 
 

 
.cell { 
 
    background-color: black; 
 
    height: 30px; 
 
} 
 

 
.contact { 
 
    width: 400px; 
 
}
<div class="root"> 
 
    <div class="container"> 
 
    <div class="cell"> 
 
     <input type="text" class="contact"> 
 
    </div> 
 
    </div> 
 
</div>