连个div显示在一行,前者给定宽度,后者沾满屏幕剩余的宽度

前两天,看微信上关于前端的推送的时候,发现了一道一眼看起来特别简单的面试题,题是这样说的:

两个div排列在一行上,其中第一个div给一个定宽,第二个div充满剩余的宽度。

看到这个题的时候,我首先想到的是弹性盒子,由于它是css3里的属性,可能低版本的浏览器会不兼容,那还有其他的方法吗,我想了有一段时间,可是没想到,之后的两天,这个面试题一直都是我耿耿于怀的东西,趁着今天有时间,我就上网看了一下,又总结了两个方法。下面就是解决这个问题的三个方法,如果你还有其他更好的方法的话,可以在评论上给我告知哦。

方法一、用弹性盒子,具体代码如下

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.box{
			width: 100%;
			height: 150px;
		}
		.left{
			float: left;
			width: 150px;
			height: 150px;
			background: #f00;
		}
		.right{
			height: 150px;
			background: #00f;
			overflow: hidden;
			/*zoomS是IE的专有属性,可能其他浏览器不支持,他可以设置或检索对象的缩放比例,除此之外,他还有一些小作用,比如出发IE的hasLayout属性,清除浮动,清除margin重叠等。*/
			zoom: 1; 
		}
		
	</style>
</head>
<body>
	<div class="box">
		<div class="left"></div>
		<div class="right"></div>
	</div>
</body>
</html>


方法二、用margin-left来实现

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.box{
			width: 100%;
			height: 150px;
		}
		.left{
			float: left;
			width: 150px;
			height: 150px;
			background: #f00;
		}
		.right{
			margin-left: 150px;
			height: 150px;
			background: #00f;
		}
	</style>
</head>
<body>
	<div class="box">
		<div class="left"></div>
		<div class="right"></div>
	</div>
</body>
</html>


方法三、用浮动+zoom来事项

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.box{
			display: flex;
			width: 100%;
			height: 150px;
		}
		.left{
			width: 150px;
			height: 150px;
			background: #f00;
		}
		.right{
			flex-grow: 1;
			height: 150px;
			background: #00f;
		}
	</style>
</head>
<body>
	<div class="box">
		<div class="left"></div>
		<div class="right"></div>
	</div>
</body>
</html>

这三个方法最终实现的结构如图所示



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值