1. **父亲margin为负的问题**<br />对于下面对父子盒子<br />![](https://cdn.nlark.com/yuque/0/2021/png/2840444/1619160788106-2c020dad-3aae-4bf2-9d03-9eaa982e3048.png#)<br />我们的css是<br />![](https://cdn.nlark.com/yuque/0/2021/png/2840444/1619160788458-16a2b7fe-7670-4757-a560-606246dddbf7.png#)<br />他的效果如下:<br />![](https://cdn.nlark.com/yuque/0/2021/png/2840444/1619160789072-cf8af1d2-9d0c-46f7-8bcc-7a9f5719b01e.png#)<br />但是我们想得到如下结果:<br />![](https://cdn.nlark.com/yuque/0/2021/png/2840444/1619160789629-e8a44ad9-7e16-47ed-a3b8-90842901b35f.png#)<br />这时候我们能不能直接设置 head的margin-left:145px和margin-top:40px,以达到我们想要的居中效果呢?<br />如上图,我们的box和head的margin都是负的,这时候如果设置head的margin为上面<br />的数据,就会出现以下效果<br />![](https://cdn.nlark.com/yuque/0/2021/png/2840444/1619160790176-59ccaaf5-3e7d-4fd5-9e0d-584b7533349e.png#)<br />为什么会这样?<br />我们知道,如果父元素加了border,那么子元素的margin是针对父元素来定位的,但是,<br />注意,在这里并不行,**因为随着head被设置position:fixed,他的margin定位好像并不再针父元素的border框,而是和父元素一样针对body。**如上面的head,就是被fixed改变后,针对被fixed的原本位置,即针对left:50%,而没有针对父元素的border框。所以这时候应该怎么达到我们想要的效果呢? 这时候应如下设置:<br />![](https://cdn.nlark.com/yuque/0/2021/png/2840444/1619160791617-d2e259ba-9e6d-4fce-8c13-38839a55eed8.png#)<br />可达到如下效果<br />![](https://cdn.nlark.com/yuque/0/2021/png/2840444/1619160792140-0c4d2e96-266b-4b96-854a-b0889e103701.png#)

    但是:非常不建议这样搞
    可以如下设置:
    8.4:fixed改变margin针对对象问题 - 图1 8.4:fixed改变margin针对对象问题 - 图2
    只设置box为fixed,这时候作为box的子元素的head,会随着box一起移动到所需位置
    8.4:fixed改变margin针对对象问题 - 图3
    注意:上面的微信和QQ在下面是因为div换行的原因。
    这时候就可以直接对head写margin了(因为他会针对父元素的border进行移动)
    8.4:fixed改变margin针对对象问题 - 图4
    效果如下:
    8.4:fixed改变margin针对对象问题 - 图5

    总结:摸着石头过河的时候偶尔走错路是很正常的,但是要探根究底,真正弄清楚是怎么回事,这会对以后的学习大有好处,而且有助于训练自己的专业素养。