CSS教程】【Web前端基础】css如何清除浮动

2020-11-25 09:48发布

12条回答
魏魏姐
2楼 · 2020-11-25 10:24

css清除浮动可以理解为打破横向排列。 清除浮动的关键字是clear,官方定义如下: 语法: clear : none | left | right | both 取值: none : 默认值。

是开心果呀 - 热爱生活
3楼 · 2020-11-25 11:49

首先,定义三个div:父容器container、子容器box1、box2,这里container没有给定高度。

首先要知道,css中的块级元素是独占一行的,从上往下排列,我们称为标准流,这里的div就是块级元素。先看看没加浮动之前的效果是怎么的。

可以看到,两个box是从上往下排列的,但假如这时候我们要让两个box在父容器里并列一排呢,最简单的方法就是加浮动float,看看加完浮动之后的效果

加了float:left之后,两个box是并列一排了,我们之前给父容器加了边框线,通过边框线可以发现一个问题,就是加了浮动之后,父容器高度塌陷了。为什么会出现这种现象呢?那就是加了浮动之后的元素脱离了标准流,所以父容器出现了高度塌陷,假如父容器里面还有其他元素或者设置了背景,就会导致布局错乱或者背景看不见,这时候,我们就需要清除浮动了


第一种方式:添加新元素,使用clear:both;

这种方式优点就是代码少,容易理解,浏览器几乎都支持,出现的问题比较少,但缺点就是如果页面浮动浮动布局多的话,就要添加很多空div去清除浮动,不便优化。虽然这是常用的清除浮动方式,但不建议使用

第二种方式:父容器使用overflow: auto;

使用这种方法,必须定义width或者zoom,而且不能设置高度height,优点是代码少,缺点是不能使用position,否则超出的元素将会被隐藏

第三种:父容器使用伪类:after跟zoom

这种方式是最推荐的,目前大多数大型网站都是使用这种方式清除浮动,浏览器兼容好,不会出现什么奇怪的问题。

zoom是IE专有属性,可解决ie6,ie7浮动问题,IE8以上和非IE浏览器才支持伪类:after。

缺点就是代码比较多,需要伪类:after跟zoom一起使用才能兼容所有主流浏览器。

但推荐使用,可将改样式定义为公共样式,减少代码量

好了,三种清除css浮动的方式就是这样。其实清除浮动不止这三种,但这三种是比较常用的,最为推荐的就是最后一种。清除浮动时,可根据当前布局选择最为合适的方式,不一定说指定要用哪一种,最适合的就是最好的。

芒果
4楼 · 2020-11-25 17:24

父级div定义 height

结尾处加空div标签 clear:both

父级div定义 伪类:after 和 zoom

父级div定义 overflow:hidden
美少女
5楼 · 2020-11-25 17:35

           (1)父级div定义height。

         (2)结尾处加空div标签clear:both。

         (3)父级div定义伪类:after和zoom。

         (4)父级div定义overflow:hidden。

         (5)父级div定义overflow:auto。

         (6)父级div也浮动,需要定义宽度。

         (7)父级div定义display:table。

         (8)结尾处加br标签clear:both。


HUANG
6楼 · 2020-11-25 19:29

- 给浮动标签的父元素加固定的高度。(不够灵活)

- 在浮动标签的最后加一个空的div,标签本身不浮动,且添加样式clear:both

- 给父元素添加overflow属性,overflow的值为visible以外的其他值。

- 给浮动标签的父元素标签添加.clearfix(推荐方法)

    在css样式表中写:

    ```

    .clearfix:after{

        content:"";

        clear:both;

        display:block;

    }

    ```


laiyu01
7楼 · 2020-11-25 19:44

添加新元素,使用clear:both;

这种方式优点就是代码少,容易理解,浏览器几乎都支持,出现的问题比较少,但缺点就是如果页面浮动浮动布局多的话,就要添加很多空div去清除浮动,不便优化。虽然这是常用的清除浮动方式,但不建议使用

第二种方式:父容器使用overflow: auto;

使用这种方法,必须定义width或者zoom,而且不能设置高度height,优点是代码少,缺点是不能使用position,否则超出的元素将会被隐藏


爱梦 - 拿来吧你
8楼 · 2020-11-26 09:53

在浮动的元素上增加一个clear属性就可以

浅浅77
9楼 · 2020-11-26 09:58

首先,定义三个div:父容器container、子容器box1、box2,这里container没有给定高度。

首先要知道,css中的块级元素是独占一行的,从上往下排列,我们称为标准流,这里的div就是块级元素。先看看没加浮动之前的效果是怎么的。

可以看到,两个box是从上往下排列的,但假如这时候我们要让两个box在父容器里并列一排呢,最简单的方法就是加浮动float,看看加完浮动之后的效果

加了float:left之后,两个box是并列一排了,我们之前给父容器加了边框线,通过边框线可以发现一个问题,就是加了浮动之后,父容器高度塌陷了。为什么会出现这种现象呢?那就是加了浮动之后的元素脱离了标准流,所以父容器出现了高度塌陷,假如父容器里面还有其他元素或者设置了背景,就会导致布局错乱或者背景看不见,这时候,我们就需要清除浮动了

