1. 前言

很长一段时间以来,浮动元素是我们所有web布局方案的基础。尽管如今主流的布局方案为弹性盒布局和栅格布局,但浮动仍是布局中常用的方法。浮动的概念很简单,向左浮动、向右浮动或者不浮动,但深究其详细规则却不容易。(浮动的用法传送门)

2. 包含块(containing block)

在开始深入研究浮动的细节之前,首先要建立一个包含块(containing block)的概念。浮动元素的包含块是最近的块级祖先元素。因此下面的标记中,浮动元素<img>的包含块是包含它的父级块元素<p>。此外,设为浮动的元素也会自动变为块元素"display:block;",浏览器自动忽略其他的display值。

<p>
This is paragraph text, but you knew that. Within the content of this
paragraph is an image that's been floated. <img src="testy.gif"
style="float: right;"> The containing block for the floated image is
the paragraph.
</p>

3. 浮动位置摆放规则

下面进入正题。

规则一

浮动元素的外缘可能不在其包含块的内缘上。通常,浮动元素会按下图方式进行排列,向左浮动尽量向左移动,向右浮动尽量向右移动,但是当碰到其他浮动元素就不能保证该元素可以移动到包含块的尽头了。

在本图和随后的图中,带圆圈的数字显示标记元素相对于源实际出现的位置,带编号的框显示浮动可见元素的位置和大小。

规则二

浮动元素的左外缘必须位于文档源中较早出现的左浮动元素的右外缘的右侧,除非后一个元素的顶部位于前一个元素的底部以下。同样地,浮动元素的右外缘必须位于文档源中较早出现的右浮动元素的左外缘的左侧,除非后一个元素的顶部低于前一个元素的底部。此规则防止浮动元素相互“覆盖”。如果一个元素浮动到左侧,并且另一个浮动元素已经存在,则后一个元素将放置在前一个浮动元素的右外缘。但如果浮动元素的顶部位于所有先前浮动图像的底部下方,然后它可以一直浮动到父元素的左内边缘。例子如下图所示。

规则三

向左浮动元素的右边缘可能在向右浮动元素左边缘的右侧,因此向右浮动的元素会下移。话听起来很拗口,看图就明白了。

规则四

浮动元素的顶部不能高于任何早期浮动或块级元素的顶部。浮动元素不会一直浮动到其父元素的顶部,浮动元素的顶部不可能比之前出现的浮动元素的顶部高。如下图所示,由于浮动元素2数被迫低于浮动元素1,所以浮动元素3的顶部与浮动元素2是平的。

规则五

浮动元素的顶部不能高于任何由文档源中较早出现元素的行框顶部。与规则四类似,此规则防止元素位于之前内容的行框顶部之上,进一步限制了元素的向上浮动。假设在段落的中间有一个浮动图像,该图像顶部可放置的最高位置是图像来源线框的顶部,如图所示,这样可以防止图像向上浮动太远。

规则六

如果左浮动元素的左侧有另一个浮动元素,则其右外缘可能不会位于包含块的右边缘的右侧。同样,右边有另一个浮动元素的右浮动元素的右外边可能不在其包含块的左边缘的左边。意思同样很拗口,看图就明白了,浮动元素也会换行,一行放不下就会另起一行。

规则七

浮动元件必须放置在尽可能高的位置

规则八

左浮动元素尽可能放在最左边,右浮动元素尽可能放在最右边。
规则七和规则八是浮动元素最基本的规则。

