首页 > 代码库 > css之浮动

css之浮动

标准文档流

将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流.每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动.

标准流的微观现象

空白折叠现象

技术分享

图片也是一样,图片和表单元素可以看成是文字

技术分享

 高矮不齐,底边对齐

技术分享

自动换行,一行写不下,换行写

 技术分享

块级元素和行内元素

块级元素

霸占一行,不能与其他任何元素并列

可以设置宽、高,如果不设置宽度,那么宽度将默认变为父亲的100%

行内元素

与其他行内元素并排

不能设置宽、高,默认的宽度就是文字的宽度。

标签分类

HTML中,标签可分为:文本级、容器级。

文本级:pspanabiuem

容器级:divh系列、lidtdd

CSS的分类和上面的很像,就p不一样:

所有的文本级标签,都是行内元素,除了pp是个文本级,但是是个块级元素。

所有的容器级标签都是块级元素。

块级元素和行内元素的相互转换

块级元素可以设置为行内元素,行内元素可以设置为块级元素

display: inline;/*块级元素转为行内元素*/

一旦给一个div设置  display: inline; 此时这个div不能设置宽度、高度;那么,这个div将立即变为行内元素。此时它和一个span无异,这个div可以和其他标签并排了。

display: block;/*行内元素转为块级元素*/

一旦给一个span设置 display: block; 则span变为块级元素。此时这个标签,和一个div无异, 此时这个span能够设置宽度、高度;此时这个span必须霸占一行了,别人无法和他并排;如果不设置宽度,将撑满父亲。  

技术分享

display: inline-block;/*元素既能并排,又能设置宽高*/

技术分享

标准文档流无法布局,所以需要元素脱离文档流,css中一共有三种手段,使一个元素脱离标准文档流:

浮动

技术分享

浮动的三个性质

浮动的元素脱离标准文档流

<style type="text/css">   .div1{	  float: left;           width: 100px;	   height: 100px;	   background-color: red;	}   .div2{	   width: 150px;	   height: 150px;	   background-color: green;	}</style><div class="div1">我是div1</div><div class="div2">我是div2</div>

效果如下:div1浮动之后,脱离了标准文档流,div2就是标准文档流中的第一个盒子,所以就渲染在了页面的左上方。  

 技术分享

浮动之后,一个span标签不需要转成块级元素,就能够设置宽度、高度了。所以能够证明一件事儿,就是所有标签已经不区分行内、块了。也就是说,一旦一个元素浮动了,那么将能够并排了,并且能够设置宽高了。无论它原来是个div还是个span。参考浮动的第一个图。

浮动的元素互相贴靠

<style type="text/css">	body{font-size: 60px;}	.div1{float: left;width: 100px;height: 100px;background-color: red;}	.div2{float: left;width: 150px;height: 150px;background-color: green;}	.div3{float: left;width: 200px;height: 200px;background-color: blue;}</style><div class="div1">1</div><div class="div2">2</div><div class="div3">3</div>

技术分享

 

                        

如果有足够空间,那么div3就会靠着div2。如果没有足够的空间,那么div3会靠着div1如果没有足够的空间靠着div1,自己去贴页面左边。 

浮动的元素有“字围”效果

<style type="text/css">  div{float: left;width: 320px;height: 320px;background-color: orange;}</style></head><body>  <div>	<img src="http://www.mamicode.com/1.png" />  </div>  <p>此处省略一万字</p></body>

  

div挡住了p,但是p中的文字不会被挡住,形成“字围”效果。

技术分享

 

本文非原创,纯粹是学习笔记

 

css之浮动