Javascript 在JS中等效于应用于SVG元素的调整css大小

Javascript 在JS中等效于应用于SVG元素的调整css大小,javascript,css,svg,Javascript,Css,Svg,我最近发现CSS调整大小: ` ` 还有一个polyFill,但它们都不能用于SVG元素:/ 至少有可能吗?从您的代码和@ChrisG的注释开始,您可以执行以下操作 单击svg时,将该svg包装成一个可调整大小的div,并将svg宽度和高度属性设置为“100%”,这样svg将获得包装的大小。 然后,当调整div的大小时,svg也会调整大小。 单击div时,显式设置svg宽度和高度属性,并删除div 请参见下面的代码段: window.addEventListener('DOMContentLo

我最近发现CSS调整大小: `

` 还有一个polyFill,但它们都不能用于SVG元素:/


至少有可能吗?

从您的代码和@ChrisG的注释开始,您可以执行以下操作

单击
svg
时,将该
svg
包装成一个可调整大小的
div
,并将
svg
宽度和高度属性设置为“100%”,这样
svg
将获得包装的大小。
然后,当调整
div
的大小时,
svg
也会调整大小。
单击
div
时,显式设置
svg
宽度和高度属性,并删除
div

请参见下面的代码段:

window.addEventListener('DOMContentLoaded',()=>{
document.addEventListener('单击',(e)=>{
var r=document.getElementById('r');
如果(r&&r!=e.target){
var svg=r.querySelector('svg');
setAttribute('width',r.offsetWidth+'px');
setAttribute('height',r.offsetHeight+'px');
r、 替换为(svg);
}
var svg=e.target;
而(!!svg&&svg.nodeName!=“svg”)
svg=svg.parentElement;
如果(!svg)返回;
var r=document.createElement('div');
r、 id='r';
r、 style.width=svg.width.baseVal.valueAsString;
r、 style.height=svg.height.baseVal.valueAsString;
setAttribute('width','100%');
setAttribute('height','100%');
svg.parentElement.insertBefore(r,svg);
r、 appendChild(svg.parentElement.removeChild(svg));
});
});
svg{
背景:#cef
}
#r{
显示:内联块;
框大小:边框框;
边框:实心1px;
调整大小:两者;
溢出:隐藏;
}


您可以将SVG包装在一个div中,并将SVG设置为
宽度:100%;高度:100%
我猜。谢谢,但我知道,但对于这个问题,我希望没有div容器。然后在这个JS代码中添加一些其他特殊的绘图SVG功能,这些功能将与调整大小交互。如果您希望点会随着调整大小而改变坐标,您肯定需要滚动自己的代码。是的,这意味着更改viewbox以及其他与动画相关的内容,但我只想开始一个小的代码库,我没想到会这么快找到解决方案,也没想到会这么快找到解决方案。惊讶和钦佩,因为我觉得它相当狡猾。谢谢大家!@MrJ,很乐意帮忙!
div {
  resize: both;
  overflow: auto;
}