CSS float,浮动与清除浮动

什么是float?

CSS的 float 属性可以使一个元素脱离正常的文档流,然后被安放到它所在容器的的左端或者右端,并且其他的文本和行内元素环绕它。
而当初为了实现图片被文字环绕的效果,于是才有了float,与此同时也关乎HTML的默认文档流布局,也就是从上至下,从左到右,块级元素换行等等

属性

left
表明元素必须浮动在其所在的块容器左侧的关键字。
right
表明元素必须浮动在其所在的块容器右侧的关键字。
none
表明元素不进行浮动的关键字。(默认)
inline-start
关键字,表明元素必须浮动在其所在块容器的开始一侧,在ltr脚本中是左侧,在rtl脚本中是右侧。
inline-end
关键字,表明元素必须浮动在其所在块容器的结束一侧,在ltr脚本中是右侧,在rtl脚本中是左侧。

float:left

创建两个div与两个input的标签,为他们设置宽高,并且同时设置float:left,效果如下
1.一般情况下
全部紧贴在一起了(一行),并且右侧留有空余


2.缩小浏览器的情况下
input会根据自身情况选择换行

float:right

依葫芦画瓢,把这四个标签全部修改为float:right
1.一般情况下
左侧留有空余


2.缩小浏览器的情况下
左侧留有空余,并同时换行

以上关于float:left和float:right的四个小例子其实可以得知浮动的核心就是,浮动的元素会脱离文档流从而向左或向右浮动,直至碰到另一个浮动元素或者父元素为止.

关于浮动的特征##

在刚才介绍float属性的时候,为了方便测试,就将<body>加上了边框效果,从效果上来说,其实已经的得出了浮动的特征.
首先从边框的效果可以得知,父元素的高度是由子元素决定的,因为他们现在仍属于文档流


再举个例子,将所有的元素再次添加 float: right

再将body的高度设置为10px,同时拉伸当前浏览器的宽度,这样效果更明显

从图上效果进行对比得知,添加了浮动会使其脱离文档流,使其对整个页面的布局造成巨大的影响.浮动元素脱了文档流,从而也不会占据文档流的位置,也不可能再将body撑开,因此body失去了高度,被坍缩.效果就像PS里的画布一样被分了层.以此同时,在浮动元素都设置了相同方向的时候(向左/向右),会以碰到另一个相同方向的浮动元素为止.这是浮动元素内联排列的特征.我们在回到图中还能看到一个有趣的现象,input与div,行内元素与块元素处在一行,这从侧面也反映了浮动另一特征:浮动元素会生成块元素,无论它原来是什么元素(块元素,行元素)

浮动特征总结:
1.浮动元素会脱离文档流
2.浮动会导致父元素高度坍塌
3.浮动可内联排列
4.行内元素浮动后,将变成块元素

清除浮动 clear

**clear
** CSS 属性指定一个元素是否可以在它之前的浮动元素旁边,或者必须向下移动(清除浮动) 在它的下面。clear 属性适用于浮动和非浮动元素。
属性:
1.left : 不允许左边有浮动对象
2.right : 不允许右边有浮动对象
3.both : 不允许有浮动对象
4.none : 默认值。允许两边都可以有浮动对象
5.inline 继承

粗暴清除浮动

这是最简单的一种清除浮动的方式,在浮动元素后面加一个任何标签并样式设置clear:both即可


向这种clear:both的方式和clear:left 与clear:right 都属于那种简单粗暴来实现清除浮动的效果.虽简单,但是不利于维护.
1.clear:both是一个空的div,页面复杂,则需要添加大量的,无语意的html元素,不易维护
2.给浮动的元素的容器添加浮动(为容器添加clear:left 和clear:right )破坏了原有的布局,使整体浮动,需酌情处理
这两种不推荐使用!!!

CSS的:after伪元素清除浮动

仍然是依照上面的例子,为其添加了after伪元素

.clearfix:after {
    display: table;
    content: " ";
    clear: both;
}

其实还可以这么理解
清除浮动的作用只是仅仅只是清除浮动,不会改变原有浮动设置的方向,浮动的元素依然浮动.只是这个清除浮动的元素把父容器撑起来了

参考:
1.<a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/clear ">MDN clear</a>
2.<a href="https://developer.mozilla.org/zh-CN/docs/CSS/float">MDN float</a>

其实还有更好的清除浮动方案
to be continued...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,629评论 1 92
  • 一、浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 特征:1、浮动模型是一种可视化格式...
    青鸣阅读 850评论 0 0
  • 浮动,从诞生那天起,它就是个特别的属性——既为网页布局带来新的方法,却又随之产生一系列的问题。当然,随着时间的推移...
    郝特么冷阅读 784评论 0 6
  • 一、文档流的概念指什么?有哪种方式可以让元素脱离文档流? 1、文档流指的是元素在排列布局中所占用的位置,具体的说是...
    鸿鹄飞天阅读 697评论 0 0
  • 无论你是产品新人或是正在向产品岗位转型的小伙伴,都希望我的故事,能与你产生共鸣。我是谭宇恒,新晋产品人,想与你分享...
    谭宇恒阅读 799评论 5 5