如何使用CSS缩放SVG宽度?

时间:2013-10-31 18:32:00

标签: javascript html css svg

我正在使用Google's Charts js库。它工作得很好,并为我们的数据制作了极好的图表。

不幸的是,由于它是如何创建的,它没有响应,所以如果屏幕尺寸发生变化,它就不会改变以匹配。我通过设置为redraw的{​​{1}}函数解决了这个问题,因此修复了。

似乎打印不被视为调整大小事件,因此不会调用重绘。我有一个仅打印的css成型页面的其余部分在打印时看起来很棒,但图表保持与浏览器窗口中相同的大小。我可以缩小窗口,打印时不会搞砸页面缩放,但这不是一个真正的解决方案。

我尝试过:

window.onresize添加到print.css - 没有好的

我没有尝试过:

使图表成为一个可以很好地打印的设定尺寸 - 这看起来像是一个黑客,如果可能的话,我宁愿不这样做。

修改

一项修改:Google Charts API在svg{width:100%;}中将svg创建为<svg>。它不是背景图像。

1 个答案:

答案 0 :(得分:1)

这是推荐:

https://developer.mozilla.org/en-US/docs/Web/CSS/Scaling_of_SVG_backgrounds

和我的解决方案:

经过一些反复试验,这就是我找到的。

添加(到原始CSS):

html {
   height: 100%
}

完全按照原始规格提供了我想要的内容。

此外,如果我想让图像在裁剪时居中,我可以使用:

html {
    background: url(path/to/image.jpg) no-repeat center center fixed;
    background-size: cover;
}

最后,如果我希望它居中,请始终保持纵横比,但不要裁剪(即,某些空格是正常的)然后我可以这样做:

body {
  background: url(/path/to/image.svg) no-repeat center center fixed;
  background-size: contain;
}