什么是BFC? CSS 使用伪元素清除浮动的方法

yizhihongxing

BFC(Block Formatting Context,块级格式化上下文)是 CSS 中的一个概念。它是一个独立的渲染区域,拥有自己的渲染规则。在一个 BFC 中,所有的元素按照一定的规则进行排布,这些规则可以帮助我们解决很多常见的页面布局问题。以下是BFC的相关属性和触发方式:

触发BFC的方式

  • 根元素或其他包含它的元素
  • 浮动:float 的值不是 none
  • 绝对定位:position 的值不是 staticrelative
  • 行内块:display 的值变为 inline-block
  • 表格单元格:display 的值变为 table-celltable-captioninline-table
  • overflow 的值不是 visible

BFC的特性

  • 内部的 Box 会在垂直方向,一个接一个地放置
  • Box 垂直方向的距离由 margin 决定。属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠
  • 常见的清除浮动现象(父元素因为子元素浮动导致高度坍塌)不再存在,除非是用来达到这种效果的特殊方式
  • 不会与浮动元素重叠
  • 计算 BFC 的高度时,浮动元素也参与计算

BFC布局方式可以解决很多问题,比如让容器自适应内容的高度,防止margin重叠等。

接下来,我们谈一下使用伪元素清除浮动的方法。但首先我们来看一下什么是浮动。

什么是浮动

浮动是CSS中一种常用的定位方式,本质上就是让元素脱离文档流,并沿着父元素的边缘进行浮动定位。

浮动往往用于实现文本环绕效果或者图片的流动布局,但是由于浮动元素脱离文档流,所以可能引起一些布局上的问题。

我们常用的情况是将两个块级元素并排放置,代码如下:

<div class="container">
  <div class="left">1</div>
  <div class="right">2</div>
</div>
.left {
  float: left;
  width: 50%;
  height: 100px;
  background-color: red;
}

.right {
  float: left;
  width: 50%;
  height: 100px;
  background-color: blue;
}

这个时候,你会发现.container元素的高度为0,页面布局出现问题,这时候我们就需要清除浮动来解决这个问题。

伪元素清除浮动的方式

我们可以使用空的块级元素或者清除浮动的技巧来清除浮动,不过这两种方式都比较繁琐,而且会在文档流中增加一些不必要的标记。

另外,我们还可以使用伪元素来清除浮动,这是一种更为简单、优雅的方式。

代码如下:

.container::after {
  content: "";
  display: block;
  clear: both;
}

我们在.container元素的后面添加一个伪元素::after,并设置其content属性为空、display属性为blockclear属性为both,这样就可以清除.container元素的浮动了。

除主流浏览器都支持伪元素,有些古老的浏览器可能会有问题,不过并不影响这种方式的使用。

下面提供一个较为完整的示例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>BFC and Clearfix</title>

  <style>
    .container {
      background: #f5f5f5;
    }
    .left {
      width: 50%;
      height: 100px;
      background-color: red;
      float: left;
    }
    .right {
      width: 50%;
      height: 100px;
      background-color: blue;
      float: left;
    }
    .clearfix::after {
      content: "";
      display: block;
      clear: both;
    }
  </style>
</head>
<body>
  <div class="container clearfix">
    <div class="left">1</div>
    <div class="right">2</div>
  </div>
</body>
</html>

我们给.container元素添加了.clearfix.container两个class,.clearfix用于添加::after伪元素来清除浮动,.container用于添加背景颜色。

在实际使用中,我们只需要将需要清除浮动的元素的父元素添加一个.clearfix的类即可。

除此之外,我们还可以使用BFC来清除浮动,这种方式更为常用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:什么是BFC? CSS 使用伪元素清除浮动的方法 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 使用CSS媒体查询和JavaScript判断浏览器设备类型的好方法

    下面我将详细讲解如何使用CSS媒体查询和JavaScript判断浏览器设备类型,并提供两个示例说明。 使用CSS媒体查询 CSS媒体查询可以在CSS中给不同的设备类型应用不同的样式。通过媒体查询,我们可以根据浏览器窗口的大小、分辨率、设备类型等特性,来为不同的设备应用不同的样式。 媒体查询是通过@media语句来定义的,例如: /* 移动设备样式 */ @m…

    css 2023年6月10日
    00
  • 轻松搞懂CSS浮动与清除浮动图文详解

    轻松搞懂CSS浮动与清除浮动图文详解 1. 什么是浮动 CSS中的浮动(float),顾名思义就是使元素在文档中根据左右方向的要求浮动。使用浮动可以实现多栏布局,图文混排等效果。 2. 如何设置浮动 使用CSS的float属性可以让元素进行浮动,具体语法如下: float: none | left | right; 其中none代表取消浮动,left代表向左…

    css 2023年6月9日
    00
  • 在IE下,当margin:0 auto;无法使得块级元素水平居中时

    在IE下,当margin: 0 auto;无法使块级元素水平居中的情况有很多,通常的解决方法是使用IE特有的hack或使用称为Flexbox的CSS3属性。以下是两种解决方法的示例说明: 方法一:使用IE特有的hack 当块级元素没有固定宽度或采用绝对定位时,margin: 0 auto;可能无效。一个解决办法是使用IE特有的hack,例如设置text-al…

    css 2023年6月9日
    00
  • css最大宽度 css控制图片的最大宽度及expression学习

    下面是关于“CSS最大宽度、CSS控制图片的最大宽度及expression学习”的详细攻略: CSS最大宽度 CSS最大宽度指的是元素的最大宽度,可以使用max-width属性来控制。其语法如下: selector { max-width: value; } 其中selector表示需要设置最大宽度的元素,value表示最大宽度的数值,可以是具体像素值或百分…

    css 2023年6月10日
    00
  • CSS浮动引起的高度塌陷问题

    CSS浮动引起的高度塌陷问题是我们在进行页面布局时常常会遇到的问题。这种情况会导致元素高度不稳定,影响页面的美观和用户体验。下面是一份完整攻略,希望能够帮助您更好地理解和解决这个问题。 什么是高度塌陷问题? CSS浮动引起的高度塌陷问题是指,当我们设置了一个元素为浮动元素后,其它元素的高度和位置受到影响,可能会出现“塌陷”的情况。具体表现为: 父元素高度不被…

    css 2023年6月10日
    00
  • CSS表格样式:圆角,隔行,变色的具体实现

    实现CSS表格样式包括圆角、隔行、以及变色的步骤如下: 1. 圆角表格样式 使用CSS的border-radius属性可以实现表格的圆角效果。 示例代码如下: table { border-collapse: collapse; } table, td, th { border: 1px solid #999; border-radius: 6px; pad…

    css 2023年6月9日
    00
  • jQuery AJax调用asp.net webservers的实现代码

    下面是详细讲解”jQuery AJAX调用ASP.NET Web Services的实现代码”的攻略: 1. 安装ASP.NET Web Services 首先,我们需要安装ASP.NET Web Services。如果你使用的是Visual Studio 2012及以上版本,可以直接在安装时选择ASP.NET Web Development,这样就安装了所…

    css 2023年6月9日
    00
  • 有关opacity或RGBA设置颜色值及元素的透明值

    关于设置颜色值及元素的透明值,有两种常见的方法:设置透明度(opacity)和使用RGBA颜色模式。 1. 设置透明度 使用opacity来设置元素的透明度,该属性通常与CSS选择器一起使用,如下所示: selector { opacity: 0.5; /* 50%透明度 */ } 这里的selector指的是对应元素的CSS选择器,数字0.5表示透明度的值…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部