几种常用的清除浮动方法

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

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red;}
   .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   
   /*清除浮动代码*/
   .clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}
   .clearfloat{zoom:1}
   </style> 
<div class="div1 clearfloat"> 
<div class="left">Left</div> 
<div class="right">Right</div> 
</div>
<div class="div2">
   div2
   </div>
  • 原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
  • 优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)
  • 缺点:代码多,不少初学者不理解原理,要两句代码结合使用,才能让主流浏览器都支持
  • 建议:推荐使用,建议定义公共类,以减少CSS代码
  • 评分:★★★★☆

2.在结尾处添加空div标签clear:both

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red}
   .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   
   /*清除浮动代码*/
   .clearfloat{clear:both}
   </style> 
<div class="div1"> 
<div class="left">Left</div> 
<div class="right">Right</div>
<div class="clearfloat"></div>
</div>
<div class="div2">
   div2
   </div>
  • 原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度
  • 优点:简单,代码少,浏览器支持好,不容易出现怪问题
  • 缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不爽
  • 建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法
  • 评分:★★★☆☆

3.父级div定义height

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red;/*解决代码*/height:200px;}
   .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   </style> 
<div class="div1"> 
<div class="left">Left</div> 
<div class="right">Right</div> 
</div>
<div class="div2">
   div2
   </div>
  • 原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题
  • 优点:简单,代码少,容易掌握
  • 缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题
  • 建议:不推荐使用,只建议高度固定的布局时使用
  • 评分:★★☆☆☆

4.父级div定义overflow:hidden

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:hidden}
   .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   </style> 
<div class="div1"> 
<div class="left">Left</div> 
<div class="right">Right</div>
</div>
<div class="div2">
   div2
   </div>
  • 原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度
  • 优点:简单,代码少,浏览器支持好
  • 缺点:不能和position配合使用,因为超出的尺寸的会被隐藏
  • 建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用
  • 评分:★★★☆☆

5.父级div定义overflow:auto

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:auto}
   .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   </style> 
<div class="div1"> 
<div class="left">Left</div> 
<div class="right">Right</div>
</div>
<div class="div2">
   div2
   </div>
  • 原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度
  • 优点:简单,代码少,浏览器支持好
  • 缺点:内部宽高超过父级div时,会出现滚动条。
  • 建议:不推荐使用,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧。
  • 评分:★★☆☆☆

6.父级div也一起浮动

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;margin-bottom:10px;float:left}
   .div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解决代码*/clear:both}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   </style> 
<div class="div1"> 
<div class="left">Left</div> 
<div class="right">Right</div>
</div>
<div class="div2">
   div2
   </div>
  • 原理:所有代码一起浮动,就变成了一个整体
  • 优点:没有优点
  • 缺点:会产生新的浮动问题。
  • 建议:不推荐使用,只作了解。
  • 评分:★☆☆☆☆

