добро пожаловать в stackoverflow. Overflow: hidden не имеет значения (пожалуйста, знайте это). Когда вы используете свойство float для элемента, он действует как встроенный блок, даже если он является блочным. В примере, который вы здесь сделали, строка, в которой он расположен (строка, до которой он может go) наклоняется вправо и остается встроенным блоком.
Я изменил цвета, чтобы вы могли видеть более четко. Пожалуйста, внимательно изучите оба образца. в первом примере сначала используется правый элемент с плавающей запятой, затем используется блочный элемент, потому что они переключаются внутрь. Но если блочный элемент используется первым, то он продолжается от нижней строки, не закрывая область.
Небольшое примечание: сегодня Float больше не используется часто. Вместо этого я предлагаю вам выбрать такие структуры, как display-flex или display-grid. Они одновременно проще и удобнее для создания отзывчивого внешнего вида. Надеюсь описание то, что я имею в виду.
.title-strip {
background: green;
margin: 0;
}
.title1 {
/* overflow: hidden; it doesn't make any difference. */
background-color: yellow;
}
.title2 {
float: right;
background-color: red;
}
<div>
<h1 class="title-strip title2">Title2</h1>
<h1 class="title-strip title1">Title1</h1>
</div>
<div style="height: 75px;"></div>
<div>
<h1 class="title-strip title2" style="margin-top: 50px;">Title2</h1>
<h1 class="title-strip title1">Title1</h1>
</div>
<div style="height: 75px;"></div>
<div>
<h1 class="title-strip title1">Title2</h1>
<h1 class="title-strip title2">Title1</h1>
</div>