美文网首页
CSS连载一:三种布局特性之浮动

CSS连载一:三种布局特性之浮动

作者: 看繁星 | 来源:发表于2023-08-01 14:58 被阅读0次

        今日关于浮动需要学习的内容:

        1.css布局三种机制:标准流、浮动、定位。

        2.为什么需要浮动。

        3.浮动的一些特性。

        4.子盒子浮动后与兄弟盒子、父级盒子的关系。

        5.为什么要清除浮动?清除浮动的本质?

        6.如何清除浮动?

        问题1:标准流、浮动、定位

        标准流分为水平和垂直排版①块级元素会独占一行,自上而下排列

        常用块级元素标签:div、hr、p、h1~h6、ul、ol、dl、form、table...

        ②行内元素不独占一行,从左到右排列,遇到父级元素边缘换行

        常用行内元素标签:span、a、i、em...

        浮动:float:属性值(none,left,right)。会脱离标准流。

        定位:position:属性值。(absoult、fixed定位会导致元素脱离文档流)

        问题2:为什么需要浮动

        在一些布局要求下,我们需要浮动来使元素脱离文档流来实现想要的布局。

        可以通过浮动,打破标准流块级元素独占一行的规则,脱离标准流。

        问题3:浮动的特性

        1.浮动会脱离标准流。不再占有原来的位置。位置会被后面的标准流元素补齐。

        2.浮动流只有水平排版。浮动后,遇到父级元素边缘依然会换行。浮动元素之间默认无缝隙。而且由于只有水平居左或居右,margin:0 auto;自动居中会失效

        3.任何元素都可以浮动。无论是行内元素、行内块元素还是块级元素都可以添加浮动。并且行内元素添加浮动后可以设置宽高。(类似行内块元素的特性)

        问题4:子盒子浮动后与兄弟盒子、父级盒子的关系

        与兄弟盒子:    会影响后面的标准流元素,占据浮动的元素的原位置,导致布局混乱。

        与父级盒子:

        1.如果子盒子全部浮动,那么它们均不占有位置,若父级盒子没有设置高度,那么父级盒子会高度为0,产生高度塌陷问题。

        2.添加浮动的子盒子会受父级盒子边框和内边距的影响。(定位可以不受这一影响)

        问题5:为什么要清除浮动

        我们已知子盒子脱标后可能会产生两种问题:一是后面的标准流盒子会受到影响而去占据浮动元素原先的位置,导致布局混乱。二是,如果子盒子都浮动,且父级盒子没有设置高度,会出现高度塌陷问题。为了解决浮动带来的这样的影响,让整体布局恢复正常,我们就需要清除浮动,所以本质上清除浮动并不是真的清除浮动,而是清除浮动后所带来的影响,用到的属性clear:both。

        问题6:如何清除浮动

        1.额外标签法(不推荐,出现冗余的结构):在最后一个浮动元素的末尾,加一个空的块级元素。例如:<div    style="clear:both"></div>。

        2.给父元素添加overflow:hidden属性,构建BFC盒子(不推荐)。其实这里的overflow属性值可以是除了visable以外的任何属性值,它们都可以构建BFC盒子。按照BFC盒子的特点,浮动元素的高度也包括在内,从而让父级盒子的高度撑起来,达到清除浮动的效果。但严格意义上来讲,其实并没有任何一个元素的浮动被清除。

        3.伪元素清除浮动法(推荐)。分为单伪元素和双伪元素,更推荐单伪元素:

    单:

    .clearfix::after{ content: ''; display: block; clear: both; }

    .clearfix{ *zoom: 1; }

    双:

    .clearfix::before,.clearfix::after{ content: ''; display: block; clear: both; }

    .clearfix{ *zoom: 1; }

    双伪元素清除浮动法更符合浮动元素两边闭合清除浮动的思想。不过目前在使用效果上,单双伪元素一致。

    相关文章

      网友评论

          本文标题:CSS连载一:三种布局特性之浮动

          本文链接:https://www.haomeiwen.com/subject/sxwypdtx.html