Читаю: "Блочные элементы характеризуются тем, что занимают всю доступную ширину, высота элемента определяется его содержимым, и он всегда начинается с новой строки."
Разбираюсь на пальцах:
<div class="" style="background-color: red;">Первый </div>
<div class="" style="background-color: green;>Второй </div>
<div class="" style="background-color: yellow;">Третий </div>
Пока все логично. Каждый блок начинается с новой строки.
Но добавляя float
<div class="" style="background-color: red;">Первый </div>
<div class="" style="background-color: green; float: right">Второй </div>
<div class="" style="background-color: yellow;">Третий </div>
второй и третий блоки оказываются на ОДНОЙ строчке.
Почему третий див не отображается с третьей строчки, а "прыгает" на вторую? Почему float внезапно ломает определение блочных элементов, если прямым текстом описано, что "он всегда начинается с новой строки"?
Наверное самый логичный ответ: "потому что это float" - но у меня никак не получается усвоить "как это работает", хотя гуглил и спецификацию дива и флоата.