<discard>
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Das <discard>
SVG Element kann verwendet werden, um den Zeitpunkt anzugeben, zu dem ein bestimmtes Element aus dem DOM entfernt werden soll. Dies ermöglicht es einem SVG-Viewer, Speicher zu sparen, indem nicht mehr benötigte Elemente, wie z.B. abgeschlossene animierte Elemente, entfernt werden.
Der Vorgang entfernt das Ziellelement und alle seine Kinder und anschließend das <discard>
Element selbst (dies geschieht auch, wenn das Ziellelement ungültig war).
Das begin
Attribut wird verwendet, um den Auslösepunkt anzugeben, an dem das <discard>
Element aktiv wird und das zugeordnete Element verworfen wird. Das Ziellelement, das aus dem DOM entfernt werden soll, wird über das href
Attribut angegeben. Falls nicht angegeben, ist das unmittelbare Elternteil des <discard>
Elements das Ziel.
<discard>
kann an allen Orten verwendet werden, an denen auch das <animate>
Element benutzt werden kann. Autoren sollten das playbackorder
Attribut auf forwardonly
setzen, wenn dieses Element verwendet wird, da Elemente nicht erneut hinzugefügt werden, wenn der Benutzer in der Zeitachse rückwärts sucht.
Attribute
begin
-
Der Auslöser, der das
<discard>
Element aktiv macht, woraufhin das zugeordnete Element verworfen werden soll. Dies ist üblicherweise einsyncbase-value
, der den Beginn oder das Ende einer anderen Animation angibt, einoffset-value
relativ zu dem Zeitpunkt, zu dem die SVG-Datei in das DOM geladen wurde, oder einevent-value
.Werttyp: <begin-value-list>. Standardwert:
0
; Animierbar: nein href
-
Ein URL-Verweis auf das Ziellelement, das verworfen werden soll. Dies hat die gleichen Anforderungen wie
href
bei Animationselementen und kann ein weiteres<discard>
Element sein. Wenn nicht definiert, ist das Ziellelement das unmittelbare Elternteil des<discard>
Elements.Beachten Sie, dass wenn das Ziellelement nicht Teil des aktuellen SVG-Dokumentfragments ist, ob es verworfen wird oder nicht, von der Zielsprache abhängt.
Standardwert:
none
; Animierbar: nein
Verwendungskontext
Kategorien | Animationselement |
---|---|
Erlaubter Inhalt | Beliebige Anzahl folgender Elemente, in beliebiger Reihenfolge: Beschreibende Elemente |
Beispiele
Verwerfen ausgelöst durch das Ende einer Animation
Dieses Beispiel zeigt, wie das <discard>
Element mit einer Aktivierung, die durch das Ende einer Animation ausgelöst wird, verwendet werden könnte. Das verwendete SVG basiert auf Erik Dahlströms "Loading bar" SVG unter http://xn--dahlstrm-t4a.net/svg/smil/svgt12_discard.svg.
Das SVG definiert ein "Fertig geladen" <text>
-Element, das von einem <g>
-Element verborgen wird.
Das <rect>
wird über eine Dauer von 4 Sekunden bis zum Ende der Leiste durch die Animation mit der ID "barAnim" animiert. Das <g>
Element enthält ein Discard-Element, das durch den Abschluss der "barAnim" Animation ausgelöst wird: <discard begin="barAnim.end" />
. Wenn dies aktiviert wird, werden das <g>
Element und alle seine Inhalte aus dem DOM entfernt, so dass nur der Textblock übrig bleibt, der "Fertig geladen" anzeigt.
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 100 50">
<text
x="50"
y="30"
font-family="sans-serif"
font-size="10px"
text-anchor="middle"
stroke="white"
stroke-width="0.2">
Load complete
</text>
<g>
<rect
rx="5"
x="10"
y="15"
height="20"
width="80"
fill="white"
stroke="black" />
<rect fill="lime" rx="3" x="12" y="17" height="16.1" width="10">
<animate id="barAnim" attributeName="width" to="76" dur="4s" />
</rect>
<text
x="50"
y="30"
font-family="sans-serif"
font-size="10px"
text-anchor="middle"
stroke="white"
stroke-width="0.2">
Loading...
</text>
<discard begin="barAnim.end" />
</g>
</svg>
Ergebnis
Das folgende Live-Beispiel zeigt das oben stehende SVG im oberen Bild, während das zweite Bild die gleiche SVG-Datei ist, jedoch mit den <discard>
Elementen entfernt (in Browsern, die das Discard-Element nicht unterstützen, verhalten sich beide Bilder gleich).
Im oberen Bild (in Browsern, die das <discard>
Element unterstützen) verschwinden die Balken und alles im <g>
Element, nachdem die Balken das Ende erreicht haben und verworfen werden, so dass nur der "Fertig geladen"-Text übrig bleibt. Der untere Bildfortschrittsbalken kehrt einfach in seinen Anfangszustand zurück, nachdem die Animation abgeschlossen ist, und der "Fertig geladen"-Text wird nie angezeigt.
Verwerfen ausgelöst durch Zeit
Dieses Beispiel zeigt, wie das <discard>
Element mit einer zeitbasierten Aktivierung verwendet werden kann.
Es ist fast identisch mit dem vorherigen Beispiel, der Hauptunterschied besteht darin, dass das Discard-Element nach 5 Sekunden (<discard begin="5s" />
) anstelle des Endes der Animation (4 Sekunden) ausgelöst wird. Dies entfernt auch die ID vom <animate>
Element, da sie nicht verwendet wird.
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 100 50">
<text
x="50"
y="30"
font-family="sans-serif"
font-size="10px"
text-anchor="middle"
stroke="white"
stroke-width="0.2">
Load complete
</text>
<g>
<rect
rx="5"
x="10"
y="15"
height="20"
width="80"
fill="white"
stroke="black" />
<rect fill="lime" rx="3" x="12" y="17" height="16.1" width="10">
<animate attributeName="width" to="76" dur="4s" />
</rect>
<text
x="50"
y="30"
font-family="sans-serif"
font-size="10px"
text-anchor="middle"
stroke="white"
stroke-width="0.2">
Loading...
</text>
<discard begin="5s" />
</g>
</svg>
Ergebnis
Das folgende Live-Beispiel zeigt das oben stehende SVG im oberen Bild, während das zweite Bild die gleiche SVG-Datei ist, jedoch mit den <discard>
Elementen entfernt (in Browsern, die das Discard-Element nicht unterstützen, verhalten sich beide Bilder gleich).
Im oberen Bild (in Browsern, die das <discard>
Element unterstützen) wird die Leiste nach vier Sekunden fertiggestellt und kehrt dann in ihren Anfangszustand zurück. Eine Sekunde später verschwindet alles im <g>
Element, so dass nur der "Fertig geladen"-Text übrig bleibt. Der untere Bildfortschrittsbalken kehrt einfach in seinen Anfangszustand zurück, nachdem die Animation abgeschlossen ist, und der "Fertig geladen"-Text wird nie angezeigt.
Spezifikationen
Specification |
---|
SVG Animations Level 2 # DiscardElement |