提问者:小点点

摆脱<画布>元素周围的填充/边距?


我在div中有一个画布对象。画布似乎以某种方式在它周围有一个填充。我希望它的边缘接触浏览器屏幕的边缘:

// my html file:
<body>
  <div id="canvasholder"></div>
</body>

// my java gwt code
Canvas canvas = Canvas.createIfSupported(); 
canvas.setWidth("100%");
canvas.setHeight("100%");
RootPanel.get("canvasholder").add(canvas);

但是是的,页面在画布元素周围仍然有大约20像素的边距。除了上面复制的内容之外,页面上没有其他内容。

我不认为这是GWT特定的问题,可能是html元素具有默认的填充/边距?

谢啦

------ 更新 ------------

奇怪的是,我仍然看到填充,Firebug插件向我展示了body元素不知何故有10px的边距:

// firebug inspection of the body element:
body {
    background: none repeat scroll 0 0 #FFFFFF;
    border: 0 none;
    color: black;
    direction: ltr;
    margin: 10px; // huh?
    padding: 0;
}

// my css file:
hml, body, div, canvas {
    margin: 0px;
    padding: 0px;
}
div.logParent {
    position: absolute;
    top: 20px; left: 20px;
    color: black;
    z-index: 2;
}

共2个答案

匿名用户

我有类似的问题,绝对定位div与画布内(通过JS添加,所以没有额外的空间周围)导致溢出页面上,当我定位div在页面的底部。

解决方案是将画布显示属性设置为“块”(当时不知道它默认是“内联块”),现在没有添加额外的填充,滚动条也不见了。

匿名用户

正如您正确指出的,浏览器为各种超文本标记语言元素实现了默认样式(它们没有标准化,因此每个浏览器实现的默认值略有不同)。出于您的目的,考虑到您发布的超文本标记语言,您需要以下内容:

html, body, div, canvas {
    margin: 0;
    padding: 0;
}

当然,这确实过于简化了事情,并且可能值得设置font-size和默认的颜色背景颜色属性(以及许多其他属性)。

参考资料:

  • CSS重置重载,作者Eric Meyer。
  • YUI重置。
  • 还有很多其他的,虽然我真的只能想到这两个,但是css重置可能对你有用。