Chciałbym wziąć jeden mały plik SVG (utworzony za pomocą Inkscape) i osadzić go lub połączyć z innym (większym) plikiem. Wyświetlany przez przeglądarkę mam nadzieję, że mniejszy pojawi się w jakimś symbolu zastępczym większego.
Czy to możliwe?
Wolę <use>
aby <image>
jak później staje się w stałej rozdzielczości i nie skalowania jak zwykłe obiekty wektorowe zrobić w bieżącym dokumencie.http://www.w3.org/TR/SVG11/struct.html#ImageElement
Ale element <use>
nie może odwoływać się do całych plików SVG, jego xlink:href
atrybutem jest odwołanie do elementu / fragmentu w dokumencie SVG ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). Element „use” może odwoływać się do dowolnego lokalnego lub nielokalnego zasobu.
przykład:
MyLibrary.svg:
<svg (...)>
<rect x="0" y="0" width="200" inkscape:label="upper-left-blue"
style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="upper-left-blue" height="200"/>
UseParts.svg:
<use x="0" y="0" width="400" xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:href="MyLibrary.svg#upper-left-blue" xlink:type="simple"
xlink:actuate="onLoad" height="400" id="use8793" xlink:show="embed"/>
Obsługa tej funkcji może być różna dla różnych edytorów / przeglądarek SVG, o ile wiem, że powinna działać (przynajmniej) w Inkscape, Firefox i Batik.
Użyj
image
elementu i odwołaj się do pliku SVG. Dla zabawy zapisz następujące danerecursion.svg
:Źródło: /programming/5451135/embed-svg-in-svg/5451238#5451238
źródło