svg下的polyline坐标可以用百分比吗?如果不能有什么办法可以解决?
时间: 2024-02-11 18:08:44 浏览: 18
Polyline元素的坐标通常使用绝对或相对于SVG视口的单位进行定义,而不是使用百分比。这是因为polyline元素的坐标是基于其父元素(通常是SVG元素)的坐标系来定义的,而不是相对于其自身的大小。
如果你想要使用百分比来定义Polyline的坐标,可以使用JavaScript来动态计算相对于SVG视口的坐标。可以通过获取SVG元素的宽度和高度,然后根据百分比计算出Polyline的坐标。
例如,假设你有一个SVG元素,它的宽度和高度都是100%,并且你想要在其中绘制一个Polyline,其中每个点的坐标都是相对于SVG宽度和高度的百分比。你可以使用以下代码来计算Polyline的坐标:
```
const svg = document.querySelector('svg');
const polyline = document.querySelector('polyline');
const svgWidth = svg.clientWidth;
const svgHeight = svg.clientHeight;
// 定义Polyline的坐标(相对于SVG视口的百分比)
const points = [
{ x: 10, y: 20 },
{ x: 30, y: 40 },
{ x: 50, y: 60 },
];
// 将百分比坐标转换为绝对坐标
const absolutePoints = points.map(({ x, y }) => ({
x: svgWidth * x / 100,
y: svgHeight * y / 100,
}));
// 设置Polyline的坐标
polyline.setAttribute('points', absolutePoints.map(({ x, y }) => `${x},${y}`).join(' '));
```
在这个例子中,我们首先获取SVG元素的宽度和高度,然后定义Polyline的坐标为相对于SVG宽度和高度的百分比。最后,我们使用JavaScript将百分比坐标转换为绝对坐标,并将其设置为Polyline的坐标。