通俗易懂的CSS的浮动float详解

目录:

1. CSS浮动属性float详解
2. CSS常见页面布局
3. CSS浮动清除和清除浮动的几种方法
4. 高度塌陷的产生条件和解决方法

## CSS浮动属性float详解

*首先,我们需要了解什么是浮动?
浮动是指(浮动的特点):
- 将元素排除在普通流之外,即元素将脱离标准文档流。
- 元素将不在页面占用空间。
- 将浮动元素放置在包含框的左边或者右边。
- 浮动的框可以向左或者向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
- 经常使用它来实现特殊的定位效果。

float的属性值有哪些呢?
none 默认值 元素不浮动,并且会显示在其在文本中出现的位置

Left 左浮动

Right 右有浮动

Inherit 规定应该从父元素继承float属性的值

注释:浏览器的支持性:所有主流浏览器都支持float属性

## CSS常见页面布局

我们应该知道div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流。如下图:

可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为div元素是独占一行的。
所以就出现了一个问题,无论多简单或多复杂的页面,只要想让多个div元素显示在一行,这时我们就需要用到浮动。
那么假设图中div2设置浮动,那么它不再属于标准流,这时div3自动上移顶替了div2的位置,变成了div1、div3依次排列,成为一个新的流。再比如一个例子,如果我们把div2,div3都设置成左浮动,那么会出现如下图示的情况:

下面我们可以从div3开始分析,div3发现上边的元素div2也是浮动的,所以div3会跟随在div2之后;而div2发现上边的元素div1是标准流中的元素,因此div2的相对垂直位置不变,顶部仍然和div1元素的底部对齐。由于是左浮动,左边靠近页面边缘,所以左边是前,因此div2在最左边。右浮动同样的道理。
因此,我们可以得出一个重要结论:
假如某个div元素box是浮动的,如果box元素上一个元素也是浮动的,那么box元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么box元素会被挤到下一行);如果box元素上一个元素是标准流中的元素,那么box的相对垂直位置不会改变,也就是说box的顶部总是和上一个元素的底部对齐。

## CSS浮动清除和清除浮动的几种方法

经过上边的学习理解,可以看出:元素浮动之前,也就是在标准流中,是竖向排列的,而浮动之后可以理解为横向排列。
什么叫浮动清除呢?简单理解为就是清除浮动就是打破元素横向排列。
我们用clear来清除浮动,
语法:clear:none/left/right/both;
各个值分别代表的意思是 none是默认值,允许两边都可以由浮动对象;left不允许左边有浮动对象;right不允许右边有浮动对象;both不允许有浮动对象。下面举例形容:

此时div1、div2都浮动,根据规则,div2会跟随在div1后边,但我们仍然希望div2能排列在div1下边,就像div1没有浮动,div2左浮动那样。
这时候就要用到清除浮动(clear),但是这时我们可能会遇到一个错误的理解错误的写法:很多人会认为在div1的CSS样式中添加clear:right;,理解为不允许div1的右边有浮动元素,在这里告诉大家,如果有这种想法,那么就错了,**对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。** 什么意思呢?拿图中案例来说:要想让div2下移,就必须在div2的CSS样式中使用浮动。本例中div2的左边有浮动元素div1,因此只要在div2的CSS样式中使用clear:left;来指定div2元素左边不允许出现浮动元素,这样div2就被迫下移一行。

如果页面中如图都是右浮动呢?那么你们能根据左浮动来使div2排在div1下面吗?
同样的道理,我们希望移动的是div2,就必须在div2的CSS样式中调用浮动,因为浮动只能影响调用它的元素。可以看出div2的右边有一个浮动元素div1,那么我们可以在div2的CSS样式中使用clear:right;来指定div2的右边不允许出现浮动元素,这样div2就被迫下移一行,排到div1下边。
以上希望对大家有帮助!

## 高度塌陷的产生条件和解决方法

什么是高度塌陷?(产生高度塌陷的原因)
当父元素未设置高度时,所有子元素浮动后,造成子元素脱离文档流进而无法把父元素撑开,父元素高度为0产生高度塌陷。
例子如下:

<div class="box">
<div class="div1">div1</div>
<div class="div2">div2</div>
</div>
.box{border: 5px solid red;}
.div1{height: 100px; width: 100px; background: green;}
.div2{height: 100px; width: 100px; background: blue;}

当我们让div1和div浮动之后:
.div1{height: 100px; width: 100px; background: green; float: left;}
.div2{height: 100px; width: 100px; background: blue; float: right;}
会产生如下图的现象:

