css之float详解

浮动float属性值:

left:元素向左浮动

right:元素向右浮动

none:默认值。元素不浮动。

inhert:规定从父元素继承float的属性值;



浮动会让元素本身脱离文档流,对后面的元素会产生影响,会让后面元素文字环绕到浮动元素上。


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	*{
		margin: 0;
		padding: 0;
	}
	.box1{
		background: red;
	}
	.box2{
		background: green;
	}
	.box3{
		background: blue;
	}
	</style>
</head>
<body>
	<div class="box1">文字一</div>
	<div class="box2">文字二文字二</div>
	<div class="box3">文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三</div>
</body>
</html>


默认情况下,块元素不加浮动显示结果:


先给box1浮动,box2会占据到box1原来位置上,重合部分box1会覆盖box2上,也就是box2文字环绕到box1上

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	*{
		margin: 0;
		padding: 0;
	}
	.box1{
		background: red;
		float: left;
	}
	.box2{
		background: green;
	}
	.box3{
		background: blue;
	}
	</style>
</head>
<body>
	<div class="box1">文字一</div>
	<div class="box2">文字二文字二</div>
	<div class="box3">文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三</div>
</body>
</html>

box1浮动后显示如下:


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	*{
		margin: 0;
		padding: 0;
	}
	.box1{
		background: red;
		float: left;
	}
	.box2{
		background: green;
		float: left;
	}
	.box3{
		background: blue;
	}
	</style>
</head>
<body>
	<div class="box1">文字一</div>
	<div class="box2">文字二文字二</div>
	<div class="box3">文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三</div>
</body>
</html>


再给box2浮动,box3会占据到box2原来位置上,重合部分box2会覆盖box3上,也就是box3文字环绕到box2上

box2浮动显示如下:



最后对box3浮动,由于box3文字太多,他的宽度是根据其内容宽度来决定,所以会挤下来,效果显示如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	*{
		margin: 0;
		padding: 0;
	}
	.box1{
		background: red;
		float: left;
	}
	.box2{
		background: green;
		float: left;
	}
	.box3{
		background: blue;
		float: left;
	}
	</style>
</head>
<body>
	<div class="box1">文字一</div>
	<div class="box2">文字二文字二</div>
	<div class="box3">文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三文字三</div>
</body>
</html>





但是问题来了,虽然浮动可以让几个块元素显示到同一行,但是如果页面中还有其它元素,会对其后面的任何元素会产生影响。

如果浮动元素有父元素时,浮动产生影响:背景不能显示;边框不能撑开;margin之不能正确显示。


所以这里引用怎样清除浮动,清除浮动的几种常用方法?

方法一:添加空元素

有几个浮动元素,在最后一个浮动元素下面添加一个<div style="clear:both;"></div>

方法二:给几个浮动元素的父级加高

如果这几个元素浮动了,给他们父级加固定高度,如果没有父级,就加一个父级。

方法三:给父元素添加浮动

如果一个元素下的几个子元素都浮动,那把这个元素也浮动,就会清除子元素的浮动。但缺点是会影响到父元素后面的元素的位置,而且有事如果父元素绝对定位,浮动不起作用。

方法四:给父元素加overflow:hidden;

这个方法IE6不支持,还有如果子元素大小超过父元素大小,出现显示问题。

方法五:使用css的after伪元素

.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
}

.clearfix{

zoom:1;//解决兼容性问题,会激活父元素的hasLayout,让父元素有自己的布局

}



  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS中的浮动属性(float)用于控制元素在其父元素中的位置和布局。通过设置浮动属性,我们可以将元素从正常的文档流中脱离出来,使其沿着父元素的左侧或右侧浮动。 浮动属性有三个可能的取值:left、right和none。默认值为none。 - 当设置为left时,元素会向左浮动,其周围的内容会围绕在右侧。 - 当设置为right时,元素会向右浮动,其周围的内容会围绕在左侧。 - 当设置为none时,元素不进行浮动,恢复正常的文档流。 浮动元素会具有块级元素的特性,即会占据一定的空间,并且会从左到右或从右到左排列。浮动元素不会占据父元素中的空间,所以其他元素会填充浮动元素的位置。 除了浮动属性外,我们通常还需要配合一些其他属性来控制浮动元素的行为: - clear属性用于清除浮动对后续元素的影响。可以设置为left、right、both或none来指定在浮动元素的左侧、右侧或两侧不允许出现浮动元素。 - overflow属性可以用于包含浮动元素,通过设置其值为auto或hidden,可以触发父元素的块级格式化上下文,使其包含浮动元素。 需要注意的是,使用浮动属性可能会导致一些布局上的问题,如高度塌陷(clearfix问题)和重叠等。为了避免这些问题,可以使用一些技巧和清除浮动的方法。 总而言之,浮动属性是CSS中用于实现元素布局的重要属性,可以使元素浮动到指定位置,并影响周围元素的布局。然而,由于其一些潜在的问题,现代CSS布局技术更倾向于使用flexbox和grid布局来代替浮动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值