flex的小米面试题

题目:

题目1:求每个盒子的宽度是多少?(放大问题)

			* {
				padding: 0;
				margin: 0;
			}
			.container {
				width: 600px;
				height: 300px;
				display: flex;
			}
			.left {
				flex: 1 2 300px;
				background: red;
			}
			.right {
				flex: 2 1 200px;
				background: blue;
			}

 分析:这里是空间有剩余, 所以会平分剩余空间 600 - 300 - 200 = 100 

 然后将left和right各自需要的份数算出来, left要 1/3  right要2/3 。只看flex复合属性的第一个值,就是flex-grow的值,第二个是flex-shrink 是否缩小,不用看.

left盒子宽度.300+100*0.333...

righ盒子宽度t:200+100*0.666...

放大问题编辑简单,关键是缩小问题

题目1:求每个盒子的宽度是多少?(缩小问题)

			.container {
				width: 600px;
				height: 300px;
				display: flex;
			}
			.left {
				flex: 1 2 500px;
				background: red;
			}
			.right {
				flex: 2 1 400px;
				background: blue;
			}

分析过程:宽度有600, 但是left和right分别加起来是 500+400 = 900 的宽度 所以意味着每个都要进行缩小,这里关键是要算left和right每个需要缩小多少比例?

 一共要缩小 900 - 600 = 300的宽度

  那么left 共有500的宽度,各要缩小多少呢,要算比例,

  思路:这里我们把缩小先当成放大来看先算比例,分母500*2 + 400*1,左边500*2占分母的多少份就是要缩小的比例

     所以 left = 500 - 300*(500*2/ (500*2 + 400*1))

     所以 right= 400 - 300*(400*1/ (500*2 + 400*1))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值