当前位置: 首页 > Web前端 > CSS

CSS浮动小结float

时间:2023-03-30 13:44:08 CSS

简介在维护一些项目的时候,发现很多地方都使用了float来进行布局。我知道这个属性的作用以及如何解决相关问题,但我不能再说什么了。把它整理一下。OriginMyGitHub在这里约定是为了了解float相关的问题和解决方案,不是去比较它们的优劣和兼容性,而是相信未来会越来越好。基本的html结构如下:

下面的示例页面:CSSfloatingfloat相关的第一个解决方案示例mobile终端浏览浮动的目的浮动设计的初衷是为了实现文字环绕效果。在一些教程中,浮动的介绍并没有强调这一点,而是讲如何使用这个属性来实现一些所谓的“有趣”的效果。虽然扩展了思路,但感觉不太合适。浮动的介绍W3C文档说的很简洁:这个属性指定一个框向左浮动,向右浮动或者不浮动。以下是提取的基本特征。价值:左|对|无|inheritInitial:none适用于:all,butsee9.7Inherited:no以下是相关说明和一些注意事项。重要的认知浮动从正常文档流中移除元素,从正常文档流中移除。然后向左或向右平移,移动直到碰到它所在容器的边界,或碰到另一个浮动元素。left值的作用:元素会生成一个块级的框向左浮动,正常的文档流从这个框的右上方开始。right:与left属性值类似,只是元素生成的块级框向右浮动,正常的文档流会从这个框的左侧和顶部开始。none:盒子没有浮动。display、position、float的关系我多次看到有人把这些属性写在一起,感觉自己是抱着试错的心态写CSS的。以下情况的示例页面:显示、位置和浮动之间的示例关系。精力有限,只是在规则应用下尝试了一些有价值的情况。这三个属性影响框的生成和布局,它们的相互影响有如下顺序规则:如果display属性的值为none,那么position和float属性将不会被应用。这种情况不会生成框。否则,如果position的指定值为absolute或fixed,则盒子将被绝对定位,float的计算值为none,显示的取值规则如下表所示。框的位置取决于top、right、bottom、left属性和框的包含块。否则,如果float指定一个非none的值,则框会浮动,显示取值规则如下表所示。否则,如果该元素为根元素,则显示值规则如下表所示。但是,在CSS2.2中有一个例外,当指定为list-item的值成为block或list-item的计算值时,其值是未定义的。否则,将按指定应用剩余的显示属性值。指定值计算值inline-tabletableinline,table-row-group,table-column,table-column-group,table-header-group,table-footer-group,table-row,table-cell,table-caption,inline-blockblockotherssameasspecified从上面的规则可以看出,把这些属性写在一起有时候是行不通的。对于不熟悉它的人来说,这可能会造成不必要的混淆。FloatingConstraintRules约束规则有很多,但是在实践中遇到的情况没有那么多。我觉得需要注意三点:浮动元素的包含块是它最近的块级父元素;包含块Block浮动元素的边界是指内容区域的边界;多个浮动元素之间的交互。有关详细信息,请参见此处。如果后面在实践中遇到相关情况,这里需要补充一下。浮动的问题就是大家熟知的父元素高度塌陷问题,这是可以想象的,因为它脱离了文档流。要解决这个问题,有2个参数:clearfloat和closefloat。看完这篇文章,我觉得很有道理。解决高崩问题,清浮只是方法之一。称封闭浮动更为恰当和严谨。关闭float的方法方法一:使用属性clear样式属性clear结构变成如下"clear-fix">
新增的样式为:.clear-fix{clear:both;}这个是CSS属性clear的使用,表示元素框的边将floatearlier框是相邻的,both的取值表示:在源文档中,如果有一个浮动元素早于这个元素,则该元素的上边框需要在任意一个的下外(边)边框右下或左下浮动元素。标签属性clear这个功能和CSSform一样,标签上的clear属性在html5中已经弃用,推荐使用CSS属性clear。方法二:使用伪元素/*添加到父元素*/.close-float-method2:after{content:".";显示:块;高度:0;明确:两者;visibility:hidden;}这个是使用伪元素代替附加标签,主要属性还是使用clear。据说这种方法在跨浏览器时有问题。上面提到了ie7,所以没试。有关详细信息,请参见此处。方法三:使用属性overflow/*给父元素添加*/.close-float-method3{overflow:hidden;}这个要提一个概念Blockformattingcontexts(块级格式化上下文)。浮动的、绝对定位的元素和块级包含块(例如内联块、表格单元格和表格标题)不是块级框。溢出属性值取可见以外的值的块级框为其内容级格式化上下文创建新块。在块级格式化上下文中,框从包含块的顶部开始一个接一个地垂直放置。两个相邻框之间的垂直距离由margin属性确定。垂直边距在同一块级格式化上下文中重叠。在块级格式化上下文中,每个框的左外边框接触包含块的左边框。这也适用于浮动显示,除了该框建立了一个新的块级格式化上下文。这里使用了overflow之后,建立了一个块级的格式化上下文,包括浮动元素,所以浮动是关闭的。上面提到的相关示例页面:CSSfloatingfloat相关初步解决方案示例参考https://developer.mozilla.org...定位float:'float'属性那些年我们一起清除的floatingclearfix改进和overflow:隐藏的详解[翻译]Controllingflownexttofloats:the'clear'propertyBlockformattingcontextsEverythingyouKnowaboutClearfixisWrongCSSfloatAnalysis