Javascript 如何将SVG的宽度从百分比转换为像素?

Javascript 如何将SVG的宽度从百分比转换为像素?,javascript,html,svg,Javascript,Html,Svg,我创建了一个矢量图像,并将宽度和高度百分比设置为100%,如下所示: var svg=document.createElements(“http://www.w3.org/2000/svg“,“svg”); var svgNS=svg.namespaceURI; setAttribute('id','idsvg'); setAttribute('width','100%'); setAttribute('height','100%'); 现在我想创建一个位置为“100%-20px”的矩形,但它

我创建了一个矢量图像,并将宽度和高度百分比设置为100%,如下所示:

var svg=document.createElements(“http://www.w3.org/2000/svg“,“svg”);
var svgNS=svg.namespaceURI;
setAttribute('id','idsvg');
setAttribute('width','100%');
setAttribute('height','100%');

现在我想创建一个位置为“100%-20px”的矩形,但它不起作用,因为100%不是一个数字。如何解决此问题?

要实现此目标,您可以使用。这将允许您在指定CSS属性值时执行计算

所以你的代码应该是这样的:

var svg=document.createElements(“http://www.w3.org/2000/svg“,“svg”);
var svgNS=svg.namespaceURI;
setAttribute('id','idsvg');
setAttribute('width','calc(100%-20px)';
setAttribute('height','100%');

注意:请记住,在您的特定情况下,您不能将
计算(100%-20px)
用于
高度
,因为结果未知。所以最好使用
calc(100vh-20px)
100%
本身。

我不知道你在问什么。您是否只想从
100%
中减去
20px
?是的(100%-20px),但它不起作用,因为100%不是一个数字,我得到0。但是我应该如何以及在哪里定义calc()?@SMario不需要定义它,它是CSS内置函数,所以它会在运行时自动计算结果。我在javascript站点上做所有事情,它告诉我“calc”没有定义。因为我不使用CSS?@SMario您当然应该像我提供的那样将它放在引号(
'
)中。另外,您正在创建一个SVG,然后您将以某种方式将其放入DOM中,因此当它出现在DOM中时,对象模型将处理其余部分。