CSS - float & overflow: hidden

简介: CSS - float & overflow: hidden

CSS中为什么 overflow:hidden 能清除浮动 float 的影响?原理是什么?

父块没有设置指定的高宽,当子块设置为浮动后,原本包裹子块的父块的高度塌陷消失,这时给父块设置overflow:hidden就能清楚浮动造成的影响,使父块重新包裹子块。

但这个有个本质问题,当父块高度塌陷消失,这时给父块设置overflow:hidden,按照这个属性的本意,本应该是切掉超出父块的内容,也就是应该将父块之外的浮动的子块切除隐藏。

但为什么,这时没有切除隐藏超出边界的子块,反而恰恰让父块重新有了高度包裹子块,这难道不是和overflow:hidden的本意相背离了吗?

为什么效果里是没有切除隐藏,反而是重新让父块生成高度包裹子块以达到清楚浮动的影响。

请哪位高手能否从本质和根源上分析在这个效果里overflow:hidden背离其属性本意的问题,从本质和根源上分析为什么overflow:hidden背离其本意没有切除隐藏反而产生了清楚浮动的影响。

说法一:

overflow: hidden 的意思是超出的部分要裁切隐藏掉
那么如果 float 的元素不占普通流位置
普通流的包含块要根据内容高度裁切隐藏
如果高度是默认值auto
那么不计算其内浮动元素高度就裁切
就有可能会裁掉float
这是反布局常识的

所以如果没有明确设定容器高情况下
它要计算内容全部高度才能确定在什么位置hidden
浮动的高度就要被计算进去
顺带达成了清理浮动的目标
同理
overflow 非默认值
position 非默认值
float 非默认值
等都是遵循这个布局计算思路

作者:貘吃馍香

说法二:

因为height: auto;的计算结果不是一定为0的。
正常父元素包含浮动子元素,父元素的高度确实为0。
但是父元素overflow:hidden;后,首先会计算height: auto;的真实高度,由于其触发了BFC,需要包含子元素,所以高度不是0,而是子元素高度。
这时overflow: hidden;才起到隐藏作用,不过父元素高度足够大,所以子元素没有被隐藏。

总之,是先计算真实高度,再去隐藏。如果是先直接隐藏了,再去计算高度也就没有意义了。

作者:hgm

目录
相关文章
|
8月前
|
容器
mui.css 滚动条消失 导致超出部分无法显示 overflow属性
mui.css 滚动条消失 导致超出部分无法显示 overflow属性
74 0
|
7月前
|
前端开发 容器
CSS基础-浮动:float与清除浮动
【6月更文挑战第9天】本文介绍了CSS中的`float`属性,用于创建多列布局和图文混排,但会导致浮动塌陷和元素重叠问题。为解决这些问题,文章探讨了`clear`属性的四种清除浮动方法,包括`clear`属性、空元素、伪元素和`overflow`方法。随着Flexbox和Grid布局的兴起,它们在某些场景下替代了浮动,但理解浮动原理仍是布局基础。掌握浮动和清除浮动技巧对构建稳定布局至关重要。
85 5
|
6月前
|
编解码 前端开发 C++
CSS【详解】布局 display ( 含 flex 布局,grid 布局,table 布局,float 布局,响应式布局 等)
CSS【详解】布局 display ( 含 flex 布局,grid 布局,table 布局,float 布局,响应式布局 等)
171 0
|
6月前
|
前端开发
css display position float 之间的关系
css display position float 之间的关系
34 0
|
8月前
|
前端开发
CSS float(浮动)
CSS float(浮动)
65 2
|
前端开发 容器
|
前端开发
CSS布局讲解-float浮动布局使用
CSS布局讲解-float浮动布局使用
|
前端开发 容器
前端祖传三件套CSS的布局之float
作为前端开发的必备技能,CSS布局一直是我们需要不断掌握和学习的重要内容。在CSS中,float布局是最经典、最常用的一种布局方式。本文将介绍float布局的基本概念、使用方法、注意事项,并结合实例进行讲解。
197 0
|
前端开发
css的学习(下)两千字入门css的几种布局(flex,grid,float...)
# 规则生效问题 ## 优先级 特异度的值来决定的 ### 选择器的特异度 Sqecificity id (伪)类 标签 #id .class tag 百 十 个 # 继承 某些属性会自动继承其父元素的计算值 除非显示的 指定一个值 文字相关的,颜色,字体 不给会继承 一些盒子模型 大小 不会继承 ## css可以和不可以继承的属性 不可继承的:display、margin、border、padding、background、height、min
|
前端开发
web前端-CSS(display,position,overflow和浮动float)
web前端-CSS(display,position,overflow和浮动float)
137 0

热门文章

最新文章