У CSS значення overflow:hidden
встановлюється на батьківських контейнерах, щоб дозволити йому розширюватися з висотою їх плаваючих дочірніх елементів.
Але він має ще одну цікаву особливість у поєднанні з margin: auto
...
Якщо ПОПЕРЕДНІЙ брат або сестра є плаваючим елементом, він насправді буде виглядати проти нього. Тобто, якщо брат або сестра, float:left
то контейнер з float:none overflow:hidden
буде здаватися праворуч від брата, а не нова лінія - так само, як ніби він плавав у звичайному потоці. Якщо попередній брат або сестра є float:right
таким, контейнер з'явиться ліворуч від брата. Змінюючи розмір цього контейнера, ви точно покажете, що він розташований по центру між плавучими елементами. Скажімо, якщо у вас є два попередні брати і сестри, один float:left
інший float:right
, контейнер буде виглядати по центру між ними.
Тож ось проблема ...
Як мені підтримувати такий тип розміщення БЕЗ маскування дітей?
Гугл по всій Інтернеті дає мені способи, як clear:both
і розширити контейнер ... але я не можу знайти жодного альтернативного рішення для підтримки центрування лівого / правого попереднього дочірнього. Якщо ви робите контейнер, overflow:visible
тоді контейнер раптово ігнорує потік компонування плаваючих елементів і з'являється шаром поверх плаваючого елемента.
Отже питання :
Я повинен мати контейнер, overflow:hidden
щоб зберегти макет ...
як я можу зробити так, щоб діти не були в масках? Мені потрібно мати дитину абсолютно розташованою відносно батьків за межами контейнера.
АБО
Як я можу, overflow:visible
щоб я міг абсолютно розташувати дочірню дитину по відношенню до батьківської поза контейнером ... І все-таки зберегти побратима float-like-layout-flow?