BFC布局规则:

  1. 内部的Box会在垂直方向,一个接一个地放置。
  2. Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
  3. 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  4. BFC的区域不会与float box重叠。
  5. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
  6. 计算BFC的高度时,浮动元素也参与计算

其中第4条:BFC的区域不会与float box重叠

  

<style type="text/css">
.first{
width:100px;
height:100px;
background-color:red;
float:left;
}
.second{
width:200px;
height:200px;
background-color:blue;
overflow: hidden;
/*position:absolute;*/ }
</style>
<body>
<div class="first"></div>
<div class="second"></div>
</body>

  按照上述的写法,两个div确实没有发生重叠,并且按照预期的那样水平排放。

<style type="text/css">
.first{
width:100px;
height:100px;
background-color:red;
float:left;
}
.second{
width:200px;
height:200px;
background-color:blue;
/*overflow: hidden;*/
position:absolute; }
</style>
<body>
<div class="first"></div>
<div class="second"></div>
</body>

随后,将second中生成BFC的元素overflow:hidden改为position:absolute;.这时候将,看到second将first覆盖了

看来,绝对定位还有点奇怪。

随后,于是我给蓝色块中添加一个小块,并给出绝对定位。

代码如下:

<style type="text/css">
.first{
width:100px;
height:100px;
background-color:red;
/*float:left;*/
}
.second{
width:200px;
height:200px;
background-color:blue;
/*overflow: hidden;*/
/*position:absolute;*/ }
.second-1{
width:100px;
height:100px;
background:green;
}
</style>
<body>
<div class="first"></div>
<div class="second">
<div class="second-1"></div>
</div>
</body>

而从样式可以发现绿色的小DIV并没有定位到想象中的页面左上角去,而是停留在他原来的位置。

这时候只要给绿色的小DIV的样式添加一个top:0;left:0;才会跑到页面左上角去。

这说明,只给出position:absolute;只让该元素脱离了普通文档流,而并没有改变他的位置

结论:给定一个元素position:absolute;而不给出top与left值,它就会去先找父元素并定位,随后,给出top与left值之后所呈现的位置才是定义的样式。

个人理解,如有不足,还请指教

BFC引发的关于position的思考的更多相关文章

  1. 由异常:Repeated column in mapping for entity/should be mapped with insert="false" update="false 引发对jpa关联的思考

    由异常:Repeated column in mapping for entity/should be mapped with insert="false" update=&quo ...

  2. try catch引发的性能优化深度思考

    关键代码拆解成如下图所示(无关部分已省略): 起初我认为可能是这个 getRowDataItemNumberFormat 函数里面某些方法执行太慢,从 formatData.replace 到 une ...

  3. Topk引发的一些简单的思考

    软件工程课程的一个题目:写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来.文本文件大约是30KB~300KB大小. 首先说一下这边的具体的实现都是在linux上实现的. ...

  4. 一个神秘现象引发对beego框架的思考

    小强最近在项目中遇到了一个很奇怪的问题:在整改日志规范时,为了避免影响现有的代码结构以及改动尽可能小的前提下,在调用记日志的SDK处将某一个字段值首字母改为大写,代码示例如下: fmt.Println ...

  5. 由mv命令引发的对inode的思考

    一场机器迁移引起的思考 最近团队一台机器老化了,准备做全量迁移,一不小心,就把100多个G的/data目录放到了新机器的/data/data目录下,上愁了,怎么削减一层data目录呢?难倒像Windo ...

  6. 由Menu小项目所引发的对软件工程的思考

    学习了孟老师的这几节课程,我学习了如何搭建一个简单的命令行menu小程序,从最简单的程序开始,一步步的根据软件工程的一般规律,进行逐步开发.完善,最终实现了一个比较通用的menu程序,可以让别的开发者 ...

  7. 由”二进制里不能有3“引发的对parseInt的思考

    看到一道面试题,["1", "2", "3"].map(parseInt) 答案是多少? 心生好奇,做做看,发现卡住,没什么头绪.首先对pa ...

  8. 由Vue引发的getter和setter思考

    公司的新项目决定使用Vue.js来做,当我打印出Vue实例下的data对象里的属性时,发现了一个有趣的事情: 它的每个属性都有两个相对应的get和set方法,我觉的这是多此一举的,于是去网上查了查Vu ...

  9. setTimeout(fn, 0)引发的JavaScipt线程的思考

    起因 周五改一个checkbox的display属性被错误地设置为none的bug. 经debug发现, 有两个地方修改了display属性: 1) checkbox的controller; 2) c ...

随机推荐

  1. HIbernate学习笔记(八) hibernate缓存机制

    hibernate缓存 一. Session级缓存(一级缓存) 一级缓存很短和session的生命周期一致,因此也叫session级缓存或事务级缓存 hibernate一级缓存 那些方法支持一级缓存: ...

  2. acm-DP整理

    一.背包 .各种01背包 void leastOne_Pack(int id, int num ) {//至少取一个: int i, j, c, v ; ; i <= num ; i ++ ) ...

  3. mac 学习

    1. 下载下来的eclipse,想把eclipse的图标放到applications目录里 做法:将下载的eclipse 的gz 文件直接移动到 /Applications 文件夹下 ,解压后即可在 ...

  4. OpenCV2.4.6与vs2008配置问题

    刚刚学习Opencv,发现配置的时候蛮复杂的,特此记下以备后续. 我的opencv安装在D:\OpenCV\opencv 1.设置环境变量 首先说一下环境配置,看到很多网上说的是根据系统的位数来判断, ...

  5. SQL2008-c:\PROGRA~1\COMMON~1\System\OLEDB~1\oledb32.dll出错找不到指定的模块

    MSSQL2000企业管理器里无法查询数据 SQL server无法执行查询,因为一些文件丢失或未注册等问题的解决直接在企业管理器里无法查询数据,但是用查询分析器可以查看数据,重装了SqlServer ...

  6. IOS成长之路-调用照相机和相册功能

    打开相机: //先设定sourceType为相机,然后判断相机是否可用(ipod)没相机,不可用将sourceType设定为相片库 UIImagePickerControllerSourceType ...

  7. [转]jquery.vTicker(垂直滚动)

    转至:http://www.w3ci.com/plugin/660.html 简介 vTicker 是一款非常小巧的 jQuery 垂直滚动插件,压缩后只有 2KB.vTicker 支持自定义滚动时间 ...

  8. java类的访问控制符与其他几个特殊修饰符的总结

    1  访问控制符 1.1 字段或者方法的访问控制符   同一个类中 同一个包中 不同包中的子类 不同包中的非子类 private YES       默认(包可访问) YES YES     prot ...

  9. Hibernate映射文件简单配置

    <?xml version="1.0" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibe ...

  10. Judge

    1. 循环list中的所有元素然后删除重复 public   static   List  removeDuplicate(List list)  { for  ( int  i  =   0 ; i ...