CSS常用清除浮动方式总结

浮动(float)简介

CSS浮动属性(float)最早是为了完成文字环绕效果来开发的,后来被用于布局,可以让元素脱离文档流,但也正是脱离了文档流才引起了各种布局问题。
在父元素不定宽高的情况下,我们一般希望父元素由子元素撑开,但通过浮动脱离了文档流的元素不会撑开父元素,也就改变了页面的布局,这也是遇到的浮动问题

解决办法

基础HTML标签
<div class="box">
        <div class="a">
        </div>
        <!-- <div class="b">   注释是只有一种情况用到
        </div> -->
 </div>
基础CSS样式
.box{
	color: red;
}
.a{
	width:300px;
	height: 300px;
	background-color: blueviolet;
	float: left;
}
清除浮动
  1. 给父元素添加overflow属性,属性值为 hidden/auto/scorll 都可(会溢出隐藏)
.box{
	overflow: hidden;
}  /* 这种情况会使内容溢出隐藏*/
  1. 给兄弟元素添加clear属性(需要多创建一个无用元素)
.b{
	clear: both;/* clear属性是专门用来清除浮动的,属性值有 left、right、both,left可以清除左浮动,
	right可以清除右浮动,both全清除,使用选择取决个人*/
}
  1. 对第二种方式优化,利用伪元素方式,不用创建多余元素
.box::after{ /* 注意伪元素需要加给父元素 */
	content: ""; /* conten必须存在,可以没有值的内容,但是如果没有content,则伪元素不存在*/
	display: block; /* 将伪元素转为块元素,否则无效,属性值可以为table;为table则开启BFC,而
	block 不会开启BFC*/
	clear: both;
	visibility: hidden; /* 表示占了空间*/
}
  1. 给父元素也添加浮动(开个玩笑)
    这样父元素可以被撑开,但是不能解决布局问题,因为父元素也脱离了文档流

总结

以上三种方式都可以清除浮动,各有各的优点,但他们都不能兼容IE6/7,而且各有各的不足,总结一个通用的

.clearfix::before, .clearfix::after{
            content: "";
            display: table; 
            clear: both;
            visibility: hidden;  
} 
.clearfix{
	*zoom:1; /* 兼容ie6/7 */
}

将以上代码放入通用css样式表中,需要清除时给父元素添加一个 class 即可解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值