в cssBFC
Функции — это правила рендеринга блоков, представленные в спецификации CSS 2.1. Использование этих правил может помочь нам справиться с макетом и другими проблемами на странице. Например: в прозрачной плавающей схеме мы можем добавить в родительский контейнерoverflow:hidden
, который используетсяBFC
характеристика. В то же время, это также часто задаваемый вопрос на собеседовании, так что у меня есть глубокое понимание этого.BFC
Очень важный.
Что такое БФК
БФК это(Block Formatting context)
Сокращение от контекста форматирования блока. Можно понять, что это область блочного рендеринга, в которой применяются некоторые правила рендеринга, и это магия в мире CSS. Почему это называется зачарованием, потому что оно срабатываетBFC
Элемент под контейнером фичи полностью изолирован от внешнего элемента контейнера, и расположение дочерних элементов не повлияет на внешний элемент, и наоборот.
BFC
Элементы имеют следующие характеристики:
-
Блоки BFC не перекрываются с плавающими блоками
-
Плавающие элементы учитываются при расчете высоты элемента BFC.
-
Блоки под BFC
margin
Перехлестнет, не тот же не будет -
Элемент BFC представляет собой автономный контейнер, который изолирует элементы внутри от внешних элементов с дополнительными влияниями.
Запустить BFC
Функцию BFC блочного элемента можно активировать следующими настройками:
-
float
Значение неnone
-
overflow
ценностьauto
,scroll
а такжеhidden
-
display
ценностьtable-cell
,table-caption
а такжеinline-block
-
position
Установить какabsolute
а такжеfixed
Помимо,html
Сам элемент по умолчаниюBFC
элемент
Сценарии применения
очистить поплавок
<div class="box">
<div class="left"></div>
<div class="right"></div>
</div>
.box {
background: #eee;
}
.left {
width: 200px;
height: 200px;
float: left;
border: 1px solid pink;
}
.right {
height: 100px;
border: 1px solid greenyellow;
}
Эффект следующий:
видимый плавающий элемент.left
вне нормального течения, а элементы.right
Произошло перекрытие. А высота родительского контейнера не содержит плавающих элементов, происходит коллапс.
использоватьBFC
Функция 2 элемента, срабатывающая в контейнере, содержащем плавающий элементBFC
Особенности, предотвращающие падение контейнера по высоте. Обычно устанавливаетсяoverflow:hidden
запускать следующим образом:
.box {
background: #eee;
/* 触发bfc */
overflow: hidden;
}
Эффект следующий:
Адаптивная верстка
Используя функцию 1, мы можем.right
вызыватьBFC
особенность, чтобы он не перекрывал плавающий элемент слева, гарантируя, что дочерние элементы не будут затронуты внешними воздействиями. В то же время, потому что.right
— это блочный элемент с плавными свойствами, который адаптируется при изменении ширины области просмотра, что позволяет адаптировать двухколоночный или даже несколько столбцов.
.right {
height: 100px;
border: 1px solid greenyellow;
overflow: hidden;
}
Эффект следующий:
Но за пределами.right
Это решение не применимо, когда область должна отображать контент. годный к употреблениюtable-cell
а такжеinline-block
вызыватьBFC
характеристика.
.right {
display: table-cell;
width: 9999px;
height: 100px;
border: 1px solid greenyellow;
/* 利用 css hack 兼容IE7 的情况 */
*display: inline-block;
*width: auto;
}
Особенностью блока ячеек является то, что когда заданная ширина превышает родительский контейнер, фактическая ширина не будет превышать родительский контейнер, что соответствует адаптивному эффекту. Таким образом, мы устанавливаем слишком большое значение ширины. ноtable-cell
Он используется только для браузеров IE8+.В случае, когда необходимо рассмотреть IE7, вы можете использовать настройкиinline-block
, он ведет себя в IE7 иblock
Как и коробка, он тоже адаптивный.
другие триггерыBFC
Условия характеристик имеют свои ограничения, поэтому две приведенные выше схемы обычно используются для срабатывания
предотвратить слияние полей
Мы знаем, что получится два соседних блок-бокса.margin
Слияние, в зависимости от того, что больше. так что используйтеBFC
Функция 3, пусть один из блок-боксов будет содержаться под новым контейнером BFC, держите их изолированными друг от друга и не влияйте.