浮动及清除浮动方法

浮动 属性描述值CSS

clear

指定不允许元素周围有浮动元素 (用于清除浮动)

left right both(左右) none(默认值,允许浮动) inherit(从父元素继承clear属性)

float

指定一个盒子(元素)是否可以浮动。

left right none inherit(从父元素继承flo属性)

1.给父级div定义伪类:after和zoom

.clearfloat:after{display:block; clear:both; content:""; overflow:hidden; height:0;}
.clearfloat{zoom:1;}

这种是最常用的清除浮动的方法也是最推荐的,直接在浮动的两个元素的父级加一个clearfloat类名,兼容IE6、7、8所带的浮动问题;

2.在浮动尾部添加空div标签clear:both;

.clearfloat{clear:both;}

这种清除浮动的方法不推荐,需要增加好多不必要的代码,要是好多结构都是浮动的话,那你的崩溃,主要是利用css提高的clear:both清除浮动,让父级能够获取到高度,这个也能够兼容IE; 3.父级div定义overflow:hidden

.div {overflow:hidden;}

这种清除浮动的方法只推荐没有使用position或对overflow:hidden理解比较深的朋友使用,必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

4.父级给高度height

这种清除浮动的方法不推荐使用,很不友好,一般代码写的多就知道,一般图片盒子什么的都不给固定的高度,这里定义高度会给后期加内容或者维护带来不便;

5.父级div定义overflow:auto

.div{overflow:auto;}

这种清除浮动的方式也不推荐,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧,一旦内容超过了父级的盒子就会出现滚动条

6.父级随子级一起浮动

这种清除浮动的方式也不推荐,要是这样就更完了,那父级上面的盒子都需要浮动,然后你就看着办吧

7.父级div定义为表格display:table

.div{display:table;}
这种清除浮动的方式也不推荐,这样的话div就变成表格的形式了,要是需要设定哪个子元素在某一个位子就难受了,还会有很多问题,我就不一 一说

8.加br标签






(换行)

这种清除浮动的方式也不推荐,了解就好

css清除浮动float的七种常用方法和兼容性总结

在清除浮动钱我们要了解两个重要的定义:

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

高度塌陷:浮动元素父元素高度自适应(父元素不写高度时,子元素写了浮动后,父元素的高度会发生塌陷)

指定浮动和韦神清除浮动之后我们就可以开始学习如何清除浮动了,这时候我们就需要用到清除浮动的属性clear,

claer:left|right|both|none|inherit:元素的某个方向上不能有浮动元素

clear:both:在左右两侧均不允许浮动元素。

具体清除浮动的方法主要有以下几种:

1、方法:clear清除浮动(添加空div法)

在浮动元素下方添加空div,并给该元素写css样式:{clear:both;height:0;overflow:hidden;}

2、方法:给浮动元素父级设置高度

我们知道了高度塌陷是因为给浮动元素的父级高度自适应导致的,那么我们给它设置适当的高度就可以解决这个问题。

缺点:在浮动元素高度不确定的时候不适用

3、方法:以浮制浮(父级同时浮动)

何谓“以浮制浮”呢?就是让浮动元素的父级也进行浮动

缺点:需要给每个浮动元素父级添加浮动,浮动多了容易出现问题。

4、方法:父级设置成inline-block

缺点:父级的margin左右auto失效,无法使用margin:0 auto居中了。

5、方法:br 清除浮动

<div class="box">
    <div class="top">div>
    
"both" /> div>

br标签自带clear属性,将它设置成both其实和添加空div原理是一样的。

问题:不符合工作中:结果、样式、行为,三者分离的要求。

6、方法:给父级添加overflow:hidden 清除浮动

overflow:hidden;
*zoom:1;

问题:需要配合宽度或者zoom 兼容IE6 IE7;

7、方法:万能清除浮动after伪类(现在主流方法,推荐使用)

选择符:after{
        content:".";
        clear:both;
        display:block;
        height:0;
        overflow:hidden;
        visibility:hidden;
}

同时为了兼容IE6,7同样需要配合zoom使用,例如:

.clear:after{
        content:".";
        clear:both;
        display:block;
        height:0;
        overflow:hidden;
        visibility:hidden;
}
.clear{
        zoom:1;
}

需要注意的东西:

after伪类:元素内部末尾添加内容;
    :after{content:"添加的内容";}IE6,7下不兼容
zoom 缩放
    a、触发IEhaslayout,使元素根据自身内容计算宽高。
    bFF不支持;

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://news.xiuzhanwang.com/post/2172.html

发表评论

评论列表

还没有评论,快来说点什么吧~

友情链接: