【发布时间】:2013-11-10 18:53:21
【问题描述】:
我无法弄清楚 CSS padding 属性是如何为 svg 元素解释的。以下 sn-p (jsFiddle):
<!DOCTYPE html>
<meta charset="utf-8">
<title>noob d3</title>
<style>
svg{background-color:beige;
padding:0px 0px 50px 50px;}
rect{fill:red;
stroke:none;
shape-rendering:crispEdges;}
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
d3.select("body")
.append("svg")
.attr("width", 155)
.attr("height", 105)
.append("g")
.append("rect")
.attr("class", "frame")
.attr("x", 50)
.attr("y", 50)
.attr("width", 50)
.attr("height", 50);
</script>
</body>
... 在 Firefox 和 Chrome 中显示明显不同。更糟糕的是,这两种显示对我来说都没有意义:显示的 svg 元素(“米色”矩形)的大小看起来比我预期的要大得多。
所以我的问题有两个方面:1)svg 元素的padding 属性应该如何影响事物在其中绘制的位置? 2) 是否有一个 polyfill 可以确保 Chrome 和 Firefox 都以相同的方式处理填充?
【问题讨论】:
-
我环顾四周,发现了这篇文章:- davidsbigthoughts.blogspot.com/2011/11/… 我会在我的家用电脑上进行更多研究。附带说明一下,我在所有浏览器上都使用了 html5 画布,对我来说效果很好。
-
AFAIK,SVG 标准没有指定任何诸如填充之类的东西,这就是它处理不一致的原因。只需将 SVG 设置为您想要的大小(带填充),然后添加
rect使其看起来像您想要的那样。 -
@LarsKotthoff:感谢您的评论;如果您发布它,我会接受它作为答案。
-
好的,谢谢,会这样做的。
标签: css google-chrome firefox svg d3.js