这就属于高度塌陷。
如何解决高度塌陷问题
当然最直接的办法就是给父元素添加一个固定高度。
优点:简单。
缺点:只适合固定页面的布局,无法进行自适应,不推荐使用。

给父元素添加overflow:hidden;zoom:1;(针对IE6的兼容,可以不写)
缺点,会对溢出的内容隐藏裁剪,不显示。

给所有的浮动元素的最后添加一个空的标签 ,并且添加声明clear:both;height:0; overflow:hidden;(添加height:0;和overflow:hidden;是为了避免这个空标签如果是li的话,在IE6和IE7上有默认高度撑着,所以要解决一下。)
缺点就是造成代码的冗余。
<div style="clear: both; overflow: hieedn;"></div>

万能清除法(更适合整站开发)
给塌陷的元素:after{content:“";clear:both;display:block;height:0;overflow:hidden;visibility:hidden;}
:after对于IE8以下有兼容问题,所以给塌陷的元素{zoom:1;}
.box:after{
content: ‘‘;
clear: both;/*清除两侧浮动*/
display: block;/*转成成一个块元素*/
both; overflow: hidden;
visibility: hidden;
}
本分享属于自己的一点拙略见解,希望会对大家有所帮助,最后预祝读者阅读愉快,开心掌握知识,嘻嘻。

原文地址:https://www.cnblogs.com/wangs0520/p/12390685.html

时间: 2024-07-29 12:49:22

通俗易懂的CSS的浮动float详解的相关文章

CSS布局(四) float详解

一.float设计初衷 因为float被设计出来的初衷是用于--文字环绕效果.即,一个图片一段文字,图片float:left之后,文字会环绕图片. <div style="width: 100px;height: 100px"> <img src="image/1.jpg" style="width: 50px;height: 50px;float: left">阿斯利康大家啊胜利大街拉速度来喀什建档立卡结算单 </

css清除浮动float的三种方法总结【转载自https://my.oschina.net/leipeng/blog/221125】

摘要: css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?     一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class="outer">     <div class="div1">1</div>     <div class="div2">2</div>     <div class="div3

CSS的padding用法详解

CSS的padding用法详解:建议:尽可能的手写代码,可以有效的提高学习效率和深度.padding属性在网页中使用非常的频繁,所以这里详细介绍一下此属性的用法.此属性用来定义元素的内边距或者内补白,所谓的内边距就是元素中的内容与元素内侧之间的空白区域.可以单独定义上下左右某一方位的内边距.代码实例:实例一:没有设置父div的内边距的时候: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"

css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?一起来$(&#39;.float&#39;)

一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class="outer">     <div class="div1">1</div>     <div class="div2">2</div>     <div class="div3">3</div> </div> 分析CSS代码样

css清除浮动float的三种方法总结

转载地址:https://my.oschina.net/leipeng/blog/221125 css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?     一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class="outer"> <div class="div1">1</div> <div class="div2">2</

DIV css中cursor属性详解-鼠标移到图片变换鼠标形状 (转)

css中cursor属性详解-鼠标移到图片变换鼠标形状 语法: cursor : auto | all-scroll | col-resize| crosshair | default | hand | move | help | no-drop | not-allowed | pointer | progress | row-resize | text | vertical-text | wait | *-resize | url ( url )  取值: auto  :   默认值.浏览器根

css 浮动问题详解

浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器). 也许很多人都有这样的疑问,浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么? 本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手. 一.清除浮动 还是 闭合浮动 (Enclosing float or Clearing float)? 很多人都已经习惯称之为清除浮动,以前我也一直

CSS背景属性Background详解

本文详解了CSS的背景属性Background,包括CSS3中新增的背景属性.如果你是个CSS初学者,还可以查看之前介绍的CSS浮动属性和CSS透明属性详解. css2 中的背景(background) CSS2 中有5个主要的背景(background)属性,它们是: background-color: 指定填充背景的颜色. background-image: 引用图片作为背景. background-position: 指定元素背景图片的位置. background-repeat: 决定是否

CSS系列(7)CSS类选择器Class详解

这一篇文章,以笔记形式写. 1,  CSS 类选择器详解 http://www.w3school.com.cn/css/css_selector_class.asp 知识点: (1)    使用类选择器的前提是给标签添加上类属性,比如<p class="important"></p> (2)    类选择器的语法为:*.important {color:red;},不过一般省略前面的通配符选择器,写成 .important {color:red;},这样就会给所