浮动float

float

在CSS中,通过float属性来定义浮动,其基本语法格式如下:

选择器{float:属性值;}
属性值描述
left元素向左浮动
right元素向右浮动
none元素不浮动(默认值)
浮动的目的是,让多个块级元素同一行显示!

标准流父级

1.子盒子浮动不会压住padding

2.浮动的元素会找最近的父级元素对齐,不会超出内边距的范围

float 浮漏特

浮:浮起来,漂浮在其他标准流盒子上面

漏: 加了浮动,不占位置,原来的位置就漏给了标准流的盒子

特:特别注意,首先浮动的盒子和标准流父级搭配使用,特别注意,浮动会使元素变成行内块元素

清除浮动的方法

在CSS中,clear属性用于清除浮动,其基本语法格式如下:

选择器{clear:属性值;}
属性值描述
left不允许左侧有浮动元素(清除左侧浮动的影响)
right不允许右侧有浮动元素(清除右侧浮动的影响)
both同时清除左右两侧浮动的影响

闭合浮动,

额外标签法

w3c推荐的清除浮动方法

优点:通俗易懂,书写方便

缺点:添加了许多无意义的标签,结构化更差。

clear:both

父级添加overflow属性方法

可以给父级添加overflow:hidden auto scroll

优点:代码简介

缺点:内容增多的时候,不会自动换行,无法显示溢出元素

使用after伪元素清除浮动

:after 的升级版

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
        
		.box1 {
			/* height: 200px; 很多情况下,我们父级盒子,不方便给高度 考虑孩子高度会变  */
			width: 600px;
			background-color: pink;
		}
		.box2 {
			width: 600px;
			height: 240px;
			background-color: purple;
		}
		.son1 { /*  son1 和 son2 是标准流,会撑开盒子 */
			width: 150px;
			height: 100px;
			background-color: skyblue;
			float: left;
		}
		.son2 {
			width: 300px;
			height: 100px;
			background-color: hotpink;
			float: left;
		}
	/*	伪元素产生出的是  行内元素
		在整个父元素后面内容   转成块元素  
		高度为0   隐藏掉点  清除浮动*/

		.clearfix:after {
			content: ".";  /* 内容为小点, 尽量加不要空, 否则旧版本浏览器有空隙 */
			display: block;  /* 转换为块级元素 */
			height: 0; /* 高度为0 */
			visibility: hidden;  /* 隐藏盒子 */
			clear: both; /* 清除浮动 */
		}
		.clearfix {  /* ie6.7浏览器的处理方式 */
			*zoom: 1; 
			/*  * 代表ie6.7能识别的特殊符号  带有这个*的属性 只有ie6.7才执行  
			 zoom 就是ie6.7 清除浮动的方法 */
		}
        </style>
    </head>
    <body>
    <p>123</p>
	<div class="box1 clearfix">
		<div class="son1"></div>
		<div class="son2"></div>
	</div>
	<div class="box2"></div>

    </body>
</html>

优点:符合闭合浮动的思想,结构语义化正确

缺点: ie6不支持after,

使用before和after双伪元素清除浮动

清除浮动:clear:both 块级元素下移,直到两边没有浮动元素

闭合浮动:使浮动元素闭合,使父元素能够包含浮动元素,从而减少浮动影响

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
		.box1 {
			/* height: 200px; 很多情况下,我们父级盒子,不方便给高度 考虑孩子高度会变  */
			width: 600px;
			background-color: pink;
		}
		.box2 {
			width: 600px;
			height: 240px;
			background-color: purple;
		}
		.son1 { /*  son1 和 son2 是标准流,会撑开盒子 */
			width: 150px;
			height: 100px;
			background-color: skyblue;
			float: left;
		}
		.son2 {
			width: 300px;
			height: 100px;
			background-color: hotpink;
			float: left;
		}
		.clearfix:before, .clearfix:after {
			content: "";
			display: table;  /* 触发bfc 防止外边距合并 */
		}
		.clearfix:after {
			clear: both;
		}
		.clearfix {
			*zoom: 1;
		}
        </style>
    </head>
    <body>
	<div class="box1 clearfix">
		<div class="son1"></div>
		<div class="son2"></div>
	</div>
	<div class="box2"></div>

    </body>
</html>

代码更简洁

ie6 不支持:after

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值