最通俗易懂的CSS浮动float属性详解(图文详细)

lxf2023-02-16 15:34:12

本文详细分析了css中float浮动属性的相关知识,float 属性定义元素在哪个方向浮动,我们来看看不同的属性值会有什么不同的结果,希望对大家有所帮助。

最通俗易懂的CSS浮动float属性详解(图文详细)

CSS 浮动float属性详解

我很久以前就接触过CSS,但我总是对浮动感到困惑。可能是我理解能力差,也可能是我没有遇到一个流行的教程。

几天前,我终于明白了浮动的基本原理,迫不及待地想和大家分享。

写在前面的话:

   由于CSS内容较多,没有精力从头到尾再讲一遍,只能有针对性的讲解。
   如果读者理解CSS盒模型,但不理解浮动,那么这篇文章可以帮助你。
   配菜水平有限,本文仅为入门教程,不当之处请谅解!
   本文以p元素布局为例。

教程开始:

首先要知道,p是块级元素,在页面上独占一行,自上而下排列,即传说中的流。如下图所示:
最通俗易懂的CSS浮动float属性详解(图文详细)
可以看出,即使p1的宽度很小,页面中的一行也可以容纳p1和p2,p2也不会排在p1后面,因为p元素是独有的。

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

浮动可以理解为让某个p元素脱离标准流,漂浮在标准流上,与标准流不在同一水平。

例如,假设上图中的p2浮动,它将脱离标准流,但p1、p3、P4仍在标准流中,因此P3会自动向上移动,占据P2的位置,重新形成一个流。如图所示:
最通俗易懂的CSS浮动float属性详解(图文详细)
从图中可以看出,由于p2的浮动设置,它不再属于标准流,p3自动上移取代p2的位置,p1、p3、P4依次排列,成为一个新的流。由于浮动漂浮在标准流上,P2阻挡了部分P3,P3看起来“矮”。

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

如果我们使用右浮P2,会有以下效果:
最通俗易懂的CSS浮动float属性详解(图文详细)
此时p2依靠页面右边缘排列,不再遮挡p3,读者可以清楚地看到上面提到的p1、p3、由p4组成的流。

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

下面我们将p2和p3加左浮动,效果如图所示:
最通俗易懂的CSS浮动float属性详解(图文详细)
同样,因为p2、P3浮动,它们不再属于标准流,所以P4会自动向上移动,与P1形成“新”标准流,浮动漂浮在标准流上,所以P2阻挡了P4。

咳咳,到了重点,当同时对p2进行比较时,、P3设置浮动后,P3会跟随P2。不知道读者有没有注意到,到目前为止,P2在每个例子中都是浮动的,但并没有跟随P1。因此,我们可以得出一个重要的结论:

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

p的顺序由HTML代码中p的顺序决定。
靠近页面边缘的一端是前端,远离页面边缘的一端是后端。
最通俗易懂的CSS浮动float属性详解(图文详细)
为了帮助读者理解,再举几个例子。

假如我们把p2放进去、p3、p4都设置成浮动,效果如下:
最通俗易懂的CSS浮动float属性详解(图文详细)
根据上述结论,跟随配菜理解:从p4开始,发现上元素p3浮动,p4跟随p3;p3发现上元素p2也浮动,p3跟随p2;p2发现上元素p1是标准流中的元素,因此p2的相对垂直位置不变,顶部仍与p1元素底部对齐。

因为它是左边浮动的,左边靠近页面边缘,所以左边是前面,所以p2在最左边。

假如把p2、p3、p4都设置成浮动,效果如下:
最通俗易懂的CSS浮动float属性详解(图文详细)
事实与左浮动基本相同,但我们需要注意前后的对应关系。因为它是右浮动的,所以右边靠近页面的边缘,所以右边是前面,所以p2在最右边。

假如我们把p2放进去、P4左浮动,效果图如下:
最通俗易懂的CSS浮动float属性详解(图文详细)
依然是基于结论,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,它们都是左浮动的,场景如下:
最通俗易懂的CSS浮动float属性详解(图文详细)
此时p1、P2都是浮动的,按照规则,P2会跟着P1,但我们还是希望P2能排在P1下面,就像P1没有浮动,P2左侧浮动一样。

此时,有必要清除浮动(clear),如果只是根据官方定义,读者可能会尝试这样写:在P1CSS风格中添加clearrr:right;,理解为P1右侧不允许有浮动元素,因为P2是浮动元素,所以会自动向下移动一行来满足规则。

事实上,这种理解是不正确的,这样做是没有效果的。看小菜结论:
CSS去除浮动(clear),一定要记住,这一规则只能影响使用清除元素本身,而不能影响其他元素。

如何理解它?以上面的例子为例,我们希望P2移动,但我们使用P1元素的CSS风格来去除浮动,并试图通过去除P1右侧的浮动元素(clear:right;)强迫P2向下移动是不可行的,因为这种去除浮动是在P1中调用的,它只能影响P1,而不能影响P2。

根据配菜的结论,如果你想让P2向下移动,你必须在P2的CSS风格中使用浮动元素P1。在这种情况下,P2的左侧有浮动元素P1,所以只要在P2的CSS风格中使用clear:left;指定p2元素左侧不允许浮动元素,因此p2被迫向下移动。
最通俗易懂的CSS浮动float属性详解(图文详细)
那么如果页面中只有两个元素P1P1,那么如果页面中只有两个元素P1P1、P2,它们都是右浮动的?读者此时应该已经能够自己推测场景,如下:
最通俗易懂的CSS浮动float属性详解(图文详细)
此时,如果要让p2下移到p1下,该怎么办?

同样,根据配菜的结论,如果我们想移动P2,我们必须在P2的CSS风格中调用浮动,因为浮动只会影响其元素的调用。

可见P2右侧有一个浮动元素P1,所以我们可以在P2CSS风格中使用P2clear:right;在指定p2的右侧不允许出现浮动元素,因此p2被迫向下移动一行,排到p1下方。
最通俗易懂的CSS浮动float属性详解(图文详细)
至此,读者已经掌握了CSS p浮动定位的基本原理足以应对常见的布局。

事实上,万变不离其宗,只要读者用心去体验,再复杂的布局也可以通过总结的规律来完成。

(学习视频分享:css视频教程)

以上是CSS浮动float属性最通俗易懂的详细内容(图文详细),更多请关注AdminJS的其他相关文章!