Объяснение кода: координаты x
и y
прямоугольника представляют позицию левого верхнего угла.Поэтому, если вы дадите свой прямоугольник x="50" y="50"
, это поместит верхний левый угол прямоугольника в середину холста SVG.Чтобы отцентрировать прямоугольник, необходимо сместить его на половину ширины или высоты: 50 - (30/2) = 35. Решение - <rect width="30" height="30" x="35" y="35" fill="green" />
<svg width="100" height="100" viewBox="0 0 100 100">
<rect width="100%" height="100%" fill="gold" />
<rect width="30" height="30" x="35" y="35" fill="green" />
</svg>
обновление:
Оператор комментирует:
Я бы предпочел вместо этого установить 50% для x и yвыполнения некоторой математики
В этом случае вам может потребоваться перевести ваш прямоугольник, но вам все еще нужна математика, чтобы узнать, сколько нужно перевести:
<svg width="100" height="100" viewBox="0 0 100 100">
<rect width="100%" height="100%" fill="gold" />
<rect width="30" height="30" x="50%" y="50%" transform="translate(-15,-15)" fill="green" />
</svg>
<svg width="100" height="100" viewBox="0 0 100 100">
<rect width="100%" height="100%" fill="gold" />
<rect width="30" height="30" x="-15" y="-15" transform="translate(50,50)" fill="green" />
</svg>
Еще одним решением будет использование многоугольника или пути с центром в начале координат:
<svg width="100" height="100" viewBox="0 0 100 100">
<rect width="100%" height="100%" fill="gold" />
<polygon points="-15,-15 15,-15 15,15 -15,15" transform="translate(50,50)" fill="green" />
</svg>