美文网首页
CSS float,浮动与清除浮动

CSS float,浮动与清除浮动

作者: tazbingor | 来源:发表于2017-03-28 17:22 被阅读0次

什么是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...

相关文章

  • Test10

    引用文章: 那些年我们一起清除过的浮动 CSS浮动float详解 Clear Float CSS float浮动的...

  • 一篇文章带你了解CSS clear both清除浮动

    一、前言 CSS clear both清除产生浮动 ,使用了css float浮动会产生css浮动,这个时候就需要...

  • CSS的浮动属性

    CSS浮动和清除浮动 1.浮动float div配合float浮动来做页面的布局,浮动最常用的地方就是用来做布局。...

  • CSS float,浮动与清除浮动

    什么是float? CSS的 float 属性可以使一个元素脱离正常的文档流,然后被安放到它所在容器的的左端或者右...

  • CSS清除浮动_清除float浮动

  • css清除浮动的三种方法

    摘要:css清除浮动float的三种方法总结,为什么要清除浮动?浮动会有哪些影响? 一.先看现象(display:...

  • 浮动和清除(闭合)浮动

    CSS之float and clear float 浮动和清除(闭合)浮动 目录 1.背景介绍 2.知识剖析 3....

  • HTML第二课

    CSS控制div样式 1.浮动布局:float 实现两个布局并行显示 2.清除浮动布局 清除本块布局被覆盖的float

  • css清除浮动float

    一、浮动产生原因 一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性, 导致父级对象盒子不能被...

  • 1-浮动

    css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响? http://blog.csdn.net...

网友评论

      本文标题:CSS float,浮动与清除浮动

      本文链接:https://www.haomeiwen.com/subject/grefottx.html