7.父级div定义display:table

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;display:table;margin-bottom:10px;}
   .div2{background:#800080;border:1px solid red;height:100px;width:98%;}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   </style> 
<div class="div1"> 
<div class="left">Left</div> 
<div class="right">Right</div>
</div>
<div class="div2">
   div2
   </div>
  • 原理:将div属性变成表格
  • 优点:没有优点
  • 缺点:会产生新的未知问题
  • 建议:不推荐使用,只作了解
  • 评分:★☆☆☆☆

8、结尾处加br标签clear:both

<style type="text/css"> 
   .div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}
   .div2{background:#800080;border:1px solid red;height:100px}
   
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   
   .clearfloat{clear:both}
   </style> 
<div class="div1"> 
<div class="left">Left</div> 
<div class="right">Right</div>
<br class="clearfloat" />
</div>
<div class="div2">
   div2
   </div>
  • 原理:父级div定义zoom:1来解决IE浮动问题,结尾处加br标签clear:both
  • 建议:不推荐使用,只作了解
  • 评分:★☆☆☆☆

 

<think> 首先,用户的问题是:“我想查找清除浮动几种方法 请问清除浮动方法有哪些”。我需要根据提供的引用回答这个问题。 引用的内容是关于CSS清除浮动的各种方法: - 引用[1]提到使用clear属性:clear:left | right | both | none | inherit。 - 引用[2]提供了一个清除浮动常用方法:使用.clearfix伪元素。 - 引用[3]解释了为什么要清除浮动:解决父元素高度塌陷的问题,并提到浮动特性。 - 引用[4]描述了额外标签法:添加一个空白标签并设置clear:both。 - 引用[5]展示了方法一:给父元素添加高度(不推荐)。 我需要总结清除浮动几种方法,并确保回答结构清晰、真实可靠。回答中要使用中文,并自然地添加引用标识。 参考系统级指令: - 行内数学表达式用$...$(但这里可能不涉及数学表达式)。 - 独立公式用$$...$$(同样可能不适用)。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识,例如[^1]。 回答结构: 1. 解释为什么需要清除浮动:简要介绍浮动引起的问题(如父元素高度塌陷)。 2. 列出几种清除浮动方法:基于引用,总结常见的方法。 3. 提供示例代码:如果需要,使用代码块展示方法。 4. 生成相关问题:在最后添加相关问题。 从引用中提取方法: - 方法1:使用clear属性(引用[1])。 - 方法2:使用.clearfix方法(引用[2])。 - 方法3:额外标签法(引用[4])。 - 方法4:给父元素添加高度(引用[5],但被标记为不推荐)。 - 引用[3]提到浮动特性,但没有新方法。 常见清除浮动方法包括: 1. 额外标签法(在浮动元素后添加空标签并设置clear:both)。 2. 父元素添加overflow属性(如overflow:auto或overflow:hidden)。 3. 使用伪元素清除浮动(如.clearfix)。 4. 使用clear属性直接应用。 5. 父元素添加高度(不推荐)。 虽然引用中没有提到overflow方法,但它是常见方法。我应该基于引用回答,避免引入外部知识。引用中没有提到overflow方法,所以我只使用引用中提到的方法。 总结方法: - 方法1:使用clear属性(引用[1])。 - 方法2:.clearfix伪元素方法(引用[2])。 - 方法3:额外标签法(引用[4])。 - 方法4:给父元素添加高度(引用[5])。 在回答中,需要自然地添加引用标识。例如,当描述一个方法时,在末尾添加[^n]。 步骤: 1. 介绍问题:解释为什么需要清除浮动。 2. 列出方法:每个方法简要描述,并添加引用。 3. 提供代码示例:对于关键方法,使用代码块展示。 4. 结尾:总结或提示。 5. 生成相关问题。 相关问题生成: - 基于主题,生成2-3个相关问题,如: 1. 清除浮动的最佳实践是什么? 2. 浮动布局有哪些优缺点? 3. 如何避免使用浮动? 确保回答真实可靠:基于引用内容回答。 </think>### 清除浮动方法总结 在CSS中,浮动(float)常用于实现元素布局,但浮动元素会导致父元素高度塌陷(即父元素无法自动扩展以包含浮动子元素),从而影响页面结构[^3]。清除浮动是为了解决这一问题。以下是几种常用清除浮动方法,基于引用内容总结: 1. **使用`clear`属性** 在浮动元素后添加一个元素(如空`<div>`),并对其应用`clear: both;`,禁止元素两侧出现浮动元素。例如: ```html <div class="parent"> <div class="float-left">浮动元素</div> <div class="clear"></div> <!-- 清除浮动 --> </div> ``` CSS: ```css .clear { clear: both; /* 清除左右浮动 */ } ``` 此方法简单直接,但需添加额外HTML标签,可能影响语义[^1][^4]。 2. **`.clearfix`伪元素法(推荐)** 通过CSS伪元素在父元素末尾添加内容并清除浮动,无需额外HTML标签。兼容性较好,是现代开发中的常用方式: ```css .clearfix::after { display: block; content: ""; height: 0; overflow: hidden; clear: both; /* 关键清除属性 */ } .clearfix { zoom: 1; /* 兼容IE6/7 */ } ``` 应用示例: ```html <div class="parent clearfix"> <div class="float-left">浮动元素</div> </div> ``` 此方法高效且维护性强[^2]。 3. **父元素添加高度(不推荐)** 直接为父元素设置固定高度(如`height: 200px;`),强制包含浮动子元素: ```css .parent { height: 200px; /* 固定高度 */ } ``` 缺点:高度需手动计算,无法自适应内容变化,仅适用于高度固定的场景[^5]。 4. **额外标签法变体** 在浮动元素后插入一个空白标签(如`<div class="clear">`),并设置`clear: both;`: ```html <div class="parent"> <div class="float-box">浮动元素</div> <div class="clear">额外标签法</div> <!-- 清除浮动 --> </div> ``` CSS: ```css .clear { clear: both; } ``` 类似方法1,但更强调标签的显式添加[^4]。 ### 方法比较与建议 - **推荐方法**:`.clearfix`伪元素法(方法2)最常用,兼容性好且无需冗余HTML[^2]。 - **避免方法**:父元素固定高度(方法3)会导致布局僵化,不推荐使用[^5]。 - **核心原理**:所有方法都基于`clear`属性,其值可以是`left`(清除浮动)、`right`(清除浮动)或`both`(清除双侧浮动)[^1]。 清除浮动后,父元素能正常包裹子元素,防止布局错乱[^3]。实际开发中,建议优先使用`.clearfix`方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值