Меня смущает взаимодействие, которое я наблюдаю между свойством overflow элемента и плавающим элементом элемента-брата. Учтите следующее:
.div1 {
float: left;
width: 100px;
height: 50px;
margin: 10px;
border: 3px solid #73AD21;
}
.div2 {
border: 1px solid red;
width: 50px;
height: 150px;
}
<h2>Without clear</h2>
<div class="container">
<div class="div1">div1</div>
<div class="div2">div2 - Notice that div2 is after div1 in the HTML code. However, since div1 floats to the left, the text in div2 flows around div1.</div>
</div>
(Этот пример был адаптирован из этого примера на w3schools: https://www.w3schools.com/css/tryit.asp?filename=trycss_layout_clear
В этом случае dev1 плавает слева от div2 и находится внутри поля для div2 - например, граница для div2 проходит выше и слева от div1, но текстовое содержимое div2 оборачивается вокруг div1. Но также обратите внимание: из-за установленной ширины / высоты на div2 текст в div2 переполняется ниже.
Теперь добавьте переполнение: скрытый; к div2:
.div1 {
float: left;
width: 100px;
height: 50px;
margin: 10px;
border: 3px solid #73AD21;
}
.div2 {
border: 1px solid red;
width: 50px;
height: 150px;
overflow: hidden;
}
<h2>Without clear</h2>
<div class="container">
<div class="div1">div1</div>
<div class="div2">div2 - Notice that div2 is after div1 in the HTML code. However, since div1 floats to the left, the text in div2 flows around div1.</div>
</div>
Теперь div2 находится полностью справа от div1 - его граница больше не распространяется вокруг div1.
Почему добавляется свойство overflow: hidden чтобы div2 изменил свой макет взаимодействия с div1 таким образом? (Тот же эффект также имеет место для переполнения: авто или переполнения: прокрутка.)