CSS中float属性如何理解?一文带你看懂原理

Admin 2022-02-17 群英技术资讯 348 次浏览

    这篇文章给大家分享的是CSS中float属性的相关内容。对于CSS中float属性的使用,有一些朋友是存在疑惑的,下文给大家很详细的介绍了float属性,而且通俗好理解,对大家学习和理解都有帮助,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。

    CSS 浮动float属性详解

    教程开始:

    首先要知道,p是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流。如下图:

    可以看出,即使p1的宽度很小,页面中一行可以容下p1和p2,p2也不会排在p1后边,因为p元素是独占一行的。

    注意,以上这些理论,是指标准流中的p。
    小编认为,无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个p元素”。
    显然标准流已经无法满足需求,这就要用到浮动。

    浮动可以理解为让某个p元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。

    例如,假设上图中的p2浮动,那么它将脱离标准流,但p1、p3、p4仍然在标准流当中,所以p3会自动向上移动,占据p2的位置,重新组成一个流。如图:

    从图中可以看出,由于对p2设置浮动,因此它不再属于标准流,p3自动上移顶替p2的位置,p1、p3、p4依次排列,成为一个新的流。又因为浮动是漂浮在标准流之上的,因此p2挡住了一部分p3,p3看起来变“矮”了。

    这里p2用的是左浮动(float:left;),可以理解为漂浮起来后靠左排列,右浮动(float:right;)当然就是靠右排列。这里的靠左、靠右是说页面的左、右边缘。

    如果我们把p2采用右浮动,会是如下效果:

    此时p2靠页面右边缘排列,不再遮挡p3,读者可以清晰的看到上面所讲的p1、p3、p4组成的流。

    目前为止我们只浮动了一个p元素,多个呢?

    下面我们把p2和p3都加上左浮动,效果如图:

    同理,由于p2、p3浮动,它们不再属于标准流,因此p4会自动上移,与p1组成一个“新”标准流,而浮动是漂浮在标准流之上,因此p2又挡住了p4。

    咳咳,到重点了,当同时对p2、p3设置浮动之后,p3会跟随在p2之后,不知道读者有没有发现,一直到现在,p2在每个例子中都是浮动的,但并没有跟随到p1之后。因此,我们可以得出一个重要结论:

    假如某个p元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。

    p的顺序是HTML代码中p的顺序决定的。
    靠近页面边缘的一端是前,远离页面边缘的一端是后。

    为了帮助读者理解,再举几个例子。

    假如我们把p2、p3、p4都设置成浮动,效果如下:

    根据上边的结论,跟着小菜理解一遍:先从p4开始分析,它发现上边的元素p3是浮动的,所以p4会跟随在p3之后;p3发现上边的元素p2也是浮动的,所以p3会跟随在p2之后;而p2发现上边的元素p1是标准流中的元素,因此p2的相对垂直位置不变,顶部仍然和p1元素的底部对齐。

    由于是左浮动,左边靠近页面边缘,所以左边是前,因此p2在最左边。

    假如把p2、p3、p4都设置成浮动,效果如下:

    道理和左浮动基本一样,只不过需要注意一下前后对应关系。由于是右浮动,因此右边靠近页面边缘,所以右边是前,因此p2在最右边。

    假如我们把p2、p4左浮动,效果图如下:

    依然是根据结论,p2、p4浮动,脱离了标准流,因此p3将会自动上移,与p1组成标准流。p2发现上一个元素p1是标准流中的元素,因此p2相对垂直位置不变,与p1底部对齐。p4发现上一个元素p3是标准流中的元素,因此p4的顶部和p3的底部对齐,并且总是成立的,因为从图中可以看出,p3上移后,p4也跟着上移,p4总是保证自己的顶部和上一个元素p3(标准流中的元素)的底部对齐。

    至此,恭喜读者已经掌握了添加浮动,但还有清除浮动,有上边的基础清除浮动非常容易理解。

    经过上边的学习,可以看出:元素浮动之前,也就是在标准流中,是竖向排列的,而浮动之后可以理解为横向排列。

    清除浮动可以理解为打破横向排列。

   清除浮动的关键字是clear,官方定义如下:



   语法:

   clear : none | left | right | both

   取值:

   none  :  默认值。允许两边都可以有浮动对象

   left   :  不允许左边有浮动对象

   right  :  不允许右边有浮动对象

   both  :  不允许有浮动对象

    定义非常容易理解,但是读者实际使用时可能会发现不是这么回事。
    定义没有错,只不过它描述的太模糊,让我们不知所措。

    根据上边的基础,假如页面中只有两个元素p1、p2,它们都是左浮动,场景如下:

    此时p1、p2都浮动,根据规则,p2会跟随在p1后边,但我们仍然希望p2能排列在p1下边,就像p1没有浮动,p2左浮动那样。

    这时候就要用到清除浮动(clear),如果单纯根据官方定义,读者可能会尝试这样写:在p1的CSS样式中添加clear:right;,理解为不允许p1的右边有浮动元素,由于p2是浮动元素,因此会自动下移一行来满足规则。

    其实这种理解是不正确的,这样做没有任何效果。看定论:     
对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。

    怎么理解呢?就拿上边的例子来说,我们是想让p2移动,但我们却是在p1元素的CSS样式中使用了清除浮动,试图通过清除p1右边的浮动元素(clear:right;)来强迫p2下移,这是不可行的,因为这个清除浮动是在p1中调用的,它只能影响p1,不能影响p2。

    根据定论,要想让p2下移,就必须在p2的CSS样式中使用浮动。本例中p2的左边有浮动元素p1,因此只要在p2的CSS样式中使用clear:left;来指定p2元素左边不允许出现浮动元素,这样p2就被迫下移一行。

    那么假如页面中只有两个元素p1、p2,它们都是右浮动呢?读者此时应该已经能自己推测场景,如下:

    此时如果要让p2下移到p1下边,要如何做呢?

    同样根据定论,我们希望移动的是p2,就必须在p2的CSS样式中调用浮动,因为浮动只能影响调用它的元素。

可    以看出p2的右边有一个浮动元素p1,那么我们可以在p2的CSS样式中使用clear:right;来指定p2的右边不允许出现浮动元素,这样p2就被迫下移一行,排到p1下边。

    现在大家对于CSS中float属性的用法应该都清楚了吧,本文有一定参考价值,需要的朋友可以了解看看,希望大家阅读完这篇文章能有所收获。最后,想要了解更多大家可以关注群英网络其它相关文章。

文本转载自PHP中文网

群英智防CDN,智能加速解决方案
标签: float属性

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服