如果声明了border,css margin-top属性才有效

zan*_*ona 5 html css margin

好,

这已经有一段时间了,因为这种情况一直持续下去,我从来没有时间问过为什么:

所以这是我非常简单的HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Page Title</title>
  <style>
    div{
      width: 200px;
      background: green;
    }    
    p{
      background: yellow;
      margin: 40px;
    }
  </style>
</head>
<body>
  <div>
    <p>Testing</p>
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

没什么特别的,只有一个带div的简单页面和div里面的一个段落.

但是你可以注意到在css上我声明段落与divs界限相差40px ......这就发生了

没有顶部和底部边距

那是对的......顶部和底部边距被忽略了......

但是如果我添加一个1px的红色边框div:

div{
  width: 200px;
  background: green;
  border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的:

这次工作

所以,是的,这对我来说真的听起来很奇怪...这是在safari中发生的,但我相信它会在其他浏览器上发生同样的事情......我的问题是......为什么会发生这种情况?

有没有办法解决它?

提前致谢

Jam*_*all 6

我想你正在看到一个折叠边距的例子,你可以在这里阅读更多