首先不加inline-block显示红色是因为潜规则:后面的会覆盖前面的。-2px的margin将div2往上推了2px,所以挡住了div1。然后你加上了display:inline-block,这时候显示黑色是因为层级不同了,inline-block的层级要比block高,所以div1挡住了div2,我找了张图你自己看看吧
你给了div2一个margin-top负值,不覆盖才怪