【发布时间】:2026-02-01 08:25:01
【问题描述】:
如何根据编号制作动态间距。返回的数据?我希望如果只返回一个数据,它位于中间。如果返回两个数据,它将调整,依此类推。
var prev = {
"Prev": [{
"type": "Prev1",
},
{
"type": "Prev2",
},
{
"type": "Prev3",
},
]
};
var draw = document.getElementById('drawing');
prev.Prev.forEach((p, i, arr) => {
let x = 55;
let y = 250/arr.length*i+50;
draw.innerHTML += `<g transform="translate(${x} ${y})">
<rect x="-50" y="-20" width="100" height="40" rx="10" />
<text dominant-baseline="middle" text-anchor="middle" width="100">${p.type}</text>
<line x1="50" y1="0" x2="100" y2="${250/arr.length-y+50}" />
</g>`;
});
draw.innerHTML += `<g>
<rect x="150" y="110" width="100" height="40" rx="10" />
<text x="200" y="130" dominant-baseline="middle" text-anchor="middle" width="100">BASE</text>
</g>`;
line, rect {stroke-width: 1; stroke: navy; fill: none;}
text {fill: navy;}
<svg id="drawing" viewBox="0 0 400 300" xmlns="http://www.w3.org/2000/svg">
</svg>
【问题讨论】:
-
y2="${y}"不工作? -
@dalelandry 不工作。如果只返回一个数据,它位于左上角,而不是中间。
-
你可以看看这个答案:*.com/questions/68781957/…
标签: javascript svg formula