Скасування обтікання float

Скасування обтікання блоків (float) найбільш часто зустрічається операція при верстці HTML сторінок. Ми розглянемо всі відомі способи скасувати дію CSS властивості float.

Перш ніж ми заглибимося в методи очищення потоку, давайте поглянемо на проблему, яку ми намагаємося вирішити.

Типовий випадок HTML верстки

Блоки .el-1 і .el-2 розміщуються пліч-о-пліч всередині контейнера .container. і один елемент .main слід після .container:

Ми хочемо, щоб висота контейнера .container була рівною висоті найдовшого з його дочірніх елементів (тобто або .el-1. Або .el-2) і щоб блок .main. щоб був після блоку .container.

Скасування обтікання float

Скасування обтікання float

Незважаючи на те, що багато хто вважає це багом браузера, - це всього лише принцип, за яким працюють плаваючі елементи. Отже нам потрібно змусити батьківський елемент розширюватися, щоб повністю вміщати дочірні елементи. Тоді, наступні елементи будуть розташовуватися під контейнером.

Спосіб 1: метод старої школи

Як вам відомо, CSS властивість clear встановлює з якого боку елемента заборонено його обтікання іншими елементами, отже це властивість може запобігти налезаніе елементів поверх плаваючих. Ідея полягає в наступному: вставте порожній елемент, що якість clear під обтічними блоками. Це використовувати певний клас для подібного об'єкта - давно усталена традиція, так що ви можете використовувати його в вашому HTML. Ось класичний CSS код:

Який можна застосувати до нашої HTML верстці:

Наш демо-приклад, реалізований за допомогою цього методу:

Скасування обтікання float

Якщо вас не хвилює схлопивается контейнер, а тільки неправильно розташований блок .main. то ви можете навіть помістити "очищающий потік" елемент br після контейнера. Але, якщо ви вирішите зробити так, то набагато простіше буде просто додати властивість clear самому елементу .main.

Це простий і зрозумілий метод. Проте, в сучасній верстці практикується відділення контенту від стилю, тому краще його не використовувати.

Спосіб 2: властивість overflow

Використовуючи властивість overflow в тезі .container. ми можемо примусити контейнер розширитися до висоти розміщених елементів. Наш CSS буде виглядати наступним чином:

Наш HTML залишиться таким же, яким і був спочатку, без додаткових елементів. Ось, що ми отримаємо в результаті:

Скасування обтікання float

Нажаль, у цього методу є недолік: будь-який дочірній елемент, який виступає за межі контейнера, буде або обрізаний (в разі overflow: hidden;), або викличе появу смуг прокрутки (в разі overflow: auto;).

Спосіб 3: клас "clearfix"

Ми створюємо клас .clearfix з псевдо-елементами :: before і :: after і задаємо їм display: table. що створює анонімну елемент таблиці. Цей клас буде використовуватися для очищення плаваючих елементів. CSS код виглядає так:

Змінимо трохи HTML код додавши до класу container клас clearfix:

Ось результат роботи наешго новвого класу:

Скасування обтікання float

Якщо вам не потрібна підтримка браузерів нижче IE8, то наш код значно скоротиться:

Спосіб 4: значення contain-floats для min-height

Специфікація W3C додала нове значення для властивості min-height (і для інших властивостей min / max), для вирішення цієї проблеми. Виглядає воно так:

Цей код дає практично той же ефект, що і clearfix, або overflow, але за допомогою однієї рядки коду і, до того ж він позбавлений тих недоліків, про які ми говорили раніше. На жаль, поки що жоден з браузерів не підтримує це властивість, так що просто майте його на увазі.

Отже, у вас є цілий набір різних «clearfix» методів. Застосування класу .clearfix стало стандартом, і я дуже рекомендую використовувати його замість колишніх двох методів.

Скасування обтікання float

  • unity
2D гра на Unity. Детальний керівництво. Частина 1

Скасування обтікання float

Скасування обтікання float

  • unity
Робота з Unity в 2D

Скасування обтікання float

  • unity
2D гра на Unity. Детальний керівництво. частина 3

Скасування обтікання float

  • unity
2D гра на Unity. Детальний керівництво. частина 4

Скасування обтікання float

  • unity
2D гра на Unity. Детальний керівництво. частина 5

Скасування обтікання float

  • unity
2D гра на Unity. Детальний керівництво. частина 6

Скасування обтікання float

  • unity
Підручник за новим GUI в Unity. Частина 2.

Скасування обтікання float

  • unity
Підручник за новим GUI в Unity. Частина 1.