CSS中BFC的概念及外层div包裹内层div处理方法

 对于div和css的用法,自己认为还是比较熟练的。但是对于一些概念性的东西,知之甚少,比如,今天看到有个BFC的概念,不知道CSS的BFC是啥意思。经过查阅资料,才知道这个概念。其实,虽然我们并不知道BFC是啥意思,因为在项目中,没有人会说什么BFC。但是我们在项目中经常用到BFC,每一个css布局基本上都会用到。为了消灭这一盲点,今天说一下什么是BFC吧。

 
BFC的概念
 
BFC全称Block Formatting Context ,直译“块级格式化上下文”,也有译作“块级格式化范围”。它是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。通俗的讲,就是一个div内部,我们用float和margin布局元素。
 
BFC布局引发的问题
 
关于BFC布局引发的问题,我之前在css常用效果总结中第10条就讲过用CSS的伪类处理的方法。今天再具体讲一讲。
 
首先
 
我们看看BFC布局引发的问题吧。
 
例如如下代码
 


  1. <!doctype html> 
  2. <html lang="en"> 
  3. <head> 
  4.     <meta charset="UTF-8"> 
  5.     <title>Clear float</title> 
  6.     <style type="text/css"> 
  7.         .container{ 
  8.             margin: 30px auto; 
  9.             width:600px; 
  10.             height: 300px; 
  11.         } 
  12.         .p{ 
  13.             border:solid 3px #a33; 
  14.         } 
  15.         .c{ 
  16.             width: 100px; 
  17.             height: 100px; 
  18.             background-color: #060; 
  19.             margin: 10px; 
  20.             float: left; 
  21.         } 
  22.     </style> 
  23. </head> 
  24. <body> 
  25.     <div class="container"> 
  26.         <div class="p"> 
  27.             <div class="c"></div> 
  28.             <div class="c"></div> 
  29.             <div class="c"></div> 
  30.         </div> 
  31.     </div> 
  32. </body> 
  33. </html> 

我们希望看到的效果是:

结果出现如下:

解决方案

解决方法一般有2种。

利用 clear属性,清除浮动

使父容器形成BFC

清除浮动的方法,我们可以用如下办法:

对父元素加一个class


  1. <div class="p floatfix"> 
  2.     <div class="c">1</div> 
  3.     <div class="c">2</div> 
  4.     <div class="c">3</div> 
  5. </div> 

添加如下CSS


  1. .floatfix{ 
  2.     *zoom:1; 
  3. .floatfix:after{ 
  4.     content:""; 
  5.     display:table; 
  6.     clear:both; 

这种方法是比较好的解决方案!

另一种解决方法就是让父元素成为BFC,这种方法有个小弊端,就是父元素也变成了浮动,不推荐用这种方法!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索布局
, 概念
, 方法
, 浮动
, 元素
, 一个
包裹
内层vlan 外层vlan、外层vlan和内层vlan、内层包封和外层包封、内层div超出外层、svlan是内层还是外层,以便于您获取更多的相关知识。

时间: 2024-08-30 00:58:56

CSS中BFC的概念及外层div包裹内层div处理方法的相关文章

使用CSS中的meta实现web定时刷新或跳转的方法

meta源信息功能之页面定时跳转与刷新 几乎所有的网页头部都有<meta>源信息.除了我们常用的定义编码.关键字(name="keywords").描述(name="description")(for SEO),还可以定义视区大小.缩放比例等(for 移动端),如下: CSS Code复制内容到剪贴板 <meta name="viewport" content="width=device-width,initial-s

css html php-如何使得很多个包含图片的div排列整齐?

问题描述 如何使得很多个包含图片的div排列整齐? 向大家请教一个问题. 我使用php输出很多个包含图片的div,代码如下.我用的是css中的float:right来控制,但是这些div排列不整齐.请问大家,该怎么控制这些div才能使得图片排列整齐呢? echo ' 我是可爱的标题 '. " "; 解决方案 不整齐最主要原因是你图片大小不一造成的,无论你怎么float,图片大小不一样肯定会参差不齐 解决方案两个: 1:横向布局,横向的三张图片为一个div包围,但要在css中限制高度,比

深入分析CSS布局中BFC及例子应用

1.什么是BFC BFC(Block Formatting Context,块级元素格式化上下文)是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. 通俗讲,BFC就是一种布局方式,在创建了 BFC后,其子元素会一个接一个地放置:盒子们自所在的 containing block 顶部起,水平方向上一个接一个撑满整个宽度,垂直方向上他们的起点是包含块的顶部,两个相邻的元素之间的垂直距离取决于 'margin' 特性.在 同一个BFC中,

CSS中怎么让DIV居中亲自实验得出的结论

CSS 如何使DIV层水平居中 今天用CSS碰到个很棘手的问题,DIV本身没有定义自己居中的属性, 网上很多的方法都是介绍用上级的text-align: center然后嵌套一层DIV来解决问题. 可是事实上这样的方法科学吗? 经过网络搜索和亲自实验得出以下结论: 正确的也是对页面构造没有影响的设置如下: 对需要水平居中的DIV层添加以下属性:   复制代码 代码如下: margin-left: auto; margin-right: auto; 经过这么一番设置问题似乎解决了,在FF中已经居中

DIV+CSS中浏览器兼容方法及div+css的使用技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 相信很多的朋友在div+css的页面制作当中都会遇到这个问题,由于IE系列浏览器对于HTML标签和CSS样式表的解释与其他浏览器会有所区别,所以在制作页面的时候经常会出现一些小BUG,和网页错位等现象,下面站长好站为大家讲解一写,在div+css中如何兼容各大浏览器. 首先我们先要检查相应的HTML标签,如果你的标签错误,无论你如何修改CSS

html+css-td里的div置顶css中如何表示

问题描述 td里的div置顶css中如何表示 html中的td里的div置顶,用css中怎么写(代码分离,不要在html中写)? 解决方案 http://blog.sina.com.cn/s/blog_67373f630100vsl3.html 解决方案二: 首先td的高度需要大于div的高度,然后设置td的vertical-align: top:同时还要去除div的margin以及td的padding.

css中为某个div设置高度,高度包括margin上下值吗?

问题描述 css中为某个div设置高度,高度包括margin上下值吗?高度具体包括哪些值或属性值呢? 解决方案 设置height就是高度了,margin是与另外一个对象的距离

css中position:fixed实现div居中

上下左右 居中  代码如下 复制代码 div{     position:fixed;     margin:auto;     left:0;     right:0;     top:0;     bottom:0;     width:200px;     height:150px; } 如果只需要左右居中,那么把 bottom:0; 或者 top:0; 删掉即可 如果只需要上下居中,那么把 left:0; 或者 right:0; 即可 下面附一个DIV 元素在浏览器窗口居中 其实,实现这

DIV+CSS中id和class的使用原则

本文向大家描述一下DIV CSS中id与class使用原则,在前面的文章里讨论过很多DIV CSS布局的技巧,我们在用CSS来控制网页布局时我们可能都会遇到一个问题:当定义一个属性时,是使用id,还是使用class?这里和大家说明一下,相信本文介绍一定会让你有所收获. DIV CSS中id与class使用原则 在51cto.com前面的文章里讨论过很多DIV CSS布局的技巧.在用CSS来控制网页布局时我们可能都会遇到一个问题:当定义一个属性时,是使用id,还是使用class?今天51cto.c