为什么为什么???

为什么为什么???

http://img1.sycdn.imooc.com//climg/5c303df90001ff3019201041.jpg

为什么margin-left: -200px右边的盒子会跑到上面去,我觉得绿色盒子添加了margin-left: -200px不是应该放在蓝色盒子的下面吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1、绿色盒子设置margin-left:-200px不会在蓝色盒子的底部,原因如下:

http://img1.sycdn.imooc.com//climg/5c32edca0001f5d114241512.jpg

因为设置了float:left;原本应该在同一行显示的三个盒子,因为红色盒子宽度是100%显示,撑满了整个窗口,红色盒子的宽度(100%)+蓝色盒子的宽度(200px)+绿色盒子的宽度(200px)>浏览器窗口宽度(100%),所以,即便是设置了float:left,蓝色盒子和绿色盒子也会被挤到下一行去显示,这个时候,我们给蓝色盒子和绿色盒子设置margin-left:负值,那么,相当于是将三个盒子的宽度相加,再加上margin-left的负值,整个宽度小于浏览器窗口的宽度,这个时候,float:left就生效了,因此,显示的效果如下:

http://img1.sycdn.imooc.com//climg/5c32f2780001612205540110.jpg

所以,绿色盒子设置margin-left:-200px,是不会在蓝色盒子下面显示的。

2、设置margin-right:199px,右侧盒子不在最右侧显示的原因是:右侧盒子的宽度是200px,设置了margin-right:-199px,相当于是把盒子移动到了如下位置:

http://img1.sycdn.imooc.com//climg/5c32ef6b000161d911980672.jpg

希望可以帮到你!

卡布琦诺 2019-01-06 12:56:38

中间的middle的宽度是100%显示的和padding:0 200px的占位,正常宽度会撑满整个屏幕,这样就放不下左侧的蓝色盒子和右侧的绿色盒子了,所以左侧的蓝色盒子和右侧的绿色盒子就会被挤到下一行显示,因为设置了position:relative和浮动,整个时候,使用margin-left:-200,会将左侧蓝色盒子移动到middle的左侧,因为你给右侧的蓝色盒子设置了margin-left:-100px,所以会显示在蓝色盒子的下方,如果想要让绿色盒子显示在右侧,需要设置的是margin-right:-200px

希望可以帮到你!

  • 提问者 桃花K #1
    我知道给绿色盒子设置margin-right:-200px后他会跑到上面去,我问的就是为什么它设置了margin-right:-200px会跑到上面去,我试过给绿色盒子设置margin-right:-199px它都还在下面,但是再增加1px就上去了(我认为绿色盒子添加了margin-left: -200px不是应该放在蓝色盒子的下面吗?),这是为什么?
    2019-01-06 21:41:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师