浮动
浮动属性产生之初是为了实现“文字环绕”的效果,让文字环绕图片在网页实现类似word中“图文混排”。
如果给元素设置float: left | right 会导致该元素脱离文档流。像设置的方向靠近。
危害
如何父元素没有设置高度,而所有的子元素都设置了浮动,会导致父元素的高度塌陷为0
如何解决
- 给父元素定义高度
- 给父元素加上overflow:hidden
- 给父元素加上overflow:auto
- 给父元素加上display: table
- 父元素定义伪类:after 伪类中添加clear: both
BFC
以前对BFC一直很模糊的概览。BFC(Block Formatting Context)是块级格式上下文的简写相对的还有个IFC(Inline Formatting Context)行级格式上下文
BFC的布局规则
- 内部的Box会在垂直方向,一个接一个地放置
- Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。
- BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
- BFC的区域不会与float box重叠
- 计算BFC的高度时,浮动元素也参与计算。
其实第4,5条是因为第3条导致的。
如何创建BFC
- float的值不是none。
- position的值不是static或者relative。
- display的值是inline-block、table-cell、flex、table-caption或者inline-flex
- overflow的值不是visible
BFC利用。
- 避免margin重叠
- 自适应布局
- 清除浮动
总结
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
因为BFC内部的元素和外部的元素绝对不会互相影响,因此, 当BFC外部存在浮动时
它不应该影响BFC内部Box的布局,BFC会通过变窄,而不与浮动有重叠。同样的,当BFC内部有浮动时,
为了不影响外部元素的布局,BFC计算高度时会包括浮动的高度。避免margin重叠也是这样的一个道理。
标签:BFC,浮动,margin,元素,理解,Box,给父 来源: https://www.cnblogs.com/stones-3/p/15592914.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。