Какой к черту БФК?
BFC
Полное имя:Block Formatting Context
, названный «контекст форматирования на уровне блоков».
W3C
Официальное объяснение:BFC
Он определяет, как элемент позиционирует свое содержимое, а также его отношения и взаимодействие с другими элементами, а когда дело доходит до визуального макета,Block Formatting Context
обеспечивает среду,HTML
Вёрстка в этой среде по определённым правилам.
Проще говоря,BFC
Это полностью независимое пространство (среда макета), так что дочерние элементы в пространстве не будут влиять на макет снаружи. Итак, как использоватьBFC
Шерстяная ткань,BFC
можно рассматривать какCSS
атрибут элемента
Как активировать BFC
Вот лишь несколько триггеровBFC
в использованииCSS
Атрибуты
- overflow: hidden
- display: inline-block
- position: absolute
- position: fixed
- display: table-cell
- display: flex
Правила БФК
-
BFC
Это элемент блочного уровня, а элементы блочного уровня располагаются один за другим в вертикальном направлении. -
BFC
Это изолированный и независимый контейнер на странице. Метка в контейнере не влияет на внешнюю метку. - Расстояние в вертикальном направлении определяется запасом и относится к одному и тому же
BFC
Поля двух соседних этикеток будут перекрываться - рассчитать
BFC
Когда в расчете участвует и высота плавающего элемента
Какую проблему решает BFC
1. Используйте Float, чтобы выйти из потока документов, свернуть высоту
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>高度塌陷</title>
<style>
.box {
margin: 100px;
width: 100px;
height: 100px;
background: red;
float: left;
}
.container {
background: #000;
}
</style>
</head>
<body>
<div class="container">
<div class="box"></div>
<div class="box"></div>
</div>
</body>
</html>
Эффект:
Видно, что вышеуказанный эффект даетbox
наборfloat
результаты из документооборота, в результате чегоcontainer
Высота не растягивается, поэтому цвет фона не имеет цвета.Решение этой проблемы может датьcontainer
курокBFC
, триггер, о котором мы упоминали вышеBFC
можно задать свойства.
Изменить код
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>高度塌陷</title>
<style>
.box {
margin: 100px;
width: 100px;
height: 100px;
background: red;
float: left;
}
.container {
background: #000;
display: inline-block;
}
</style>
</head>
<body>
<div class="container">
<div class="box"></div>
<div class="box"></div>
</div>
</body>
</html>
Эффект:
2. Перекрытие полей поля
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
margin: 10px;
width: 100px;
height: 100px;
background: #000;
}
</style>
</head>
<body>
<div class="container">
<div class="box"></div>
<div class="box"></div>
</div>
</body>
</html>
Эффект:
Вы можете видеть, что у нас есть два поля вышеmargin
Поля установлены на10px
, результат показывает, что существует только10px
расстояние, что приводит кmargin
Свернуть проблему, на этот разmargin
Результатом поля является максимальное значение, а не подгонка, для решения этой проблемы вы можете использоватьBFC
Правила (обертывание блока для элементов, чтобы сформировать полностью независимое пространство, чтобы элементы внутри не влияли на внешний макет), или простой и грубый способ установитьmargin
, настройкаpadding
.
Изменить код
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Margin边距重叠</title>
<style>
.box {
margin: 10px;
width: 100px;
height: 100px;
background: #000;
}
</style>
</head>
<body>
<div class="container">
<div class="box"></div>
<p><div class="box"></div></p>
</div>
</body>
</html>
Эффект:
3. Двухколоночный макет
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>两栏布局</title>
<style>
div {
width: 200px;
height: 100px;
border: 1px solid red;
}
</style>
</head>
<body>
<div style="float: left;">
两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局
</div>
<div style="width: 300px;">
我是蛙人,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭
</div>
</body>
</html>
Эффект:
Вы можете видеть вышеперечисленные элементы, второйdiv
элемент300px
ширина, но заменяется первымdiv
настройки элементаFloat
Вне документооборота для покрытия, для решения этого метода мы можем поставить второйdiv
элемент установлен вBFC
.
Изменить код
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>两栏布局</title>
<style>
div {
width: 200px;
height: 100px;
border: 1px solid red;
}
</style>
</head>
<body>
<div style="float: left;">
两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局
</div>
<div style="width: 300px;display:flex;">
我是蛙人,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭
</div>
</body>
</html>
Эффект:
Эпилог
Спасибо за чтение этой статьи, я надеюсь, что она может быть вам полезна, и если у вас есть какие-либо вопросы, пожалуйста, поправьте меня.
Я водолаз (✿◡‿◡), если вы считаете, что писать можно, ставьте лайк ❤.
Заинтересованные друзья могут присоединиться[Группа обмена развлекательными кругами]Приветствую всех для обсуждения
Писать нелегко,"Мне нравится" + "Смотрел" + "Ретвитнуть"Спасибо за вашу поддержку ❤
Хорошие статьи в прошлом
"Поделитесь 15 полезными плагинами для Webpack! ! ! 》
"Поделитесь 12 загрузчиками, обычно используемыми в Webpack"
«Поговорим о том, что такое CommonJs и Es Module и чем они отличаются»
«Карта с простым пониманием структуры данных»
«Знаете ли вы все приемы JavaScript, используемые в этих работах? 》