flow布局(详解为什么设置overflow为hidden可以清除浮动带来的影响)
flow布局
详解为什么设置overflow为hidden可以清除浮动带来的影响1.问题起源
在平时的业务开发写CSS中,为了满足页面布局,元素的浮动特性我们用的不能再多了。使用浮动的确能够解决一些布局问题,但是也带了一些副作用影响,比如,父元素高度塌陷,我们有好几种可以清除浮动的方法,最常用的就是设置父元素的overflow:hidden这个属性,每次在写代码的时候总是这样写,但是,自己从没深度思考过这些写为什么能够清除浮动,最近,自己也查阅了一些资料,谈谈自己的理解。
2.情景再现
先上代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>清除浮动</title> <style> .container{ border: 1px solid #000; background: #0f0; } .child{ float: left; } </style> </head> <body> <li class="container"> <li class="child"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam dolorem eligendi laudantium libero magnam magni numquam voluptas voluptatem voluptatibus? Consequuntur delectus dolorem esse explicabo minus neque non quaerat voluptatum! </li> </li> </body> </html>
代码很简单,就是父元素container里面包含了一个子li元素child,然后我们使子元素的li向左浮动,页面展示效果如下:
结果来看,父元素只显示了四个方向边框的高度,背景颜色未显示,这是因为子元素浮动脱离文档流造成父元素高度塌陷。
3.解决方法
.container{ border: 1px solid #000; background: #0f0; overflow: hidden; }
只在container父元素加了一行overflow:hidden
页面展示效果如下:
父元素高度被撑起来了,背景颜色也显示出来了。
4.BFC概念
我们先了解一个名词:BFC(block formatting context),中文为“块级格式化上下文”。
先记住一个原则: 如果一个元素具有BFC,那么内部元素再怎么翻江倒海,翻云覆雨,都不会影响外面的元素。所以,BFC元素是不可能发生margin重叠的,因为margin重叠会影响外面的元素的;BFC元素也可以用来清楚浮动带来的影响,因为如果不清楚,子元素浮动则会造成父元素高度塌陷,必然会影响后面元素的布局和定位,这显然有违BFC元素的子元素不会影响外部元素的设定。
以下情况会触发BFC:
- <html>根元素
- float的值不为none
- overflow的值为auto,scroll,hidden
- display的值为table-cell,table-caption和inline--block中的任何一个
- position的值不为relative和static
显然我们在设置overflow值为hidden时使container元素具有BFC,那么子元素child浮动便不会带来父元素的高度坍塌影响。
5.总结
设置overflow为hidden使元素具有BFC而不会受子元素的影响,但是当子元素过多需要滚动显示时,我们可以设置overflow的值为auto或acroll,超出父元素之外的元素会被隐藏。使用overflo:hidden也具有一定的局限性,所以我们应该根据具体的业务场景来选择合适的方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
- css清除浮动
- flow布局(详解为什么设置overflow为hidden可以清除浮动带来的影响)
- margin属性设置4个参数(解决margin塌陷与margin合并margin清除浮动问题)
- html5清除浮动的方法(HTML5实现移动端点击翻牌功能)
- css如何去掉本身的浮动元素(CSS清除浮动的常用方法优缺点分析)
- clear清理指令(详解利用clear清除浮动的一些问题解决)
- 如何清除浮动元素带来的影响(关于清除浮动塌陷的几种方法总结)
- css用clearfix清除浮动
- 可以清除浮动影响的方法是(常用的清除浮动的方法)
- css浮动布局和盒子(css 盒模型 文档流 几种清除浮动的方法实例详解)
- css中浮动的方式有几种方式(浅谈css中浮动和清除浮动带来的影响)
- AMD YES A卡还是N卡 A卡和N卡的区别(AMDYESA卡还是N卡)
- 以后显卡多了一个新选择,N卡和A卡外又多了个I卡(以后显卡多了一个新选择)
- 读卖乐园的彩灯(读卖乐园的彩灯)
- 新疆80后在淘宝卖干果 以前是 不务正业 如今帮乡亲致富(新疆80后在淘宝卖干果)
- 弄清楚了销 售 买 卖这四个字,母婴生意做起来就没那么难了(弄清楚了销售买)
- 数读 买首饰金是 投资黄金 吗 买金容易卖金难(数读买首饰金是)
热门推荐
- dedecms栏目怎么调用友情链(DedeCms用SQL语句调用数据库任意内容方法)
- python包和模块管理(python的依赖管理的实现)
- dedecms当天文章总数(dedecms5.7文章二次开发实现阅读全文功能的方法)
- css 最高层级(浅谈CSS 权值 层叠 重要性!important)
- pythonexcel生成报表(python生成每日报表数据Excel并邮件发送的实例)
- vue自定义列组件(vue自定义表格列的实现过程记录)
- css标签及属性的语法规则(详解CSS 伪元素及Content 属性)
- SQL Server数据库应用中有用的几个工具
- php 获取get url(PHP实现获取url地址中顶级域名的方法示例)
- jquery.ajax error 如何调试错误