В следующем коде, в #content правила, overflow:hidden
делает некоторые магии для автоматической настройки width
для div. Я попытался вручную установить ширину до определенного значения, например, 10000px в #content, но ширина не работает. Ширина определяется, если я использую overflow:hidden|scroll|auto
.Почему переполнение: скрытое влияние ширины
Мне просто интересно, почему overflow:hidden
делает магию?
Я изучил возможность того, что overflow:hidden
может начать BFC. Но display:flex
имеет тот же эффект от BFC.
Чтобы быть более конкретным, моя первоначальная попытка состояла в том, чтобы оставить весь текст в #content ellipsis line by line. И я обнаружил, что установка width
в #content делает работу правильно. Но я случайно обнаружил, что могу сделать то же самое 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>
Ваши идентификаторы являются вводящими в заблуждение. #floated элемент вообще не плавает; он и #content являются гибкими элементами, а элементы гибкости не могут плавать. Это, я подозреваю, не имеет ничего общего с установлением (или отсутствием) BFC. – BoltClock
Да, имя тега ID вводит в заблуждение, и оно не имеет отношения к теме. Я изменю его – Nemo
Сказав это, flex items * do * всегда устанавливает контексты форматирования для своего содержимого. Тем не менее я не уверен, что это проблема, поскольку они устанавливают их независимо от значения переполнения, хотя изменение значения переполнения оказывает неблагоприятное воздействие на ваш макет. Я позволю кому-то, более знакомому с гибким макетом, объяснить. – BoltClock