你的位置:首页 > 网页设计

[网页设计]关于浮动的知识总结


关于浮动,最主要的就是解决浮动在IE6、7下要做的兼容问题。例如:双边距bug,图片下的空隙问题等等。后面要和定位带来的兼容问题一起总结一下好了~~~
块的特征

  1、默认独占一行

  2、没有宽度时,默认撑满一排(即父元素有多宽它就是多宽)

  3、支持所有css命令

行内元素的特征

  1、同排可以继续跟同类的标签

  2、内容撑开宽度

  3、不支持宽高(就是写上宽高值也并没有什么卵用~)

  4、上下的margin和padding有问题(不支持上下的margin,对padding的上下设置并没有起到实际的作用。不会挤开上下的元素)

  5、代码换行被解析为一个空格

inline-block的特点和问题

1、在一行显示

2、内联元素支持宽高

3、没有宽度时默认内容撑开宽度

4、标签之间的换行间隙被解析为空格(无论是块元素还是内联元素都会被解析)

5、IE6/7不支持块属性标签的inline-block

浮动的意思就是使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。

加上float以后的元素有如下特征:1、块在一排显示;2、内联元素支持宽高;3、无论是块元素还是内联元素没有宽度时默认内容撑开宽度;4、脱离文档流;(所以要想法设法清浮动呀~~)5、提升层级半层

如何清浮动呢?

1.父级加height。但是一般网页height值是依据子元素的height和得来的,所以扩展性不好,一般不采用。
2.给所有的父级都添加浮动。但会导致margin左右自动失效

3.给父级加display:inline-block。问题:margin左右auto失效

4.添加<div ></div>空标签

问题:IE6 最小高度 19px;(解决后IE6下还有2px偏差)在IE6下,高度小于19px的元素高度会被当作19px来处理~ 

5.添加<br>清浮动。但这个方法不符合结构、样式、行为三者分离的要求
6.after伪类 清浮动方法(现在主流方法)

.clear:after{content:‘’;display:block;clear:both;}  必须是block才行

.clear{zoom:1;}

其中:

after伪类: 是在元素内部末尾添加内容;:after{content"添加的内容";} IE6,7下不兼容,但是在IE6、7下,浮动元素父级有宽度就不用清浮动!

zoom:1;是为了触发 IE下 haslayout,使元素根据自身内容计算宽高。但是FF 不支持
7.overflow:hidden 清浮动方法;

overflow有包着浮动元素的特点!但在IE6下不兼容,在IE6下包不住浮动元素,即在IE6下没有包元素的特点

问题:需要配合 宽度 或者 zoom:1 来兼容IE6;(如果该父元素有边框,这里写宽度就会给该父级设置相应的宽度,写zoom:1仅仅达到实现轻浮动的目的,边框会包住整个页面的width)