关于CSS中浮动引发的特殊情况,“大坑”

浮动引发的特殊情况

一、换行显示

1、当父元素显示不下所有浮动元素时,显示不下的后面的元素会换行显示

<!doctype html>
<html >
	<head>
		<title></title>
		<meta charset="UTF-8">
		<style>
			div{width:200px;height:100px;}
			#d1{
				height:150px;
				background:#f00;
				float:left;
			}
			#d2{
				background:#ff0;
				float:left;
			}
			#d3{
				background:#0f0;
				float:left;
			}
			#d4{background:#f0f;float:left;height:300px;}
			#d5{background:#afa;float:left;}
		</style>
	</head>
	<body>
	<div id="d1"></div>
	<div id="d2"></div>
	<div id="d3"></div>
	<div id="d4"></div>
	<div id="d5"></div>
	</body>
</html>

在这里插入图片描述
本来5号元素应该在6号位置,但是因为缩小浏览器宽度,所以换行显示到下一行。

2.元素优先网页面顶部上浮,然后再向左/右对齐。
当前面的1、2、3、或四号元素的高度变大时,css代码如下:

div{width:200px;height:100px;}
#d1{background:#f00;float:left;height:160px;}
#d2{background:#ff0;float:left;}
#d3{background:#0f0;float:left;}			
#d4{background:#f0f;float:left;}
#d5{background:#afa;float:left;}

在这里插入图片描述
5号元素没有出现在1号元素下面,而是2号元素的下面

3、浮动元素占位:浮动元素会根据浮动的方向,占据对应方向上的位置,不让后面的元素占用。
比如,把四号元素的高度设为300px,代码和效果如下:

div{width:200px;height:100px;}
#d1{background:#f00;float:left;height:160px;}
#d2{background:#ff0;float:left;}
#d3{background:#0f0;float:left;}			
#d4{background:#f0f;float:left;height:300px;}
#d5{background:#afa;float:left;}

在这里插入图片描述
4号元素占据了它本身及其左边的所有位置,所以5号只能占据如图所示的“big”位置(请自行尝试当4号元素右浮动时的效果)

二、元素一旦浮动,如果没有自定义宽度,其宽度由内容决定

我们知道,如果我们不是指子块级元素的宽度,其宽度默认是父级元素宽度的100%。

<!doctype html>
<html >
	<head>
		<title></title>
		<meta charset="UTF-8">
		<style>
			p{
				height:100px;border:2px solid red;
			}
		</style>
	</head>
	<body>
		<p>abbvbv</p>
	</body>
</html>

在这里插入图片描述
给p标签加上浮动:
在这里插入图片描述
可以看到,p标签的宽度变小了,其宽度有其内容决定。

三、行内元素加浮动

我们知道,行内元素不能设置宽高和上下外边距(img、input除外),如下:
宽高和上下外边距不起作用

<style>
			span{
				height:100px;
				width:300px;
				border:2px solid red;
				margin:50px;
			}
			div{
				width:700px;
				height:300px;
				border:2px solid #ff0;
			}
		</style>
	</head>
	<body>
		<div><span>好嗨呦,感觉人生已经达到了巅峰</span>
		<span>好嗨呦,感觉人生已经达到了巅峰</span></div>
		
	</body>

在这里插入图片描述
我们给span加左浮动

span{
				height:100px;
				width:300px;
				border:2px solid red;
				margin:50px;
				float:left;
			}

在这里插入图片描述
看到,margin和宽高都其作用了。

四、环绕效果

文本,行内元素,行内块是不会被浮动元素压在下方。
而是巧妙的避开了所有浮动元素,环绕着浮动元素显示。

五、高度坍塌

块级元素的高度如果不设置,高度以内部元素内容为准
但是如果内部元素都是浮动元素,浮动元素不占据页面空间
父元素的高,没有了。
解决方案
1.直接为父元素设置高度
弊端:不知道父元素高度怎么办?!
2.父元素也浮动
弊端:浮动会影响后续元素
3. overflow:hidden/auto;(加载父元素)
弊端:当元素真的需要显示溢出内容的时候,就显示不出来了
4.在父元素中追加一个空的块级元素,并且设置clear:both;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混子前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值