您现在的位置是:网站首页> 编程资料编程资料
深入理解CSS overflow:hidden——溢出,坍塌,清除浮动css中position:relative和overflow:hidden之间的问题CSS--overflow:hidden在项目实例中使用心得分享IE8 css overflow:hidden不起作用CSS教程:CSS让网页文字自动隐藏css中overflow:hidden失效问题的解决方法
2021-09-04
934人已围观
简介 这篇文章主要介绍了深入理解CSS overflow:hidden——溢出,坍塌,清除浮动的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
overflow:hidden是overflow属性的一个神奇用法,它可以帮助我们隐藏溢出的元素,清除浮动和解除坍塌。当某一个属性拥有这么多的功能时,难免使人难以把握,不过不要怕,只要信:看完这篇文章,我相信你绝对能对overflow:hidden的用法熟练掌握。
下面的代码将作为基本演示代码,每次讲解一个新的作用,我们都要将代码恢复成下面这个样子:
CSS样式:
.container{ background-color: black; } .div1{ background-color: aqua; width: 100px; height: 100px; } .div2{ background-color: red; width: 100px; height: 100px; }html内容:
程序运行效果:
1.使用overflow:hidden隐藏溢出
当父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.使用overflow:hidden清除浮动
当父元素的高height:auto时,我们使用overflow:hidden清除浮动
当我们为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-top:50px,我们想象中效果是这样的:

但实际上是这样的(这是开发人员工具下的效果):

CSS中存在一个margin collapse,即边界塌陷或者说边界重叠。对于上下两个并列的div块而言,上面div的margin-bottom和下面div的margin-top会塌陷,也就是会取上下两者margin里最大值作为显示值,所以从这个意义上说:CSS及浏览器的设计者们希望我们在布局时,如果遇到上下两个并排内容块的安排,最好只设置其中每个块上或下margin的一处即可。
但对于父块DIV内含子块DIV的情况,就会按另一条CSS惯例来解释了,那就是:对于有块级子元素的元素(父元素)计算高度的方式,如果元素没有上下边框和填充,那其高度就是第一个子元素顶部和底部边框边缘之间的距离。
结论:
解决父子DIV中顶部margin cllapse的问题,需要给父div设置:
1、边框,当然可以设置边框为透明;
2、为父DIV添加padding,或者至少添加padding-top;
此外,还可以通过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是否有固定的高度加以区分。它还额外肩负了解除坍塌的重任。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- 详解CSS定义字体、颜色、背景等属性简述CSS中的背景属性backgroundcss3实现一个div设置多张背景图片及background-image属性实例演示css 背景固定样式background-attachment属性基础CSS的background属性及CSS3的背景图片设置总结详解CSS3新增的背景属性
- CSS 字体新玩法之彩色字体的实现CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- CSS BEM 命名规范简介(推荐)CSS使用BEM命名规范实践
- css把容器级别(div...)标签固定在一个位置(在页面最右边)使用CSS3的ruby-position固定注音位置的用法示例html css 控制div或者table等固定在指定位置的实现方法详解使用CSS固定页面背景图片位置的方法基于jQuery+CSS的固定位置的网页侧边栏让DIV块在页面的某个位置固定的css代码
- 详解CSS pointer-events属性的使用css3 pointer-events 介绍详解CSS利用pointer-events防止重复点击的方法实例使用CSS的pointer-events属性实现鼠标穿透效果的神奇技巧css中pointer-events属性详解CSS的pointer-events属性详细介绍(作用和注意事项)css pointer-events属性实现下面元素可点击css不常见属性之pointer-events的使用方法
- CSS实现响应式布局的方法详解使用CSS3的@media来编写响应式的页面 css3 media 响应式布局的简单实例响应式设计你需要了解的知识点css3media响应式布局实例像素密度与CSS3的viewport在移动端Web响应式布局中的运用使用CSS3的rem属性制作响应式页面布局的要点解析自适应屏幕的CSS响应式布局设计技巧总结使用CSS媒体查询创建响应式布局教程支持IE8的纯css3开发的响应式设计动画菜单教程css3的@media属性实现页面响应式布局示例代码
- CSS设置列表样式和创建导航菜单实现代码CSS 带搜索导航栏的示例代码html+css+js实现导航栏滚动渐变效果css锚点定位被顶部固定导航栏遮住的解决方案不可思议的CSS导航栏下划线跟随效果html+css 实现简易导航栏功能CSS导航条菜单之带小三角形的实现代码css实现导航切换的实例代码CSS中的导航栏和下拉菜单的实现纯CSS + 媒体查询实现网页导航效果CSS3 二级导航菜单的制作的示例
- 详解css栅格系统在项目中的灵活运用浅谈CSS 栅格系统布局原理分析详解CSS中的栅格系统
- css设置多列等高布局的方法示例前端应该掌握的CSS实现多列等高布局技巧利用CSS3的flexbox实现水平垂直居中与三列等高布局浅析CSS等高布局的6种方式用CSS实现三列DIV等高布局以传达更好的视觉效果多列等高的CSS实现代码CSS 三栏等高布局实现方法CSS实例:CSS实现的等高网页布局CSS实例:三列等高布局-CSS教程-网页制作-网页教学网css多种方式实现等高布局的示例代码
- CSS 实现滑动门的实例代码CSS滑动门代码 脚本下载基于CSS3的个性滑动门菜单导航代码三个形式多样的CSS滑动门实例集CSS技巧 使用标签来创建导航菜单(滑动门教程)css 滑动门技术的介绍及实例分享 CSS网页实例:斜角滑动门导航条-CSS教程-网页制作-网页教学网CSS教程:专门介绍滑动门-CSS教程-网页制作-网页教学网CSS高级技巧:滑动门技术-CSS教程-网页制作-网页教学网
