关于float的浮动无法撑起宽高问题

当使用float浮动布局时,父级元素无法正确获取子元素的宽高。本文介绍了五个解决办法:1) 添加清浮动div;2) 设置固定宽高(不适用于内容动态变化的情况);3) 使用overflow属性;4) 将li元素display设为inline-block;5) 利用伪元素清除浮动。这些方法能帮助修复父级元素的尺寸问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于float的浮动无法撑起父级元素宽高的问题

项目开发过程常常遇到一个问题,在使用float之后,会发现父级元素的宽高无法撑起,写一段代码来尝试一下

<div class="main">
		<ul>
			<li>列表1</li>
			<li>列表2</li>
			<li>列表3</li>
			<li>列表4</li>
			<li>列表5</li>
			<li>列表6</li>
		</ul>
	</div>

这一段是代码html的结构,下面加上css的样式

<style>
		img {
			width:200px;
			height:200px;
		}
		.main {
			border:1px solid #333;
		}
		ul {
			list-style:none;
		}
	</style>

诊断代码运行后得到的效果:在这里插入图片描述
而我们想要的是列表横向排列,为li元素加上浮动效果,

li {
	float:left;
	border:1px solid #333;
}

此时我们会发现外层的div宽高并没有被撑开,会出现如下效果:在这里插入图片描述
查阅资料发现,造成原因是因为float浮动效果会使浮动元素脱离普通文档流,所以没法撑起父级元素的宽高,解决问题大概有以下几种办法,都能得到预期效果:
最终效果

解决办法一:

在最后一个li元素后面加上一个div,设置div的class属性为div{clear:both},这样清除了浮动效果,会撑起父级宽高

解决办法二

给父级元素设置固定宽高,但是由于网站开发往往会遇到li元素内容是动态的,此方法并不太好

解决办法三

为父级元素设置overflow属性为auto或者hidden,都能达到效果

ul{
	overflow:auto;
}
解决办法四

设置li元素的display为inline-block

li{
	display:inline-block;
}
解决办法五

使用伪元素

ul:after{
	content:'';
	display:block;
	clear:both;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值