清除浮动的方式有哪些?

首先我们要知道为什么要清除浮动

在html中,默认使用的就是流式布局;

  • 流式布局:在一个html中每个元素都有每个元素的位置,行内元素从左往右排列布局,块元素从上往下排列布局;
  • 文档流:在一个页面中,在文档流中的元素都有自己的位置,如果某个元素脱离了文档流,那么他将不参与流式布局,不在拥有自己的位置;
  • 块元素如果脱离了文档流,那么他将不参照父元素的宽度定宽,所以脱离文档流的块元素,如果没有内容,则必须设置宽高,如果有内容他就取决于他的内容。

使用浮动就会使元素脱离文档流*

  • ,父级div定义 height
    原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。
    优点:简单、代码少、容易掌握
    缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题
    建议:不推荐使用,只建议高度固定的布局时使用

  • ,结尾处加空div标签 clear:both
    原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度
    优点:简单、代码少、浏览器支持好、不容易出现怪问题
    缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不好
    建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

  • ,父级div定义 伪类:after 和 zoom
    原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
    优点:浏览器支持好、不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)
    缺点:代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。
    建议:推荐使用,建议定义公共类,以减少CSS代码。
    /清除浮动代码/

 .clearfix:after{display:block;clear:both;content:"";visibility:hidden;height:0} 
    .clearfix{zoom:1} 
  • ,父级div定义 overflow:hidden
    原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度
    优点:简单、代码少、浏览器支持好
    缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。
    建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用。

  • ,父级div定义 overflow:auto
    原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度
    优点:简单、代码少、浏览器支持好
    缺点:内部宽高超过父级div时,会出现滚动条。
    建议:不推荐使用,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧。

  • ,父级div 也一起浮动
    原理:所有代码一起浮动,就变成了一个整体
    优点:没有优点
    缺点:会产生新的浮动问题。
    建议:不推荐使用,只作了解。

  • ,父级div定义 display:table
    原理:将div属性变成表格
    优点:没有优点
    缺点:会产生新的未知问题。
    建议:不推荐使用,只作了解。

  • ,结尾处加 br标签 clear:both
    原理:父级div定义zoom:1来解决IE浮动问题,结尾处加 br标签 clear:both
    建议:不推荐使用,只作了解。

### 回答1: 浮动是由CSS中的布局元素之一的float属性引起的。当float属性设置为left或right时,元素会像漂浮在文本流中一样移动,并允许其他元素在其周围进行布局。但是,由于浮动元素的位置不在文本流中,它们可能与其他元素重叠,因此需要使用清除浮动技术来解决这个问题,例如使用clear属性或overflow属性来清除浮动。 ### 回答2: 浮动CSS 中一种特殊的布局方式,当给一个元素设置了浮动属性(float),该元素会脱离文档流并向左或右浮动到其父元素或祖先元素的边缘。浮动的主要作用是实现多列布局、图片环绕文字等效果。 浮动出现的原因是为了解决网页布局多列的问题,比如在同一行显示多张图片或者文章、图片并排。以前的网页布局方式通常是使用表格或者定位来实现,但这样做会导致 HTML 结构的臃肿,同时也不够灵活。因此,浮动的出现给网页布局带来了新的思路。 需要清除浮动的情况有以下几种: 1. 父元素没有设置高度,子元素设置了浮动属性,但是子元素高度超出了父元素,导致父元素高度为 0,这时就需要清除浮动; 2. 父元素没有设置高度,而且只是简单的使用 margin-top 的方式给下一个元素空出空间,这种情况需要清除浮动; 3. 当一个浮动元素后面有多个没有浮动属性的块级元素时,由于浮动元素的高度已经脱离文档流,会导致后面的块级元素直接跟在浮动元素后面,造成布局混乱,这时也需要清除浮动清除浮动方式有以下几种: 1. 使用 clear 属性。在浮动元素的下一个块级元素中添加 clear 属性,该属性有两个取值:left、right、both,分别表示要清除浮动元素的左浮动、右浮动或两者都清除。例如:设置 clear: both; 表示清除浮动元素的左右浮动。 2. 使用伪元素。在浮动元素的父元素中设置 ::after 伪元素,并给该元素添加 clear 属性。例如:设置 .clearfix::after { content: ""; display: block; clear: both; },其中 .clearfix 是父元素的类名。 3. 父元素使用 overflow 属性。在浮动元素的父元素中设置 overflow: hidden; 或 overflow: auto; 即可清除浮动。 总之,清除浮动是为了保证页面布局的正确性和美观性,需要根据具体情况进行选择。 ### 回答3: 浮动出现的原因是因为在HTML和CSS中,元素是按照从左到右、从上到下的顺序排列的,但是当元素的宽度超过其父元素的宽度时,父元素就无法容纳子元素了。这时,如果使用浮动,子元素就可以脱离文档流而不被父元素挤出页面,变成浮动状态。浮动有左浮动、右浮动和双侧浮动等。 需要清除浮动的情况有以下几种: 1. 父元素没有设置高度或者宽度,子元素设置了浮动,那么父元素将没有高度及宽度,影响布局。 2. 相邻元素的排列会被浮动元素影响,导致布局错误。 3. 当浮动元素的高度大于相邻元素 高度时,相邻元素会被覆盖。 清除浮动方式有以下几种: 1. 父元素设置overflow为hidden或者auto,这样就可以清除子元素的浮动。 2. 使用clear:both或clear:left或clear:right来清除浮动,可以把之前的浮动清除掉,但是这种方式要用在最后一个浮动元素后面,否则会影响布局。 3. 使用:after伪类来清除浮动,这种方式也要写在浮动元素的后面,类似于clear方式。 综上所述,清除浮动是为了避免因为浮动导致页面布局错乱等问题,在设计页面时应当注意尤其是在涉及到浮动的区域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值