CSS Floats объяснил в 5 вопросах
CSS «Floats» (плавающие элементы) просты в использовании, но после их использования эффект, который он оказывает на окружающие его элементы, иногда становится непредсказуемым. Если вам когда-нибудь приходилось сталкиваться с проблемами исчезновения соседних элементов или поплавков, которые торчат как больной палец, не беспокойтесь больше.
Этот пост охватывает пять основных вопросов, которые помогут вам стать экспертом в плавающих элементах.
- Какие элементы не плавают?
- Что происходит с элементом, когда он плавает?
- Что происходит с братьями и сестрами "Поплавки"?
- Что происходит с родителем "поплавка"?
- Как вы очистите «Поплавки»?
Для читателей, которые принимают TL; dr подход к жизни, в конце поста есть краткое изложение.
1. Какие элементы не плавают?
абсолютный или же фиксированный элемент не будет плавать Поэтому в следующий раз, когда вы встретите поплавок, который не работает, проверьте, находится ли он в позиция: абсолютная
или же позиция: фиксированная
и применить изменения соответственно.
2. Что происходит с элементом, когда он плавает?
Когда элемент помечен как «плавающий», он перемещается влево или вправо в основном до ударяется о стенку своего контейнерного элемента. Кроме того, он будет работать до тех пор, пока ударяет по другому плавающему элементу, который уже ударил по той же стене. Они будут накапливаться бок о бок до тех пор, пока не закончится пространство, а новые входящие будут перемещены вниз.
Плавающие элементы также не будет идти выше элементов до Это в коде, что вы должны рассмотреть, прежде чем кодировать “терка” после элемент, на сторону которого вы хотите поместить его.
Вот еще две вещи, которые происходят с плавающим элементом в зависимости от того, какой тип элемента остается плавающим:
(1) Встроенный элемент превратится в элемент уровня блока когда всплыл.
Когда-нибудь задумывались, почему вдруг вы можете назначить высоту и ширину плавающей пролет
? Это потому, что все элементы в плавающем состоянии получат значение блок
для его дисплей
атрибут (рядный стол
получите Таблица
) заставляя их блокировать элементы уровня.
(2) Элемент блока с неопределенной шириной будет уменьшен, чтобы соответствовать его содержимому при перемещении.
Обычно, когда вы не указываете ширину для элемента блока, его ширина по умолчанию равна 100%. Но когда это произошло, это уже не так; блок элемента блока будет уменьшаться, пока его содержимое не останется видимым.
3. Что происходит с братьями и сестрами "поплавков"?
Когда вы решите поместить элемент в группу элементов, не беспокойтесь о том, как он будет себя вести, его поведение будет предсказуемым и будет либо перемещаться влево или вправо. То, о чем вы действительно должны думать, это как будут вести себя братья и сестры после этого.
У «поплавков» самые заботливые и послушные братья и сестры во всем мире. Они сделают все возможное, чтобы разместить плавающий элемент.
текстовые и встроенные элементы будет просто уступить дорогу «Поплавкам» и окружить «Поплавки» когда он в положении.
блочные элементы пойдет на шаг дальше и обернуться вокруг "поплавка" щедро, даже если это означает выбить свои собственные дочерние элементы, чтобы освободить место для "Float".
Давайте проверим это в эксперименте. Ниже находится синее поле, а после него - красное поле того же размера с некоторыми дочерними элементами..
Теперь давайте запустим синюю коробку и посмотрим, что происходит с красной коробкой и ее дочерними элементами..
Все будет хорошо, как только красная коробка перестанет охватывать синюю, и для этого вы можете использовать переполнение: скрытый
.
Когда вы добавляете переполнение: скрытый
к элементу, который обернул поплавок, он перестанет это делать. Смотрите ниже, как красная коробка ведет себя с переполнение: скрытый
.
4. Что происходит с родителем «поплавка»?
Родители не очень заботятся о своих «плавающих» детях, за исключением того, что они не должны выходить за пределы своих правых или левых границ..
Обычно элемент блока с неопределенной высотой увеличивает его высоту, чтобы вместить его дочерние элементы, но это не относится к дочерним элементам типа «Float».. Если размер "Float's" увеличивается, его родитель не будет соответственно увеличивать свою высоту. Это снова можно решить с помощью переполнение: скрытый
в родительском.
5. Как очистить «Поплавки»?
Я уже упоминал, используя переполнение: скрытый
сделать так, чтобы родительский объект размещал плавающего дочернего элемента по высоте, создавая правильное пространство для других элементов после "Float" и не позволяя братьям и сестрам оборачивать "Floats".
И вот как вы делаете элемент жить рядом с "Поплавком" без компромиссов.
Есть другой метод, где элементы даже не будут рядом с их родными братьями "Float". Используя Чисто
атрибут, который вы можете сделать элемент свободным от "Float".
ясно: слева; ясно: правильно; ясно: оба;
оставил
Значение очищает все «плавающие» слева от элемента, и наоборот для право
, и с обеих сторон для и то и другое
. это Чисто
Атрибут может быть использован на одноуровневом элементе, пустом элементе div или на псевдоэлементе согласно вашему удобному.
Резюме
- Абсолютные / Фиксированные элементы не будут плавать.
- «Поплавок» не идет выше элемента до это в коде.
- Если в контейнере недостаточно места, «Float» будет сброшен.
- Все «поплавки» сделаны в виде элементов блочного уровня.
- Если ширина не указана в «Float», она будет уменьшаться, чтобы соответствовать содержанию.
- Более поздние братья и сестры "Float" будут либо окружать их (inline & text), либо оборачивать их (блоки).
- Чтобы остановить элемент от "Float", используйте
переполнение: скрытый
. - Родители "поплавка" не будут увеличивать его высоту, чтобы соответствовать поплавку.
- Чтобы родительский элемент увеличил свою высоту в соответствии с «Float», используйте
переполнение: скрытый
(или создайте пустой брат сЧисто
после этого) - Чтобы элемент не находился рядом с «Float», используйте
Чисто
атрибут.