CSS指北——浮动(Floating)规则详解相关推荐

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

    (图文详细)最通俗易懂的CSS 浮动float属性详解 声明:本文属于搬砖大神的文章到自己的博客上,原文地址为:https://www.cnblogs.com/iyangyuan/archive/20 ...

  2. css样式继承规则详解

    css样式继承规则详解 一.总结 一句话总结:继承而发生样式冲突时,最近祖先获胜(最近原则). 1.继承中哪些样式不会被继承? 多数边框类属性,比如象Padding(补白),Margin(边界),背景 ...

  3. css中float详解,CSS浮动属性Float详解?史上最全Float详解

    我们在学习css样式的时候,都知道css是盒概念,并且每一个盒子都是一个元素,下面我们就对CSS浮动属性Float进行详解,让你彻底了解Float. 一:什么是Float浮动? Float浮动是css ...

  4. Apache Rewrite 规则详解

    在开篇之前: 我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的.需要原文的可以在谷歌上搜索一下&qu ...

  5. linux下防火墙iptables用法规则详解

    linux下防火墙iptables用法规则详解 分享者: du52.com 邮件: wangaibo168@163.com 主页: http://www.du52.com linux下防火墙iptab ...

  6. LD 文件:规则详解

    LD 文件:规则详解 概论 基本概念 脚本格式 简单例子 简单脚本命令 对符号的赋值 SECTIONS命令 MEMORY命令 PHDRS命令 VERSION命令 脚本内的表达式 暗含的连接脚本 1. ...

  7. html中style布局放哪,CSS样式表与格式布局详解

    样式表 CSS(Cascading Style Sheets  层叠样式表),作用是美化HTML网页. 内联样式表: 例: 内联样式表 内嵌样式表:必须写在head标签里 例: p { 样式;} he ...

  8. android PorterDuffXfermode ,PorterDuff.Mode 使用 以及Porter-Duff规则详解

    android PorterDuffXfermode ,PorterDuff.Mode 使用 以及Porter-Duff规则详解 1.下面的Xfermode子类可以改变这种行为: AvoidXferm ...

  9. 从零开始学前端 - 7. CSS盒模型 margin和padding详解

    作者: 她不美却常驻我心 博客地址: https://blog.csdn.net/qq_39506551 微信公众号:老王的前端分享 每篇文章纯属个人经验观点,如有错误疏漏欢迎指正.转载请附带作者信息 ...

  10. dw css定位,css关于position属性的用法详解(绝对定位和相对定位的混淆)

    挺久没用,有点忘了关于position这个属性的用法,导致在练手的时候又犯了跟最开始新手才会犯的错误,那就是absolute和relative的用法. 在此首先看一下官方对这两个属性值的解释: pos ...

最新文章

  1. Unity easyTouch移动代码(参考)
  2. jQuery的ajax使用场景讨论(c#)
  3. wpf treeView,避免横向滚动条自动偏移。 ContentHorizontalOffset
  4. PL/SQL Developer结合oracle精简客户端配置说明
  5. 判断是否获取到手机相机权限
  6. gdal库对ENVI文件的一点支持不好
  7. matlab 安装glpk,mac上安装GLPK
  8. java操作xml一般都用什么_用Java如何处理XML数据
  9. 把C#当作脚本语言来用
  10. 电商时代,谁是手持数据采集巴枪的终结者【转】
  11. 什么是网络基础设施?
  12. windows系统 cmd 下载python包的代理配置
  13. px和毫米之间的转换
  14. R语言笔记-分类变量列联表和独立性检验
  15. 超级电容模组电压不均衡特性分析
  16. Android默认时区、语言设置
  17. 无线短距离通信-蓝牙与wifi(一)
  18. 【苹果推iMessage】软件安装通过ApplseScript节制iMessage客户端
  19. 相比DCMM,DMBOK为什么没有数据标准?
  20. DELL EMC T150 服务器在h755上快速 安装 win2016 server

热门文章

  1. 利用Jupyter Notebook进行科学计算和数据分析
  2. 大话卫星导航中的信号处理系列文章——目录
  3. jQWidgets 14.0 Crack
  4. 计算机重做系统有什么好处,电脑卡重装系统有用吗|电脑太卡可以重装系统解决吗...
  5. 编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,现有百钱欲买百鸡,共有多少种买法?
  6. 记一次瞬时网络挂起和XMLHttpRequest: 网络错误 0x2eff
  7. 关于去除“请选择”问题
  8. 请选择要安装的mac os 磁盘
  9. 【XJTUSE计算机图形学】第三章 几何造型技术(3)——B样条曲线与曲面
  10. python中的cols_openpyxl读取列数据或指定行列之iter_cols方法