В SVG вы можете использовать только ограниченное количество свойств CSS по сравнению с HTML.Таким образом, элементы SVG ничего не знают о display:flex
.
Итак, в вашем примере <rect>
просто игнорирует те правила CSS, которые не понимает.
svg {
background: grey;
display: flex; /* Has no effect because <rect> doesn't understand display: flex */
justify-content: flex-end; /* Has no effect because <rect> doesn't understand justify-content: flex-end */
}
rect {
fill: rgb(0, 0, 255);
stroke-width: 3;
stroke: rgb(0, 0, 0);
}
<svg width="400" height="110">
<rect width="200" height="50"/>
</svg>
Таким образом, вы можете сделать это с помощью translate transform
Translate (<x> [<y>]
) функция преобразования перемещает объект на x и y.Если y не указано, предполагается, что оно равно нулю.
svg {
background: grey;
}
rect {
fill: rgb(0, 0, 255);
stroke-width: 3;
stroke: rgb(0, 0, 0);
}
<svg width="400" height="110">
<rect width="200" height="50" transform="translate(197,0)"/>
</svg>
Или с атрибутом x
Этот атрибут определяет координату x прямоугольника.
Тип значения: <length>|<percentage>
svg {
background: grey;
}
rect {
fill: rgb(0, 0, 255);
stroke-width: 3;
stroke: rgb(0, 0, 0);
}
<svg width="400" height="110">
<rect width="200" height="50" x="197"/>
</svg>