在下面的代碼中,在#內容規則中,overflow:hidden
做了一些魔術來自動調整div的width
。我嘗試在#內容中手動將寬度設置爲某個值,例如10000px,但寬度不起作用。如果我使用overflow:hidden|scroll|auto
,則確定寬度。爲什麼溢出:隱藏影響寬度
我只是想知道爲什麼overflow:hidden
做的神奇?
我已經對overflow:hidden
啓動BFC的可能性做了一些研究。但display:flex
具有BFC的相同效果。
更具體地說,我最初的嘗試是讓#content中的所有文字一行一行省略號。我發現在中設置width
#內容可以正常工作。但我意外地發現,我可以通過overflow:hidden
來做同樣的事情,而不需要設置寬度。那麼,爲什麼這項工作?
#container {
padding: 12px;
display: flex;
}
#leftblock {
width: 100px;
height: 100px;
background-color: #ccc;
}
#content {
margin-left: 10px;
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
}
p {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
margin: 8px 0;
}
<div id="container">
<div id="leftblock"></div>
<div id="content">
<p><b>This div will take the rest of the available width, and the <code>overflow:hidden;</code> makes sure this text doesn't fall below the <code>#floated</code> div.</b></p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce tincidunt vestibulum magna, nec rutrum lacus lobortis at. Duis convallis tincidunt neque eu viverra. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam condimentum faucibus mauris, pretium varius dui tempor tempor. Aenean in elit dolor, a pellentesque urna. Vestibulum egestas metus id massa elementum quis posuere nunc tincidunt. Curabitur dapibus dictum lacus a fermentum.</p>
<p>Quisque cursus gravida sem quis pretium. Cras cursus, neque sit amet bibendum ornare, nunc mi euismod ligula, ut cursus enim risus nec mi.</p>
</div>
</div>
您的ID有誤導性。 #floated元素根本不會浮動;它和#content是flex項目,flex項目不能浮動。我懷疑,這與建立(或不是)BFCs無關。 – BoltClock
是的,ID標籤的名稱具有誤導性,與主題無關。我會改變它 – Nemo
話雖如此,flex items * do *總是爲其內容建立格式化上下文。儘管改變溢出值對佈局有不利影響,但我仍然不確定這是否是問題的關鍵,因爲它們會建立它們,而不管溢出的價值如何。我會讓別人更熟悉flex佈局解釋。 – BoltClock