深入理解CSS overflow:hidden——溢出,坍塌,清除浮动
overflowhidden是overflow属性的一个神奇用法,它可以帮助我们隐藏溢出的元素,清除浮动和解除坍塌。当某一个属性拥有这么多的功能时,难免使人难以把握,不过不要怕,只要信看完这篇文章,我相信你绝对能对overflow:hidden的用法熟练掌握。
狼蚁网站SEO优化的代码将作为基本演示代码,每次讲解一个新的作用,我们都要将代码恢复成狼蚁网站SEO优化这个样子
CSS样式
.container{ background-color: black; } .div1{ background-color: aqua; width: 100px; height: 100px; } .div2{ background-color: red; width: 100px; height: 100px; }
html内容
<div class="container"> <div class="div1"></div> <div class="div2"></div> </div>
程序运行效果
1.使用overflowhidden隐藏溢出
当父div拥有固定的高度时,比如height:500px,我们使用overflow:hidden来隐藏溢出。
当使用div+css布局时,会出现很多的div嵌套——父div内嵌套一个或多个的子div,默认情况下,父div的高度是auto——它可以被子div任意的撑大。父div也可以有固定的高度(或宽度),比如height:500px,那么如果子div的高度超过了这个值,在默认情况下,子div会超出父div的束缚,这就是溢出。我们可以通过设置父div的CSS属性——overflow来对子div进行控制。这里使用overflow:hidden来隐藏子元素溢出的部分。
2.使用overflowhidden清除浮动
当父元素的高height:auto时,我们使用overflowhidden清除浮动
当我们为div1和div2加上一个属性float:left后,我们会发现背景色为黑色父div消失了,这是因为 浮动的元素脱离文档元素, 不占据空间。 不浮动的元素会直接无视掉这个元素父div无视了自己的两个孩子,其高度为0(因为我们没有设置父div的高度),所以父div没有显现。
想让父div“宽容的”接受自己的两个孩子有两个办法
(1) 第一个就是让父亲也浮动起来 ,我们试着给父div添加一个CSS属性float:right,会发现两个颜色块出现在了屏幕的右边,依然没有父div的身影,通过开发人员工具不难看出父div已经包容子div
这是因为浮动的div已经失去了其“独霸一行”的能力,我们需要手动为父div设置一个宽度,比如width:500px,之后可以看到
(2)第二种就是 为父亲添加overflow:hidden属性用以清除浮动
.container{ background-color: black; overflow:hidden;}
这时的效果如图所示
(1)(2)一个使用了都浮动的战略,一个使用了清除浮动的战略使父div宽容的接受了子div,两者的 区别在于都浮动需要额外设定父div的宽度,因为浮动起来的div失去了div独占一行的特性,而清除浮动的父div仍然霸道。
3.解除坍塌
可以使用overflow:hidden解除margin坍塌,了,坍塌是不分父div的高度是否固定的
要知道什么叫做坍塌
我们为div1添加一个属性margin-:50px,我们想象中效果是这样的
但实际上是这样的(这是开发人员工具下的效果)
CSS中存在一个margin collapse,即边界塌陷或者说边界重叠。对于上下两个并列的div块而言,上面div的margin-bottom和狼蚁网站SEO优化div的margin-会塌陷,也就是会取上下两者margin里最大值作为显示值,所以从这个意义上说CSS及浏览器的设计者们希望我们在布局时,如果遇到上下两个并排内容块的安排,最好只设置其中每个块上或下margin的一处即可。
但对于父块DIV内含子块DIV的情况,就会按另一条CSS惯例来解释了,那就是对于有块级子元素的元素(父元素)计算高度的方式,如果元素没有上下边框和填充,那其高度就是第一个子元素顶部和底部边框边缘之间的距离。
结论
解决父子DIV中顶部margin cllapse的问题,需要给父div设置
1、边框,可以设置边框为透明;
2、为父DIV添加padding,或者至少添加padding-;
,还可以通过over-flow来解决
(1)我们可以为父div添加overflow:hidden解决这个问题
.container{ background-color: black; overflow: hidden; }
效果如图所示
(2)会思考的读者一定会考虑浮动能不能解决这个烦人的问题,这里为了排除overflow:hidden对未定高度的父div的影响,我们为父div设置一个高度
.container{ background-color: black; height: 200px; }
我们为所有子div添加一个浮动属性(比如float:left),显而易见,只要是浮动的子div就会完全避免坍塌的问题(PS无论父div是否浮动)
可以使用overflow:hidden来解除坍塌,浮动的div根本不用考虑坍塌。
4.
overflow:hidden的用法在溢出和清除浮动上主要针对父div是否有固定的高度加以区分。它还额外肩负了解除坍塌的重任。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
长沙网站设计
- 如何自己建一个网站 自己想建个网站,怎么建
- 如何制作网站免费建站 创建网站免费注册
- html简单网页代码 html简单网页代码超链接
- dreamweaver网页制作 dreamweaver网页制作模板
- 上海网站建设 上海网站建设制作微信
- 如何制作网站和网页 如何制作一个网页
- html网页制作代码大全 端午节html网页制作代码大
- app开发公司 app开发公司前十名
- html网页制作 html网页制作文字居中
- app制作一个需要多少钱 请人制作一个app多少钱
- 成都网站制作 成都网站制作维护
- 百度建一个网站多少钱 百度做个公司网站要多少
- html+css网页制作成品 web网页制作成品css+javascrip
- html网页制作案例 html网页设计案例
- html+css网页制作成品 web网页制作成品css+javascrip
- 个人网站模板 个人网站模板HTML