浮动float和清除clear
一、浮动(float)
float简介
- 取值:left,right,none,inherit,默认none(不浮动)
- 可应用与所有元素
- 没有继承性
- 不在正常流中,但会影响布局。因为一个元素浮动时,其他内容会“环绕”该元素
- 与之前提到的合并垂直外边距不同,浮动元素周围的外边距不会合并
- 浮动非替换元素,必须为其声明width
两个概念
- 包含块:浮动元素的包含块是其最近的块级祖先元素
- 块级框:浮动元素会生成一个块级框,而不论其本身是什么。它会像块级元素一样摆放和表现(就如同div一样)
9条浮动规则
- 浮动元素的左(右)外边界不能超过其包含块的左(右)内边界。
- 浮动元素不会彼此覆盖。(定位则很容易导致元素相互覆盖)
例:一个元素向左浮动,而另一个浮动元素已经在那个位置,后放置的元素将挨着前一个浮动元素的右外边界放置。
例:如果上例中的浮动元素的顶端在所有之前浮动元素的底端下面,它可以一直浮动到父元素的左内边界 - 浮动元素不会相互重叠。
例:一个body,宽500px,它只有两个300px宽的图像。第一个图像浮动到左边,第二个图像浮动到右边。这是,第二个图像向下浮动,直到其顶端在第一个图像的底端之下。这样就避免了两个图像有100px重叠。 - 一个浮动元素的顶端不能比其父元素的内顶端更高(这可以防止浮动元素一直浮动到文档的顶端);如果一个浮动元素在两个合并外边距之间,放置这个浮动元素时就好像在两个元素之间有一个块级父元素。
例:有三个段落,中间的段落浮动。则浮动段落就会像有一个块级父元素一样(如div)浮动。这能防止浮动段落一直向上移动到三个段落共同的父级元素的顶端。 - 浮动元素的顶端不能比之前任何浮动元素或块级元素的顶端更高。
- 如果源文档中一个浮动元素之前出现另一个元素,浮动元素的顶端不能比包含该元素所生成框的任何行框的顶端更高。这进一步限制元素向上浮动,不允许元素浮动到包含该浮动元素之前内容的行的顶端之上,使浮动元素在其上下文内。
例:一个段落的正中间有一个浮动图像,这个图像顶端最高只能放在该图像所在的行框的顶端。 - 浮动元素不能超出其包含元素的边界(除非它太宽,本身都无法放下),如果没有足够空间,浮动元素会被挤到新的一行。
例:多个浮动元素出现在一个水平行上,远远超出其包含块的边界。实际上,如果浮动元素出现在另一个浮动元素的旁边,因此导致超出包含块,这时这个浮动元素会向下浮动到之前浮动元素下面的某一点,从下一行开始。 - 满足前7条的前提下,浮动元素尽可能高的放置。
- 满足前8条的前提下,左(右)浮动元素尽可能左(右)。
补充
前面介绍的规则有一些有意思的后果,这些结果源于两方面:一方面是规则中指出了一些要求,另一方面是规则中有些方面没有谈到。
- 浮动元素比其父元素高时的结果(常见)
例:一个小文档,只包含几个段落和h3元素,其中第一个段落包含一个浮动图像(有5px外边距)。这时图像如果偏大,会超出其父元素底端。这是因为浮动规则只规定了浮动元素和其父元素的左、右和上边界,而没有涉及下边界的规定。
例:CSS2.1规定“浮动元素会延伸,从而包含其所有后代浮动元素”。所以,上例中可以将父元素置为浮动元素,就可以把浮动图像包含在父元素内。
例:还是这个例子,考虑背景及其文档中之前出现的浮动元素的关系。由于浮动元素同时处于流内和流外,元素背景会滑到浮动图像的下面,但具体内容并不从其内容区左边界开始,避免被覆盖。 - 负外边距可能导致浮动元素移到其父元素的外面。
这看上去与前面的9条规则矛盾,但其实并不矛盾。通过设置负外边距,元素可能看上去比其父元素更宽,同样的道理,浮动元素也可能超出其父元素。
例:假设div没有内边距、边框和外边距,其上内边界在100px处,div内部浮动图片的左外边距和上外边距都是-15px。为了得出浮动元素的上内边界位置,浏览器计算如下:100px+外边距(-15px)+内边距0=85px。因此,浮动图像的上内边界在85px处,比其父元素的上内边界高。但数学计算并没有违反规范。
问题:是用负外边距时,如果浮动元素超出其父元素,文档如何显示?答案是不确定的,所以尽量避免使用。 - 浮动元素比其父元素更宽时,浮动元素也会超出其父元素的左右内边界。
- 浮动元素与正常流中的内容发生重叠会怎样?
例:如果一个浮动元素在内容流过的边上有负外边距,就会发生重叠。
CSS2.1中有规定:
(1)行内框与一个浮动元素重叠时,其边框、背景和内容都在该浮动元素“之上”显示;
(2)块级框与一个浮动元素重叠时,其边框和背景在该浮动元素“之下”显示,而内容在浮动元素“之上”显示。
注意:这里的“重叠”与源文档中的顺序无关。元素在浮动元素之前还是之后出现并不重要。不论怎么的顺序,都会有同样的行为。
二、清除clear
clear简介
- 取值:left,right,both,none,inherit,默认none
- 只应用于块级元素
- 无继承性
例:h1{clear:none;)h3两边可以出现浮动元素
例:h1{clear:both;)h3两边不出现浮动元素
例:h1{clear:left;)h3左边不出现浮动元素
清除区域
CSS2.1引入清除区域,它是在元素上外边距之上增加的额为间隔,不允许任何浮动元素进入这个范围内。所以元素设置clear时,它的外边距不会改变,之所以会向下移动是这个清除区域造成的。
例:如果我把一个40px浮动图像的下一个元素h3(上外边距15px)设置了clear为both的属性,那么清除区就有25px,结果是h3的上边框边界推到刚好越过浮动元素的下边界。如果h3上外边距为40px,则clear的值就不重要了。
注意:一般,无法知道一个元素周围多大范围内不允许有浮动元素。要确保清除元素(设置clear属性的元素)的顶端与浮动元素的底端之间有一定空间,可以为浮动元素本身设置一个下外边距。
浮动float和清除clear的更多相关文章
- css浮动(float)及清除浮动的几种实用方法
CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...
- CSS定位机制:浮动 float及清除浮动的常用方法
CSS的定位机制 1.普通流(标准流) 默认状态,元素自动从左往右,从上往下排列 块元素的特征: 独占一行 可以设置宽高 如果不设置宽度,宽度默认为容器的100% 常见的块元素:div p h1-h6 ...
- css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?一起来$('.float')
一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class="outer"> <div class=&quo ...
- CSS浮动(float,clear)通俗讲解
首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...
- 经验分享:CSS浮动(float,clear)通俗讲解
很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...
- 经验分享:CSS浮动(float,clear)通俗讲解(转载)
很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...
- 经验分享:CSS浮动(float,clear)通俗讲解 太棒了,清晰明了
很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...
- 彻底理解浮动float CSS浮动详解 清除浮动的方法
我们把网页的常用的布局格式分为以下三种: 1.标准流. 所谓的标准流就是,行内元素自己单独一行,而块级元素是上下显示的. 以前我们学习的都是标准流. 注意:标准流使我们网页布局中最稳定的一种结构 ...
- css清除浮动float的三种方法总结
原文地址: http://my.oschina.net/leipeng/blog/221125 张大神的解析: http://www.zhangxinxu.com/wordpress/2010/01/ ...
随机推荐
- [转帖]Linux 下实践 VxLAN:虚拟机和 Docker 场景
Linux 下实践 VxLAN:虚拟机和 Docker 场景 https://www.cnblogs.com/bakari/p/11264520.html 实践了下 没问题 作者写的很perfect ...
- 啃掉Hadoop系列笔记(02)-Hadoop运行环境搭建
一.新增一个普通用户bigdata
- kafka安装使用配置1.2
进入cd /usr/local/flume/conf/ vi kafka.conf 配置 agent.sources=s1 agent.channels=c1 agent.sinks=k1 agent ...
- layui-dTree显示不出来且前台报错
layui-dTree显示不出来且前台报错 Cannot read property 'parents' of null 检查过后发现layer并没有使用到,找不到任何办法解决. 最后删除了respo ...
- ES简介及特点
1.ES是什么? ES是一个高度可伸缩的开源的全文检索和分析引擎,它允许你以近实时的方式快速存储.搜索.分析大量数据,ES是基于Lucence开发,隐藏其复杂性,提供了简单易用的restful api ...
- 前缀和&二维前缀和
我们知道,数组上的前缀和S[i]=S[i-1]+a[i] 那么,怎样求二维前缀和呢? 二维前缀和: 绿色点的前缀和就是黄色.红色.灰色和绿色的点权和 怎样计算? s[i][j]=s[i-1][j]+s ...
- 虚拟机(Vmware)安装ubuntu18.04和配置调整(二)
二.配置修改 1.修改语言环境(settings->Region & Language) 选中中文简体(Chinese(simplified)),点击Apply 中文简体语言安装完成后, ...
- 同一台服务器请求easyswoole的一个websocket接口报错
求助大神啊!file_get_contents报这个错:failed to open stream: Connection timed out换成curl又报这个错:couldn't connect ...
- Python 常用单词
Python常用单词(英文好的人自动忽略) 单词 发音 翻译 作用 print 普润特 打印 显示我们想要查看的内容 input 因普特 输入 获取用户输入的一些内容 int 印特 整型 将有引号的数 ...
- winform messageBox.Show()
MessageBox.Show(" 5 个参数...... ", " 亮仔提示", MessageBoxButtons.OKCancel, ...