第一种方式:添加新元素,使用clear:both;

这种方式优点就是代码少,容易理解,浏览器几乎都支持,出现的问题比较少,但缺点就是如果页面浮动浮动布局多的话,就要添加很多空div去清除浮动,不便优化。虽然这是常用的清除浮动方式,但不建议使用

第二种方式:父容器使用overflow: auto;

使用这种方法,必须定义width或者zoom,而且不能设置高度height,优点是代码少,缺点是不能使用position,否则超出的元素将会被隐藏

第三种:父容器使用伪类:after跟zoom

这种方式是最推荐的,目前大多数大型网站都是使用这种方式清除浮动,浏览器兼容好,不会出现什么奇怪的问题。

zoom是IE专有属性,可解决ie6,ie7浮动问题,IE8以上和非IE浏览器才支持伪类:after。

缺点就是代码比较多,需要伪类:after跟zoom一起使用才能兼容所有主流浏览器。

但推荐使用,可将改样式定义为公共样式,减少代码量

其实清除浮动不止这三种,但这三种是比较常用的,最为推荐的就是最后一种。清除浮动时,可根据当前布局选择最为合适的方式,不一定说指定要用哪一种,最适合的就是最好的。

相关问题推荐

  • 回答 11

    一、position 的四个值:static、relative、absolute、fixed。绝对定位:absolute 和 fixed 统称为绝对定位相对定位:relative默认值:static二、relative定位与absolute定位的区别实例:HTML代码:css代码:初始效果:1、relative:相对于原来位置移动,元素...

  • 回答 14

    1.static:正常文档定位,此时top,bottom,left和z-index属性无效,块级元素从上往下纵向排布,行级元素从左往右排列2.relative: 相对定位,此时的相对是相对于正常文档流的位置3.absolute:相对于最近的非static定位祖先元素的偏移,来确定元素位置,比如一个绝...

  • 回答 8

    设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留。相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素相对于它的起点进...

  • 回答 15

    浮动和定位都可以使元素脱离标准文档流,提升层级,  浮动脱离文档流,提高半个层级,不能完全覆盖下面元素(不能覆盖图片文字)定位脱离标准文档流,提升一个层级,可以完全覆盖下面元素及其内容...

  • 回答 7

    绝对定位就是你的位置已经不属于你了,你只能漂浮在半空中。相对定位就是你的位置你还占用的,人还在飘着有意思的是这些都是相对父辈元素有position为相对或者绝对属性来定位的,都找不到的话就以body窗口来定位。...

  • 回答 17

    定位:1、相对定位 position:relative; 兼容2、绝对定位 absolut 兼容3、固zhuan定定位 fixed ie6不兼容

  • 回答 5

    css浮动属性通俗的来说就是让一个个原本坚守自己位置的元素让它们在网页中能紧挨在一起,举个例子来说吧,就比如有两个div盒子在网页中显示,一个盒子里展示的是图片,另一个盒子中展示的是文字,他们虽说自己占有的位置不大,可是他们却各占一行来显示,这可...

  • 回答 7

    引言:这篇文章是我对BFC的理解及总结,带你揭开BFC的面纱。你将会知道BFC是什么,形成BFC的条件,BFC的相关特性,以及他的实际应用。一、何为BFC       BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的...

  • 回答 8

    同时用JS就可以随意移动DIV标签的位置 {maxz_play} [removed]var obj=document.getElementById('idDiv');obj.style.left='10px';obj.style.top='10px';[removed]

  • 回答 9

    css浮动属性通俗的来说就是让一个个原本坚守自己位置的元素让它们在网页中能紧挨在一起,举个例子来说吧,就比如有两个div盒子在网页中显示,一个盒子里展示的是图片,另一个盒子中展示的是文字,他们虽说自己占有的位置不大,可是他们却各占一行来显示,这可...

  • 回答 12

    BFC 是 Block Formatting Context(块级格式化上下文)的缩写,它是为了解决如下问题:浮动定位外边距合并清除浮动自适应多栏布局

  • 回答 9

    一、何为BFC       BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。二、形成BFC的条件      1、浮动元素,float 除 none 以外的值;       2、定位元素,p...

  • 回答 11

    float属性是CSS中常用的一个属性,在实际工作中使用的非常多,如果使用不当就会出现意料之外的效果。CSS世界中的float属性是一个年代非常久远的属性,设置了float属性的元素会根据设置的属性值向左或者向右浮动,直到它的外边缘碰到包含框或另一个浮动框的边...

  • 回答 11

    如果不定义浮动的话,各个div的内容在页面上是由上向下排列的。而如果某个div定义了float: left,那么这个div就会出现在上层div下最靠左的位置,而与它同一等级,但列在它后面的div就会显示在他的右侧了。同样,如果定义了float:right,那么这个div就会出现在...

  • 回答 6

    1、 元素类型的转换(display属性)Display属性属性值:BlockInlineNone大部分块状元素默认的display的值为block,其中li默认的值 list-item(列表元素)大部分内联元素默认的display值为inline,其中input默认的值为:inline-block;(行内块元素);内联元素...

没有解决我的问题,去提问