HTML.it è il sito italiano del web publishing

Galleria con trasizioni effetto dissolvenza



scegli un altro forum
    Indietro   Ricarica   Avanti Invia una risposta

Autore
Discussione     
Cinzy
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 12


ICQ:

MSN:

Skype:


Galleria con trasizioni effetto dissolvenza
Ho provato questo tutorial dalla rivista di web designer con i css3 e javascript.
Tutto funzionante ma qualcosa non mi è chiaro..
Al clic nella finestra del browser dovrebbe eseguire una transizione tra immagini con una dissolvenza (funzionante con Firefox) in uscita e l'entrata dell'immagine succcessiva.
Ecco cosa succede:
al caricamento della pagina appare la prima foto, al clic dalla prima passa alla successiva ma senza effetto dissolvenza. Successivamente al clic, dalla seconda immagine esegue la transizione con la dissolvenza in uscita e così si comporta per tutte le immagini successive e tutti i cicli successivi.
La mia domanda è: perchè l'effetto dissolvenza compare solo dalla seconda transizione in poi, non dovrebbe essere tutto uguale e inoltrer, ci sarebbe qualche modifica da apportare al codice per renderla uniforme?

Ecco il codice

codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Beautiful Food Photos Slideshow</title>
<script src="Slideshow.js"></script>
<link href="Slideshow.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="photo">
	<img id="one" >
	<img class="transparent" id="two" >
</div>
<div id="description"></div>
</body>
</html>

// JavaScript Document
var photos = [
	"images/Pears.jpg",
	"images/Salad.jpg",
	"images/Cauliflower.jpg"
];
var descriptions = [
	"Asian Pears",
	"Spinach Salad",
	"Romanesque Cauliflower"
];


var current = "one";
var photoIndex = 0;




function init(){
	var img = document.getElementById("one");
	img.src = photos[photoIndex];
	var div = document.getElementById("description");
	div.innerHTML = descriptions[photoIndex];
	
}

window.onload = init;

function transition() {
	
	photoIndex = photoIndex + 1;
	if (photoIndex >= photos.length) {
		photoIndex = 0;
	}
	var currentImg = document.getElementById(current);
	if (current == "one") {
		current = "two";
	} else {
		current = "one";
	}
	var newImg = document.getElementById(current);
	newImg.src = photos[photoIndex];
	var div = document.getElementById("description");
	div.innerHTML = descriptions [photoIndex];
	currentImg.setAttribute("class", "transparent");
	newImg.setAttribute("class", "");
}
window.onclick = transition;

@charset "utf-8";
/* CSS Document */
html,body,div.photo
{ width:100%; 
height:100%;
 padding:0px;
margin:0px;}
div.photo
{position:relative;}

img
{min-height:100%; 
min-width:100%;
width:auto; 
height:auto; 
position:fixed; 
top:0px; 
left:0px;
-webkit-transition: opacity 1s ease-in-out;
-moz-transition: opacity 1s ease-in-out;
-ms-transition: opacity 1s ease-in-out;
-o-transition: opacity 1s ease-in-out;
transition: opacity 1s ease-in-out;
}

img.transparent
{opacity:0;}

div#description
{position:absolute;
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
font-size:600%;
font-weight:bold;
color:#FFF;
text-shadow:1px 1px 3px #373737;
left:30px;
bottom:30px;}


__________________
Rotundo Cinzia

Segnala ad un moderatore | IP: Collegato | Permalink

Cinzy è offline Old Post 13-04-2012 15:52
Clicca qui per vedere il profilo dell'utente Cinzy Clicca qui per inviare all'utente Cinzy un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Cinzy Aggiungi l'utente Cinzy alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
m4rko80
Utente di HTML.it



Registrato il: Aug 2008

Provenienza:

Messaggi: 1386


ICQ :

MSN :

Skype : a richiesta


ciao, perche' initi che chiama su onload carica semplicemente un immagine:
function init(){
var img = document.getElementById("one");
img.src = photos[photoIndex];
var div = document.getElementById("description");
div.innerHTML = descriptions[photoIndex];

}

senza alcun effetto .

Quando clicchi chiama function transition() {... che cambia immagine con effetto

Non ho provato ma potresti provare a richiamare transition() al posto di init nell'onload
Probabilmente ti carica subito con effetto la seconda o prima. Al massimo modifiche il photoIndex = 0; che c'e' all' inizio con l'ultimo valore che hai.

Segnala ad un moderatore | IP: Collegato | Permalink

m4rko80 è offline Old Post 13-04-2012 16:43
Clicca qui per vedere il profilo dell'utente m4rko80 Clicca qui per inviare all'utente m4rko80 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente m4rko80 Aggiungi l'utente m4rko80 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Cinzy
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 12


ICQ :

MSN :

Skype :


Ok grazie, ho capito
Ecco come ho modificato il codice:

codice:

var photos = [
	"images/Pears.jpg",
	"images/Salad.jpg",
	"images/Cauliflower.jpg"
];
var descriptions = [
	"Asian Pears",
	"Spinach Salad",
	"Romanesque Cauliflower"
];


var current = "one";
var photoIndex = 2;

function transition() {
		photoIndex = photoIndex + 1;
		if (photoIndex >= photos.length) {
		photoIndex = 0;
		}
		var currentImg = document.getElementById(current);
		if (current == "one") {
		current = "two";
		} else {
		current = "one";
		}
		var newImg = document.getElementById(current);
		newImg.src = photos[photoIndex];
		var div = document.getElementById("description");
		div.innerHTML = descriptions [photoIndex];
		currentImg.setAttribute("class", "transparent");
		newImg.setAttribute("class", "");
}
window.onclick = transition;
window.onload = transition;


__________________
Rotundo Cinzia

Segnala ad un moderatore | IP: Collegato | Permalink

Cinzy è offline Old Post 14-04-2012 10:43
Clicca qui per vedere il profilo dell'utente Cinzy Clicca qui per inviare all'utente Cinzy un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Cinzy Aggiungi l'utente Cinzy alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Tutte le ore sono con fuso orario CET. Ora sono le 02:49.     

    Ultima discussione   Prossima discussione Invia una risposta
Versione per la stampa | Invia il thread via email | Ricevi aggiornamenti sul thread | Scarica il thread
 

Cerchi un argomento specifico e hai fretta? Usa il motore di ricerca