javascript - 在 JS 中,获取 SVG 路径的实际(计算)笔划宽度

标签 javascript css svg

给定 SVG 路径元素的 DOM 节点,我如何以其父元素为单位获取该路径的 stroke-width?目标是通过向路径的父级添加附加元素来向路径添加“装饰”,其尺寸与路径的 stroke-width 成比例。路径的 stroke-width 可以通过 CSS、内联样式或任何其他可能影响笔划的方式来确定。

我知道我可以获得计算样式值 window.getComputedStyle(node)['stroke-width']。但这会返回一个包含单位的字符串。

这些单位适用于什么坐标系?我是否可以假设单位始终为 px,从而简单地去掉最后两个字符以获得一个数字?

最佳答案

根据 documentation getComputedStyle() 返回所谓的 computed values对于大多数属性,它被定义为 px。所以你可以尝试做这样的事情:

var value = window.getComputedStyle(node)['stroke-width'];
if (value.match(/^\-?\d+(\.\d+)px$/)) {
  value = parseFloat(value.substr(-2));
} else {
  // Examine value further
} 

我使用 parseFloat 而不是 parseInt 因为计算值可能是原始值的小数被定义为非 px 单位。

关于javascript - 在 JS 中,获取 SVG 路径的实际(计算)笔划宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46999241/

相关文章:

javascript - 在 JavaScript 中使用 InstanceOf 和原型(prototype)继承

javascript - 以编程方式生成纸影

javascript - div 中的一个 div 中的列表的正确 jquery 选择器是什么?

html - Bootstrap css 固定 header 没有空格

javascript - 使用 d3js 顺序动画 SVG

javascript - 调整 G 标签内的 SVG 矩形元素的大小

javascript - Chrome 在关闭/退出时不清除 SESSION COOKIES

javascript - 如何向 ReactJS 组件添加多个类?

css - 不使用 jQuery 的嵌入式 SVG(带后备)

javascript - 在 FabricJS 中调整窗口大小时如何始终使剪切区域居中?