El elemento foreignObject
El elemento <foreignObject> ( objeto externo ) se utiliza en SVG para insertar objetos que pertenecen a otros espacios de nombre como por ejemplo (X)HTML.
En SVG el texto no se ajusta automaticamente al espacio disponible como en HTML. Si en SVG tenemos un texto muy largo y queremos que se ajuste a la anchura de la caja padre como en el HTML - este es uno de los casos habituales en los que podemos utilizar el elemento <foreignObject>
<foreignObject x="20" y="20" width="160" height="160" >
<p xmlns="http://www.w3.org/1999/xhtml" style="font: 16px serif;">Lorem ipsum...</p>
</foreignObject>
Como que se trata de un espacio de nombre diferente el párafo tiene que tener un atributo xmlns que defina el espacio de nombre utilizado.
<p xmlns="http://www.w3.org/1999/xhtml" ...
Si utilizamos el SVG dentro de un documento HTML podemos omitir lo del espacio de nombre, pero es obligatorio en documentos .svg.
Algunos atributos especificos
Un elemento <foreignObject> tiene que tener una anchura width y una altura height. Sin estos atributos el elemento aparece colapsado y el contenido de este es invisible almenos que
<foreignObject style="overflow:visible"...
Observación: utilizar overflow:visible disminuie el rendimiento así que es mejor no utilizarlo.
Un elemento <foreignObject> puede tener también una posición. Los atributos x e y establecen las coordenadas de la esquina izquierda arriba del elemento <foreignObject>. El valor por defecto de estos atributos es x="0" e y="0"
See the Pen SVG foreignObject by Gabi (@enxaneta) on CodePen.