如何在 javascript 中为没有单位的 svg 设置字体大小

How to set font-size for svg without unit in javascript

我正在编辑 plotly.js 库源代码以具有可缩放的绘图,我设置了 viewBox 和 preserveAspectRatio(plotly.js 使用 d3 库)但是如果我不使用单位,字体大小会出现问题属性 更改为 px

我已经尝试从控制台测试字体是否更改为没有单位使用此:

[...document.querySelectorAll('text')].forEach((text) => {
    text.style.fontSize = text.style.fontSize.replace('px', '')
});

但似乎如果你不使用单位,px 会自动添加。

我还尝试使用 rem 单位并在 html 上设置 62.5%,其中原始字体大小除以 10,但在调整绘图大小时它不会缩放。

还尝试了这个新的 CSS 类型的 OM API:

[...document.querySelectorAll('text')].forEach((text) => {
   var size = +text.style.fontSize.replace('px', '');
   text.attributeStyleMap.set('font-size', CSS.number(size))
});

但出现错误:

Failed to execute 'set' on 'StylePropertyMap': Invalid type for property

有没有从 javascript 或其他比例文本方式设置字体大小的解决方案?

在 svg 中每个样式 属性 都有相应的属性,因此您可以使用:

d3.select('text').attr('font-size', 10);

并且它会设置没有单位的字体大小。情节仍然没有扩展,但这就是问题所在。

在 SVG 中,没有单位说明符与使用 px 相同。所以 font-size: 10font-size: 10px 意思是一样的。他们将表现相同。

我不知道为什么值没有单位对你很重要。听起来您认为这就是您的文本未缩放的原因。这不是原因。一定有别的事情发生了。如果您需要有关该问题的帮助,请在您的问题中添加 MCVE