Выровнять вложенные SVG по горизонтали

#svg

#svg

Вопрос:

Я бы хотел, чтобы два вложенных SVG были выровнены по горизонтали (бок о бок). Однако поведение по умолчанию, по-видимому, заключается в том, что они сворачиваются и перекрываются, так что виден только красный SVG вместе с остальной частью родительского SVG.

Возможно ли это, и если да, то как?

 <svg width="80" height="40" style="background-color:skyblue">
  <svg width="40" height="40">
    <path d="M0,0 h40 v40 h-40 v-40 z" fill="green"/>
  </svg>
  <svg width="40" height="40">
    <path d="M0,0 h40 v40 h-40 v-40 z" fill="red"/>
  </svg>
</svg>
 

Демонстрация: https://jsfiddle.net/5qjcLpdt /

Ответ №1:

Исходя из приведенных выше размеров, я предполагаю, что вы хотите, чтобы два квадратных элемента SVG были выровнены по горизонтали поверх родительского элемента. Здесь координаты x и y были добавлены к дочерним элементам, чтобы расположить их:

     <svg width="80" height="40" style="background-color:skyblue">
      <svg x=0 y=0 width="40" height="40">
        <path d="M0,0 h40 v40 h-40 v-40 z" fill="green"/>
      </svg>
      <svg x=40 y=0 width="40" height="40">
        <path d="M0,0 h40 v40 h-40 v-40 z" fill="red"/>
      </svg>
    </svg> 

Комментарии:

1. Спасибо! Вы используете термин «поверх» родительского элемента. Я бы подумал о них как о «внутри» родительского элемента. Можете ли вы прокомментировать различие? Ie: правильнее ли считать вложенные SVG слоистыми, а не содержащимися?