Incorporer SVG SVG?
J'ai un document SVG, et je voudrais inclure un externe svg image à l'intérieur d'elle, c'est à dire quelque chose comme:
<object data="logo.svgz" width="100" height="100" x="200" y="400"/>
("objet" est juste un exemple - l'extérieur du document sera SVG plutôt que de xhtml).
Des idées? Est-ce même possible? Ou est la meilleure chose pour moi simplement gifler le logo.svg xml dans mon extérieures document SVG?
InformationsquelleAutor Marcin | 2011-03-27
Vous devez vous connecter pour publier un commentaire.
Utiliser le
image
élément de référence et de votre fichier SVG. Pour le plaisir, enregistrez les en tant querecursion.svg
:preserveAspectRatio
etviewBox
les attributs? En outre, l'ajoutpreserveAspectRatio
à la<image />
élément qui pourrait aider. Si je suis heureux que vous avez une solution je serais intéressé d'étudier plus à fond et en écrasant les problèmes que vous avez avec un bon référencement.<image>
en SVG (ou<img>
ou<embed>
en HTML) pour faire référence à un fichier SVG vous n'êtes pas accès à la sous-jacentes DOM. En tant que tel, non, vous ne pouvez pas les éléments de style à l'intérieur d'un élément SVG qui a été référencé par un<image>
.href
attribut, vous n'avez pas besoin d'échapper à la<
etc. des personnages.)Ou vous pouvez intégrer des enfants svg parent svg comme ceci:
démo:
http://hitokun-s.github.io/demo/path-between-two-svg.html
Il vaut la peine de mentionner que lorsque vous incorporez SVGs dans un autre format SVG avec:
ensuite intégré SVG prend un rectangulaire forme avec des dimensions données.
C'est-à-dire, si votre incorporé SVG est un cercle ou une forme autre qu'un carré, alors il devient un carré avec de la transparence. Par conséquent, les événements de la souris se retrouvent piégés dans cette embeded place et ne pas atteindre le parent SVG. Attention pour que.
Une meilleure approche est d'utiliser un modèle. Pour remplir une forme, un cercle, un carré ou même un chemin.
Ensuite utiliser le modèle comme ceci:
Maintenant votre souris événements à ne pas rester coincé dans transparentes de l'image de carrés!
J'ai trouvé que l'utilisation de la
<image>
tag a donné une faible qualité de rendu du fichier incorporé. Cependant la technique suivante travaillé (pour incorporer un fichier SVG à l'intérieur d'un fichier SVG - pas nécessairement pour le rendu sur une page HTML):De modifier le fichier SVG dans un éditeur de texte.
Trouver la fin de l'métadonnées:
Insérer cette ligne après que le groupe tag:
Dans ce cas nous sommes, y compris OTHERFILE.svg dans le fichier, et tous layer1 (le premier et le calque par défaut).
L'enregistrer et puis ouvrez le fichier dans Inkscape.
Cette technique est utile pour avoir un fond standard ou d'un logo sur chaque page. Par de le mettre en premier dans le fichier, il sera rendu en premier (et donc en bas). Vous pouvez également verrouiller par l'ajout de cet attribut:
En d'autres termes:
J'ai besoin d'intégrer un SVG dans mon fichier SVG, mais aussi de changer sa couleur et d'appliquer des transformations.
Seulement Firefox prend en charge la "transformation" de l'attribut sur la imbriquée éléments svg. Modification de la couleur de <image> est pas possible. Ainsi, une combinaison des deux est nécessaire.
Ce que j'ai fait est le suivant
Cela fonctionne au moins sur Firefox, Chrome et Inkscape.
Présente le même comportement que l'enfant svg dans le parent svg réponse à l'exception que vous pouvez désormais appliquer des transformations sur elle.
Note
xlink:href
a été obsolète, il suffit d'utiliserhref
au lieu de cela, par exemple,viewBox
,width
etheight
valeurs (dans cette réponse) sont tout simplement à des fins d'illustration, ajuster la mise en page en conséquence (lire plus).Depuis
<image>
des actions similaires spec comme<img>
en ce sens qu'elle ne prend pas en charge le format SVG style, comme mentionné dans Christiaan réponse. Par exemple, si j'ai le code css suivant la ligne que l'ensemble de la svg forme couleur soit la même que la couleur de la police,Le style précédent ne s'applique pas si
<image>
est utilisé. Pour cela, vous devez utiliser<use>
, comme indiqué dans Nick répondre.Note
id="layer1"
ethref="OTHERFILE.svg#layer1"
valeurs dans sa réponse sont obligatoire.Ce qui signifie que vous devez ajouter le
id
attribut à l'externe fichier svg, si vous avez besoin d'héberger l' (modifié) externe fichier svg par vous-même (votre site web) ou quelque part d'autre. Le résultant externe svg fichier ressemble à ceci (notez où j'ai mis leid
):La valeur de id peut être n'importe quoi, j'utilise "logo" dans cet exemple.
Pour l'incorporer svg,
Si vous utilisez le svg en ligne dans votre code html, vous n'avez pas besoin d'attribut xmlns (au moins ce que je sais de svgo).