Un'altra possibile soluzione sarebbe utilizzare Javascript.
Supponiamo di avere un titolo e di avere tre immagini che devono essere mostrate una dopo l'altra all'interno della stessa sezione. Possiamo estendere la funzionalità del frammento .
il codice HTML potrebbe essere simile:
<section>
<h3>Your title</h3>
<img src="" />
<div>
<span class="fragment imgsrc" data-src="img/pic1.svg" data-fragment-index="0"></span>
<span class="fragment imgsrc" data-src="img/pic2.svg" data-fragment-index="1"></span>
<span class="fragment imgsrc" data-src="img/pic3.svg" data-fragment-index="2"></span>
</div>
</section>
Ora si aggiunge una funzione fadeImage()
e chiamano ogni volta fragmentshown
o fragmenthidden
viene attivato.
function fadeImage($el) {
// Get image DOM element
$img = $el.parent().siblings('img');
// Fade the image out, change source and fade in again
$img.fadeOut(100, function() {
$img.attr('src', $el.data('src'));
$img.fadeIn(500);
});
}
Reveal.addEventListener('fragmentshown', function(event) {
// Get DOM element of current fragment
var $el = $(event.fragment);
// Check if current fragment is of 'type' imgsrc
// If yes: fade image with source of current element
if($el.hasClass('imgsrc'))
fadeImage($el);
});
Reveal.addEventListener('fragmenthidden', function(event) {
// Get DOM element of current fragment
var $el = $(event.fragment);
// Check if current fragment is of 'type' imgsrc
// If yes: fade image with source of previous element
if($el.hasClass('imgsrc')) {
fadeImage($el.prev());
}
});
Poiché abbiamo appena prolungato il frammento funzionalità, possiamo ancora utilizzare l'attributo data-fragment-index
. Ad esempio potresti mostrare una descrizione per ogni immagine.
La soluzione può essere facilmente ottimizzata/personalizzata.
l'uso di 'position: absolute' incasina le esportazioni di PDF come per rivelare 3 –