modfop
@modfop
HTML-верстальщик

Почему нельзя задавать float:left всем блокам?

Наткнулся на такой пункт в одном из постов Хабра.

Самое страшное, к счастью уже редкое — float: left для всех блоков. Безумный верстальщик эмулирует привычные ячейки таблиц, расставляя блоки как кирпичи друг за другом. Вон из профеcсии! Проверяется: Web Developer Outline → Float elements, если всё в красных блоках, вёрстку нужно выкидывать на помойку.


Может кто нибудь объяснить почему нельзя так делать, хочется все-таки знать.

Ссылка на пост (в Пункте №10, выделен жирным)
  • Вопрос задан
  • 4791 просмотр
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Это правда.

Расчёт блоков, выпадающих из нормального потока, но при этом влияющих на последующие, очень сложен и способен серьёзно нагрузить старые браузеры, вплоть до подтормаживания и кратковременного подвисания. Современные с такой проблемой сталкиваются в меньшей степени, но также потратят немало времени на reflow. А ресурсы ой как ещё пригодятся на другие задачи.

Вот вам пример сложности расположения плавающих элементов.

Вёрстка с большим количеством плавающих блоков крайне зависима от совпадения их размеров, появления блоков с clearence, значения overflow у предков и ряда других факторов, что делает её применимой только в очень жёстко ограниченных условиях.

С появлением flex использовать нестабильные плавающие блоки для построения колонок становится неразумным решением. Тем более, что flex не поддерживается только IE9 и ниже. Ну уж а inline-block гарантированно работает везде.

Кстати, особенно смешно наблюдать использование float для построения горизонтальных лент с расчётом с помощью JS итоговой ширины. А вот для обтекания текстом плавающие блоки могут и должны использоваться. Стоп. Так они же для этого и были придуманы:)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
nazarpc
@nazarpc
Open Source enthusiast
Ещё один голос в поддержку flex. Браузерами поддерживается хорошо, не имеет проблем float и inline-block (отступы могут появляться между блокам если есть пробелы между блоками в HTML коде).
Ответ написан
Комментировать
Zoxon
@Zoxon
Веб-разработчик
По тому что глупо симулировать таблицу из div.
Луше уж тогда верстать таблицей, а не выеживатся.
Флоатом нужно пользоваться с осторожностью, нужно отменять флоат. Если этого не происходит то блок схлопывается, а браузер может выдавать всякие финтиля.
Вообщем нехило снижается предсказуемость поведения верстки
Ответ написан
Читала эту статейку и комменты к ней ещё давно, Я из неё вывела что float нужно использовать с умом а не так
* {
float: left
}

это типа они clfx заменили. Мне показалось, что автор про это. У inline-block минусов ничуть не меньше чем у float, так как он тоже не для того был придуман как его сейчас лепят где нужно и не нужно.
У нас эра flex и скоро мы про это забудем)))
Ещё как мне кажется автор не совсем верно говорить про !important - ну хоть ооочень редко но он нужен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы