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

(图文详细)最通俗易懂的CSS 浮动float属性详解图文详细 最通俗易懂的 CSS 浮动 float 属性详解声明 本文属于搬砖大神的文章到自己的博客上 原文地址为 https www cnblogs com iyangyuan archive 2013 03 27 2983813 html 很早以前就接触过 CSS 但对于浮动始终非常迷惑 可能是自身理解能力差 也可能是没能遇到一篇通俗的教程 前些天小菜终于搞懂了浮动的基本原理 迫不及待的

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

声明:本文属于搬砖大神的文章到自己的博客上,原文地址为:https://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html

很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程。

前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家。

写在前面的话:

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

教程开始:

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

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

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

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

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

假如我们把div2、div3、div4都设置成浮动,效果如下:
这里写图片描述
根据上边的结论,跟着小菜理解一遍:先从div4开始分析,它发现上边的元素div3是浮动的,所以div4会跟随在div3之后;div3发现上边的元素div2也是浮动的,所以div3会跟随在div2之后;而div2发现上边的元素div1是标准流中的元素,因此div2的相对垂直位置不变,顶部仍然和div1元素的底部对齐。




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

假如把div2、div3、div4都设置成浮动,效果如下:
这里写图片描述
道理和左浮动基本一样,只不过需要注意一下前后对应关系。由于是右浮动,因此右边靠近页面边缘,所以右边是前,因此div2在最右边。




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

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

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

 清除浮动的关键字是clear,官方定义如下: 语法: clear : none | left | right | both 取值: none : 默认值。允许两边都可以有浮动对象 left : 不允许左边有浮动对象 right : 不允许右边有浮动对象 both : 不允许有浮动对象 

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

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

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

可以看出div2的右边有一个浮动元素div1,那么我们可以在div2的CSS样式中使用clear:right;来指定div2的右边不允许出现浮动元素,这样div2就被迫下移一行,排到div1下边。
这里写图片描述
至此,读者已经掌握了CSS+DIV浮动定位基本原理,足以应付常见的布局。




其实,万变不离其宗,只要读者用心体会,再复杂的布局都可以通过小菜总结的规律搞定。

写在后面的话:

必须严正声明,CSS这块极其混乱,尤其是浏览器的兼容性问题,小菜水平有限,本文很可能有不当之处,望读者见谅。

其实真不想写这么长的文章,可为了读者能够理解,总是不由自主的想多举些例子。

为了减轻读者心理压力,本文没有任何CSS、HTML代码,因为现在很多教程上来就是一大堆CSS代码,看到就烦,别说细读了。

最后预祝读者阅读愉快,开心掌握知识。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200613.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:26
下一篇 2026年3月20日 上午10:26


相关推荐

  • Java与C++的优劣:谁更胜一筹?

    Java与C++的优劣:谁更胜一筹?1.基础介绍Java与C++都拥有相当长的历史,且语法相当类似,并被众多业界巨头所采用。事实上,Java本来就是从C++衍生出来的。不过尽管相似,二者之间仍然存在显著区别。很多人都说会C++就能会快掌握Jave。C++是不好学,但是我告诉你java也不好学。C++难是难在语言本身,java难是难在各种框架和库。你单纯学个java语法,你什么玩意也做不了,java的东西都在java之外。

    2022年7月7日
    36
  • 人工智能:大语言模型(LLM)原理与应用实战

    人工智能:大语言模型(LLM)原理与应用实战

    2026年3月15日
    3
  • 如何查看vue版本号

    如何查看vue版本号在cmd控制台内,输入npm-v可查看到npm的版本号;vue-V可看到vue的版本号。

    2022年4月28日
    145
  • MySQL 1045登录失败

    MySQL 1045登录失败当你登录MySQL数据库出现:Error1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访问了,最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信息将丢失,如果你不想重装,那么就需要找回密码或者重置密码。解决的方法应该有多种,这里我推荐大家使用一种原理通过,操作简单的方法,适用于windows以及linux平台。 MySQL1045错误如

    2022年6月9日
    36
  • Thinkpad x200 X201拆机换风扇教程 实图

    Thinkpad x200 X201拆机换风扇教程 实图X200机器取下电池后,背面图:上图:背部合计16颗螺丝,规格长度下面8有标注。1.黄色圈—–屏轴螺丝2.蓝色圈—-硬盘螺丝3.黑色圈—-键盘螺丝4.灰色圈—-SIM卡插槽(X200内部有扩充模块插槽这个插槽也可插询盘,X200均预留了WWAN天线在屏里面)5.绿色圈—-掌托/U形框螺丝6.红色方圈—-排水槽(是防水泼而不是防水,想起有个客户向别人炫耀往键盘上…

    2022年6月27日
    112
  • appstore_被拒记录

    appstore_被拒记录2019 年 12 月 24 日上午 8 01 发件人 Apple2 1Performance AppCompleten 1 InformationN butwearenota

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号