分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

【转】浅谈 CSS 清除浮动的 6 种方法

发布时间:2023-09-06 01:34责任编辑:傅花花关键词:CSS

转载:浅谈 CSS 清除浮动的 6 种方法

在开发网页的时候经常需要用到各种浮动,此时便需要及时的清除浮动,否则将会导致布局出现问题

引出问题:

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title></title> ???<style> ???????.outer{ ???????????border: 1px solid black; ???????????width:300px; ???????} ???????.inner{ ???????????width: 50px; ???????????height: 50px; ???????????background-color: #ff4400; ???????????margin-right: 20px; ???????????float: left; ???????} ???????.footer{ ???????????background-color: #005FC3; ???????????width: 200px; ???????????height: 100px; ???????} ???</style></head><body> ???<div class="outer"> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="inner"></div> ???</div> ???<div class="footer"></div></body></html>

可以看出本应包住3个 inner DIV的 outer DIV 却没有包住他们,此刻只剩一条由上下边框贴合组成的线,同时 footer DIV元素也跑到了三个浮动元素的底下

解决办法:

 

1. 使用额外标签法

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title></title> ???<style> ???????.outer{ ???????????border: 1px solid black; ???????????width: 300px; ???????} ???????.inner{ ???????????width: 50px; ???????????height: 50px; ???????????background-color: #ff4400; ???????????margin-right: 20px; ???????????float: left; ???????} ???????.footer{ ???????????background-color: #005FC3; ???????????width: 200px; ???????????height: 100px; ???????} ???????.clearfix{ ???????????clear: both; ???????} ???</style></head><body> ???<div class="outer"> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="clearfix"></div> ???</div> ???<div class="footer"></div></body></html>

这是早期普遍使用的方法,但是对于有代码洁癖的人来说,解决的不够完美

 

2. 使用 :after 为元素

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title></title> ???<style> ???????.outer{ ???????????border: 1px solid black; ???????????width: 300px; ???????} ???????.inner{ ???????????width: 50px; ???????????height: 50px; ???????????background-color: #ff4400; ???????????margin-right: 20px; ???????????float: left; ???????} ???????.footer{ ???????????background-color: #005FC3; ???????????width: 200px; ???????????height: 100px; ???????} ???????.clearfix:after{ ?/*最简方式*/ ???????????content: ‘‘; ???????????display: block; ???????????clear: both; ???????} ???????/* 新浪使用方式 ???????.clearfix:after{ ????????????content: ‘‘; ???????????display: block; ???????????clear: both; ???????????height: 0; ???????????visibility: hidden; ???????} ???????*/ ???????.clearfix{ /*兼容 IE*/ ???????????zoom: 1; ???????} ???</style></head><body> ???<div class="outer clearfix"> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="inner"></div> ???</div> ???<div class="footer"></div></body></html>

3. 利用 overflow:hidden 属性

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title></title> ???<style> ???????.outer{ ???????????border: 1px solid black; ???????????width: 300px; ???????????overflow: hidden; ???????????zoom: 1;/*兼容 IE*/ ???????} ???????.inner{ ???????????width: 50px; ???????????height: 50px; ???????????background-color: #ff4400; ???????????margin-right: 20px; ???????????float: left; ???????} ???????.footer{ ???????????background-color: #005FC3; ???????????width: 200px; ???????????height: 100px; ???????} ???</style></head><body> ???<div class="outer"> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="inner"></div> ???</div> ???<div class="footer"></div></body></html>

 

4. 父元素浮动

当父元素浮动的时候,无需为子元素的浮动清除浮动,布局时经常用到

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title></title> ???<style> ???????.outer{ ???????????border: 1px solid black; ???????????width: 300px; ???????????float: left; ???????} ???????.inner{ ???????????width: 50px; ???????????height: 50px; ???????????background-color: #ff4400; ???????????margin-right: 20px; ???????????float: left; ???????} ???????.footer{ ???????????background-color: #005FC3; ???????????width: 200px; ???????????height: 100px; ???????} ???</style></head><body> ???<div class="outer"> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="inner"></div> ???</div> ???<div class="footer"></div></body></html>

可以看出虽然 outer DIV 消除了塌陷现象,但由于其也发生了浮动故,其后元素若处于正常文档流,会被跌在底下。

如果要解决可以参考前面的办法。

例如:

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title></title> ???<style> ???????.outer{ ???????????border: 1px solid black; ???????????width: 300px; ???????????float: left; ???????} ???????.inner{ ???????????width: 50px; ???????????height: 50px; ???????????background-color: #ff4400; ???????????margin-right: 20px; ???????????float: left; ???????} ???????.footer{ ???????????background-color: #005FC3; ???????????width: 200px; ???????????height: 100px; ???????} ???????.clearfix:after{ ???????????content: ""; ???????????display: block; ???????????clear: both; ???????} ???????.clearfix{ ???????????zoom: 1; ???????} ???</style></head><body> ???<div class="outer"> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="inner"></div> ???</div> ???<div class="clearfix"></div> ???<div class="footer"></div></body></html>

 

5. 父元素处于绝对定位

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title></title> ???<style> ???????.outer{ ???????????border: 1px solid black; ???????????width: 300px; ???????????position: absolute; ???????} ???????.inner{ ???????????width: 50px; ???????????height: 50px; ???????????background-color: #ff4400; ???????????margin-right: 20px; ???????????float: left; ???????} ???????.footer{ ???????????background-color: #005FC3; ???????????width: 200px; ???????????height: 100px; ???????} ???</style></head><body> ???<div class="outer"> ???????<div class="inner"></div> ???????<div class="inner"></div> ???????<div class="inner"></div> ???</div> ???<div class="clearfix"></div> ???<div class="footer"></div></body></html>

与上一个方法同理,由于绝对定位已脱离正常文档流,故出现相同情况,解决办法依旧可以使用以上办法结合,灵活多变。

【转】浅谈 CSS 清除浮动的 6 种方法

原文地址:https://www.cnblogs.com/dxchen/p/8228266.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved