我有一个巨大的svg 3200 * 1800。我只想显示该图像的一部分,如400 * 1000,确保宽度是主要属性并具有高度的滚动条,但是当我设置视图框时,它会增加宽度以显示添加的高度。
viewBox="900 550 400 1000"
他们是否有办法阻止这种情况发生?
答案 0 :(得分:2)
我解决了你需要增加相对于视图框的高度,例如我最终得到这样的东西:
width="1400"
height="4000"
viewBox="966 555 350 1000"
与以往相比:
width="350"
height="1000"
viewBox="966 555 350 1000"
答案 1 :(得分:1)
您只需将“preserveAspectRatio”设置为“none”以及“viewBox”属性,即可解决问题。
答案 2 :(得分:0)
这个答案建立在Shane的答案之上(不适合可变的窗口大小)......
要使宽度占优势的溢出:
以下代码适用于我的learning project,不是生产代码。
在head元素中:
<script type="application/javascript">
var svgRatio = ${viewboxRatio}; // ratio must be known
// From http://stackoverflow.com/a/13651455
if(window.attachEvent) {
window.attachEvent('onresize', resizeSvg);
}
else if(window.addEventListener) {
window.addEventListener('resize', resizeSvg, true);
}
else {
//The browser does not support Javascript event binding
}
function resizeSvg() {
var height = window.innerWidth * svgRatio;
var svg = document.getElementsByTagName('svg')[0];
svg.setAttribute("height", height.toString());
}
</script>
在身体的尽头:
<script type="application/javascript">
resizeSvg();
</script>