元素上设置的默认边距

时间:2009-12-29 20:30:31

标签: html css xhtml

似乎我的浏览器在<body>元素上设置了默认边距,因此如果某个元素E(在body元素内声明)的边距为10px,则E将从浏览器的边缘移除距离= body_Margin + 10px。

a)假设我们还有一个绝对定位的元素B:

   #B
   {
      position:absolute;
      width:150px;
      top:128px;
      right:0px;
      margin:0px;
   }

然后我预计B将从浏览器的右边缘移除10px的距离,但是B忽略了body元素的默认边距,因此它的距离是0px。那是为什么?

b)

body 
{
    background-color: blue;
    margin:70px;
}

由于body元素的边距为70px,因此边距是透明的(因此它们的背景颜色与元素不同),我希望浏览器窗口的边缘有白色,但是相反,它们的颜色与身体元素相同(蓝色)?!

2 个答案:

答案 0 :(得分:3)

虽然我同意这不是一个问题,但考虑到浏览器的不同,通常可以接受:

html, body {
    margin: 0px;
    padding: 0px;
}

...在您的CSS中确保您拥有完全控制权。为什么浏览器会做他们的工作?我会把这个留给其他人推测。

答案 1 :(得分:3)

海报问为什么元素B不受身体元素边缘的影响。

引自问题:

  

...我希望B将从浏览器的右边缘移除10px的距离,但是B忽略了body元素的默认边距,因此它的距离是0px。那是为什么?

答案是:

来自w3schools的

Read this page。它说:

  

绝对:生成一个绝对定位的元素,相对于第一个具有静态位置的父元素定位。

当您绝对定位元素(B)时,将其从文档的正常流程中删除。因为它的所有父元素(一直到文档正文)都设置为静态(默认),所以它们的边距将被忽略。

你可以将身体的位置设置为相对(我会小心这个 - 它也可能影响其他元素),或者你可以改变B的右边:

right:0px;

为:

right:10px;