<animate> CSS-attr su XHTML <foreignObject> in SVG
-
12-12-2019 - |
Domanda
Ho incorporato un file <div>
in un <svg>
utilizzando <foreignObject>
.voglio <animate>
il suo attributo CSS opacità, inserendolo in dissolvenza quando la pagina è stata caricata.Quindi ho specificato un localizzatore XLink, riferito all'elemento target da animare:
<g xmlns:xlink="http://www.w3.org/1999/xlink">
<animate xlink:href="#animateThis" attributeType="CSS" attributeName="opacity" from="0" to="1" begin="0s" dur="1s" fill="freeze" />
</g>
<foreignObject>
<body xmlns="http://www.w3.org/1999/xhtml">
<div id="animateThis" style="opacity:0">
The quick brown fox jumps over the lazy dog.
</div>
</body>
</foreignObject>
(Lo SVG è incorporato in un documento HTML5).
Provandolo in Chrome, non funziona.Sugli elementi SVG nativi, tuttavia, lo fa.Come faccio a farlo funzionare negli oggetti incorporati con <foreignObject>
?
Soluzione
larghezza e altezza sono attributi obbligatori per gli elementi foreignObject.Se non li imposti, foreignObject non dovrebbe essere visualizzato affatto.Non sono sicuro che questo sia ciò che sta accadendo in Chrome, ma sicuramente impedisce al test case di funzionare in Firefox.Se lo aggiungo, come qui: http://jsfiddle.net/longsonr/dLrAN/ funziona tutto, almeno in Firefox funziona comunque.
Tuttavia, nonostante questo funzioni in Firefox, le specifiche SVG dicono solo che le proprietà CSS degli elementi SVG possono essere animate.Se le proprietà CSS sugli elementi html sono animabili dalle animazioni SVG questo è un vantaggio, ad esempio non sembra funzionare per me in Opera 11.6