加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

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

发布时间:2023-08-19 14:26:10 所属栏目:语言 来源:
导读:这篇文章给大家分享的是CSS中float属性的相关内容。对于CSS中float属性的使用,有一些朋友是存在疑惑的,下文给大家很详细的介绍了float属性,而且通俗好理解,对大家学习和理解都有帮助,有需要的朋友可以参考,接下
这篇文章给大家分享的是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下边。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章