 
 
 <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>upCreative &#187; transizioni</title>
	<atom:link href="https://www.upcreative.net/tag/transizioni/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.upcreative.net</link>
	<description>Web Design, grafica,  web application e content web marketing</description>
	<lastBuildDate>Wed, 10 Apr 2019 12:53:28 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>Web e Mobile app fluide con layer e hardware acceleration</title>
		<link>https://www.upcreative.net/web-e-mobile-app-fluide-con-layer-e-hardware-acceleration/</link>
		<comments>https://www.upcreative.net/web-e-mobile-app-fluide-con-layer-e-hardware-acceleration/#comments</comments>
		<pubDate>Mon, 23 Dec 2013 17:06:08 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Creare applicazioni javascript]]></category>
		<category><![CDATA[Risorse]]></category>
		<category><![CDATA[Web Apps]]></category>
		<category><![CDATA[animazioni]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[HTML Mobile App]]></category>
		<category><![CDATA[transizioni]]></category>
		<category><![CDATA[web app]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=2830</guid>
		<description><![CDATA[<p>Molte volte ho affrontato il discorso dell&#8217;importanza delle prestazioni, e su come esse incidono notevolmente nella realizzazione di applicazioni web e mobile scritte in HTML, CSS3 e Javascript. Numerosi web developer durante lo sviluppo dei propri lavori non tengono conto del rendering</p>
<p>The post <a rel="nofollow" href="https://www.upcreative.net/web-e-mobile-app-fluide-con-layer-e-hardware-acceleration/">Web e Mobile app fluide con layer e hardware acceleration</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="l-submain"><div class="l-submain-h g-html i-cf"><p>Molte volte ho affrontato il discorso dell&#8217;importanza delle prestazioni, e su come esse incidono notevolmente nella <a title="10 mobile frameworks per la realizzazione di Applicazioni HTML5, CSS3 e javascript " href="http://www.upcreative.net/8-mobile-framework-per-applicazioni-html5-css-javascript/">realizzazione di applicazioni web e mobile scritte in HTML, CSS3 e Javascript</a>. Numerosi web developer durante lo sviluppo dei propri lavori non tengono conto del <strong>rendering</strong> del browser, ovvero del processo tramite il quale avviene la rappresentazione degli elementi DOM nello schermo, quando invece è uno dei fattori che influiscono maggiormente sulle prestazioni di un&#8217;interfaccia.</p>
<p>Con i browser più moderni, compresi quelli dei dispositivi mobile, abbiamo la possibilità di sfruttare il rendering a &#8220;schede grafiche&#8221;, comunemente conosciuto come <strong>accelerazione hardware </strong>(<em>hardware acceleration</em>). Esso rappresenta un modo molto efficace per aumentare la reattività e la fluidità di animazioni e la creazione di documenti DOM complicati.</p>
<p>Forse ti può interessare questo articolo su <a title="Come ottimizzare le performance CSS3 per aumentarne le prestazioni" href="http://www.upcreative.net/performance-css3-consigli-per-ottimizzare-le-animazioni/">come scrivere animazioni CSS3 per ottmizzarne le performance</a>.</p>
<p><span style="line-height: 1.5em;">Sfruttando l&#8217;accelerazione hardware è possibile quindi realizzare web application con una user-experience avanzata e, soprattutto per quanto riguarda i dispositivi mobile, inserire effetti ed animazioni che ci permettono di cerare prodotti dalle prestazioni molto simili a quelle native.</span></p>
<hr />
<p><em>Con l&#8217;accelerazione hardware è possibile creare ottime #webapplication e #mobileapp</em><br /><a href='https://twitter.com/share?text=Con+l%27accelerazione+hardware+%C3%A8+possibile+creare+ottime+%23webapplication+e+%23mobileapp&#038;via=upCreativeIta&#038;related=upCreativeIta&#038;url=https://www.upcreative.net/web-e-mobile-app-fluide-con-layer-e-hardware-acceleration/' target='_blank'>Click To Tweet</a></p>
<hr />
<p>In questo articolo voglio introdurre il concetto di <strong>layers</strong>, e di come possiamo servircene per <strong>aumentare la fluidità delle tue animazioni CSS3</strong>.</p>
<h3>Prima di iniziare</h3>
<p>Prima di andare avanti vorrei discutere sulla compatibilità: il sistema di rendering basato sull&#8217;accelerazione hardware non è ancora supportato da tutti i tipi di browser, ma solamente da quelli più moderni, i quali possono eseguire la rappresentazione del markup nello schermo sia tramite la classica metodologia che tramite i layers.</p>
<p>Tuttavia gli attuali browser sono in costante aggiornamento e ogni volta che vengono rilasciate versioni più recenti, essi si presentano maggiormente compatibili con questa caratteristica.</p>
<p>In particolare l&#8217;accelerazione hardware è ben supportata da tutti i browser basati su <em>webkit e </em>da quelli presenti nei recenti sistemi operativi Windows, per cui risulta uno strumento fondamentale per realizzare <strong>HTML5 mobile app</strong>, in quanto tutti i mobile browser (o perlomeno quelli su sistemi iOS, Android e Windows Phone), ne possono beneficiare.</p>
<p>Per quanto riguarda i siti web invece, se deciderai di servirti dell&#8217;<em>hardware acceleration</em>, sarà opportuno inserire dei <em>fallback per i browser meno recenti. </em>Puoi trovare un esempio di fallback in questo <a title="CSS3 slide panel: tutorial su come realizzare un menu stile mobile" href="http://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/">tutorial su come realizzare un menu stile mobile</a>.</p>
<h2>Concetti base</h2>
<p>Quando parliamo di layer dobbiamo fare una distinzione fra due tipologie, quella dei &#8220;<strong><em>Layer di Rendering</em></strong>&#8221; e quella dei &#8220;<strong><em>Layer Grafici</em></strong>&#8220;: entrambi fanno parte del processo di rappresentazione degli elementi della pagina nello schermo (rendering). I primi si preoccupano di gestire i sottolivelli degli elementi DOM, mentre i secondi gestiscono i sottolivelli dei <em>Layer di Rendering</em>.</p>
<p>Quando cito i &#8220;layer per le rappresentazioni e le animazioni CSS3&#8243;, mi riferisco ai Layer Grafici, che sono quelli il cui rendering è delegato alla GPU (la memoria video), la quale se ne occupa sottoforma di <strong><em>texture.  </em></strong>La texture è un oggetto facilmente modificabile, la cui trasformazione non richiede un grosso impiego di risorse.</p>
<p>Questo è sostanzialmente il motivo per cui le trasformazioni 3D CSS sono molto performanti: esse fanno parte di un processo separato dal flusso di lavoro della memoria principale, in quanto vengono eseguite nella GPU.</p>
<p>Per citare un esempio concreto, le trasformazioni CSS3 3D sono usate nelle mobile app con la tecnica del fast scrolling:</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">.content {
  -webkit-overflow-scrolling: touch;
}
.content &gt; * {
  -webkit-transform: translateZ(0px);
          transform: translateZ(0px);
}</pre><p>
&nbsp;</p>
<p>Il codice mostrato in questo esempio sfrutta l&#8217;accelerazione hardware per forzare il rendering degli elementi con <em>position:relative</em> e <em>position:absolute</em> durante lo scroll nei dispositivi mobile (la conoscevi?).</p>
<h2>Il funzionamento</h2>
<p>Ma perché gli effetti e le trasformazioni operate dalla GPU sui layer sono più veloci?</p>
<p>Il funzionamento non è niente di particolarmente complicato: quando il browser deve modificare delle determinate caratteristiche per un elemento DOM (più avanti vedremo quali), esso si preoccuperà di creare un <em>layer</em> che rappresenti quell&#8217;elemento (insieme a tutti i suoi sotto elementi). Il layer non è altro che un<strong>&#8216;immagine <em>bitmap</em></strong>, che viene caricata nella GPU, la quale ne modificherà elementi grafici come trasparenza, rotazione, scale ecc..</p>
<p>Ecco quindi svelato il mistero della velocità: <strong>tutte le modifiche apportate nella GPU sono applicate ad un&#8217;immagine</strong>.</p>
<p style="text-align: center;"><span style="color: #ff0000;"><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/12/hardware-acceleration.jpg"><img class="size-full wp-image-2843 aligncenter" alt="hardware-acceleration" src="http://www.upcreative.net/wp-content/uploads/2013/12/hardware-acceleration.jpg" width="690" height="420" /></a></span></p>
<p>Ma cosa succede se il contenuto di quel layer viene modificato?</p>
<p>Se abbiamo bisogno di modificare il contenuto del layer, il browser dovrà rieffettuare l&#8217;intera operazione: il processo di rendering prima (ho descritto i relativi step in <a title="CSS3 slide panel: tutorial su come realizzare un menu stile mobile" href="http://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/">questo articolo</a>), e l&#8217;upload della <em>bitmap </em>alla GPU dopo.</p>
<p>Per cui, al fine di preservare la fluidità degli effetti applicati ad un elemento, ci si deve preoccupare di modificare il meno possibile le caratteristiche CSS che implicano la ripetizione del processo di disegno.</p>
<h2>Come scatenare la creazione di un layer</h2>
<p>Abbiamo compreso il vantaggioso funzionamento della creazione dei layer da parte del browser e della delegazione alla GPU, ora vediamo come fare in modo che il browser trasformi un elemento DOM in un layer.</p>
<p>Il browser crea un layer per ogni elemento al quale sono applicate proprietà CSS di trasformazioni 3D o di trasformazioni con prospettiva (es: <em>transform: translate3d(&#8230;);  o perspective: &#8230;;</em>), e per ogni elemento che interagisce in qualche maniera con un elemento avente quelle caratteristiche.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="size-full wp-image-2845 aligncenter" style="line-height: 1.5em;" alt="hardware-acceleration-con-rotate3d" src="http://www.upcreative.net/wp-content/uploads/2013/12/hardware-acceleration-con-rotate3d.jpg" width="318" height="546" /></p>
<p style="text-align: center;"><span style="color: #808080;"><em>esempio di animazione che sfrutta la proprietà transform: translate3d</em></span></p>
<p style="text-align: center;">
<p>Per cui per &#8220;stimolare&#8221; la creazione di un layer per un elemento, dovremo scrivere gli stili CSS in modo da agire su determinate proprietà CSS invece che su altre.</p>
<p>In particolare, l&#8217;upload alla GPU avviene nel caso di elementi:</p>
<ul>
<li>che hanno proprietà CSS 3d o di prospettiva</li>
<li>sui quali viene applicata un&#8217;animazione che comprende quelle proprietà</li>
<li>che si sovrappongono a dei layers presenti nel loro stesso livello DOM (aventi un <em>z-index</em> minore)</li>
<li>che hanno dei layer come sottoelementi</li>
<li>a cui sono applicati filtri CSS avanzati (es.: <em>filter: blur(&#8230;) </em>o<em> filter: grayscale(&#8230;) </em>)</li>
</ul>
<h2>Conlusioni</h2>
<p>Quindi tutto quello che dobbiamo fare per creare web e mobile app con un&#8217;interfaccia di alto livello, è realizzare i nostri effetti tramite<strong> proprietà che richiamano la creazione dei layers</strong>, sfruttando la tecnica dell&#8217;<strong>accelerazione hardware</strong>. In questo modo eviteremo di ripetere l&#8217;intero processo di rendering per ogni keyframe dell&#8217;animazione.</p>
<p>Piccola nota al riguardo, non abusare di questa tecnica: la creazione di un numero troppo elevato di layers potrebbe infatti causare un sovraccarico dei processi nella GPU.</p>
<p>E tu? Hai mai sfruttato la GPU per migliorare le prestazioni dei tuoi lavori?</p>
<h2>Crea la tua mobile app in HTML, CSS3 e Javascript</h2>
<p>Utilizzando questa tecnica unita a molte altre ho creato per i miei clienti oltre 10 applicazioni per dispositivi mobile, tra cui due progetti personali: <a title="Tint Weather App - HTML, CSS3 e javascript mobile app" href="http://www.upcreative.net/tint-weather-app/">Tint Weather App</a> e <a title="Dieta SI o NO? - HTML, CSS3 e javascript mobile app" href="http://www.upcreative.net/app-dieta-si-o-no/">Dieta SI o NO?</a>. Se anche tu sei un web designer e vuoi realizzare la tua applicazione mobile da distribuire nei vari stores, forse sarai interessato al mio e-book: <a title="Html Mobile Accelerato - Come realizzare HTML Mobile App fluide e preformanti" href="http://www.upcreative.net/html-mobile-accelerato/"><strong>HTML Mobile Accelerato</strong></a>.</p>
<p>Grazie ad esso verrai a conoscenza di tutte quelle tecniche che renderanno la tua applicazione mobile fluida e reattiva come quelle native.</p>
<p style="text-align: center;">Clicca nell&#8217;immagine sottostante per saperne di più!</p>
<p style="text-align: center;"><a href="http://www.upcreative.net/html-mobile-accelerato/"><img class="size-full wp-image-2689 aligncenter" alt="HTML-mobile-accelerato-ebook-cover" src="http://www.upcreative.net/wp-content/uploads/2013/11/HTML-mobile-accelerato-ebook-cover1.png" width="563" height="418" /></a></p>
</div></div><p>The post <a rel="nofollow" href="https://www.upcreative.net/web-e-mobile-app-fluide-con-layer-e-hardware-acceleration/">Web e Mobile app fluide con layer e hardware acceleration</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.upcreative.net/web-e-mobile-app-fluide-con-layer-e-hardware-acceleration/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Modernizr e CSS3: gestire gli eventi di fine animazione e transizione con javascript</title>
		<link>https://www.upcreative.net/modernizr-e-css3-gestire-eventi-animazioni-e-transizioni/</link>
		<comments>https://www.upcreative.net/modernizr-e-css3-gestire-eventi-animazioni-e-transizioni/#comments</comments>
		<pubDate>Tue, 03 Dec 2013 08:29:08 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[animazioni]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Modernizr]]></category>
		<category><![CDATA[transizioni]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=2631</guid>
		<description><![CDATA[<p>The post <a rel="nofollow" href="https://www.upcreative.net/modernizr-e-css3-gestire-eventi-animazioni-e-transizioni/">Modernizr e CSS3: gestire gli eventi di fine animazione e transizione con javascript</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="l-submain"><div class="l-submain-h g-html i-cf"><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<p>Usare <a title="Animate.css: raccolta di stili per animazioni CSS3 cross browser" href="http://www.upcreative.net/animate-css-animazioni-css3-cross-browser/"><strong>animazioni e transizioni CSS3</strong></a> in siti e applicazioni web è ormai diventata (fortunatamente) pratica sempre più comune ed i vari web designer si sbizzarriscono con il loro utilizzo per cercare di distinguersi in creatività e design rispetto agli altri.</p>
<p>Molte volte navigando in rete ci imbattiamo in portfolio o showcase che usano una combinazione di effetti CSS3 ben organizzati e disposti secondo un determinato ordine, al fine di raggiungere un certo tipo di risultato.</p>
<p>Anche a me capita molto spesso di dover far partire un&#8217;animazione o transizione nel momento in cui l&#8217;altra è appena terminata. In questo articolo che ti voglio parlare di una risorsa secondo me molto utile: <strong>come gestire gli eventi di callback di fine animazione e transizione nei CSS3</strong>.</p>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<img width="690" height="400" src="http://www.upcreative.net/wp-content/uploads/2013/11/Modernizr-e-CSS3-eventi-fine-animazione.jpg" class="attachment-full" alt="Modernizr-e-CSS3-eventi-fine-animazione" />
		</div> 
	</div> <div class="g-cols"><div class="one-half"><div class="wpb_button align_center"><a href="http://www.upcreative.net/tutorials/30112013Modernizr-e-CSS3-eventi-fine-animazione/"class="g-btn type_primary size_big"><span>Demo</span></a></div>
</div><div class="one-half"><div class="wpb_button align_center"><a href="http://www.upcreative.net/download/2647/"class="g-btn type_primary size_big"><span>Download</span></a></div>
</div></div>
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<p>&nbsp;</p>
<h2><span style="font-size: 1.5em;">Modernizr e CSS3</span></h2>
<p>Un tool che non deve mai mancare nelle <a title="Le mie HTML5 mobile web apps | upCreative" href="http://www.upcreative.net/html5-mobile-apps/">mie applicazioni</a>, siano esse mobile o web, è sicuramente <a title="Modernizr - Tool per gestire la compatibilità browser" href="http://modernizr.com">Modernizr</a>. Grazie ad esso possiamo tranquillamente inserire nei nostri progetti tutte le nuove tecnologie e funzionalità che il web ci mette a disposizione, in modo da gestire i browser che non le supportano e applicando la tecnica del miglioramento progressivo molto facilmente.</p>
<p>Mi ero servito di Modernizr per applicare la tecnica del progressive enhancement in questo articolo su <a title="Come realizzare un menù stile mobile con i CSS3" href="http://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/">come realizzare un menù stile mobile con i CSS3</a>.</p>
<p>Vediamo un esempio di come usare il framework per richiamare tramite javascript una funzione all&#8217;evento di fine animazione o transizione CSS3 di un elemento DOM.</p>
<p>Supponiamo di avere due animazioni e di voler far partire la seconda solo al termine della prima:</p>

		</div> 
	</div> <div class="g-cols"><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h3 style="text-align: center;">Animazione 1: Rotazione in Entrata</h3>

		</div> 
	</div> 
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<pre class="crayon-plain-tag">@-webkit-keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }

  100% {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom;
    -ms-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }

  100% {
    -webkit-transform-origin: left bottom;
    -ms-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate(0);
    -ms-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

.rotateInDownLeft {
  -webkit-animation-name: rotateInDownLeft;
  animation-name: rotateInDownLeft;
}</pre>

		</div> 
	</div> </div><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h3 style="text-align: center;">Animazione 2: Effetto fade in uscita</h3>

		</div> 
	</div> 
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<pre class="crayon-plain-tag">@-webkit-keyframes fadeOutRight {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }

  100% {
    opacity: 0;
    -webkit-transform: translateX(20px);
    transform: translateX(20px);
  }
}

@keyframes fadeOutRight {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -ms-transform: translateX(0);
    transform: translateX(0);
  }

  100% {
    opacity: 0;
    -webkit-transform: translateX(20px);
    -ms-transform: translateX(20px);
    transform: translateX(20px);
  }
}

.fadeOutRight {
  -webkit-animation-name: fadeOutRight;
  animation-name: fadeOutRight;
}</pre>
&nbsp;</p>

		</div> 
	</div> </div></div>
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<p><span style="color: #888888; font-size: 0.7em;">Credits: le animazioni sono state prelevate dal codice sorgente del <a title="Animate.css - Framework per animazioni CSS3" href="https://daneden.me/animate/">framework animate.css</a> (ne avevo parlato in <a title="Animazioni CSS3 cross-browser con animate.css" href="http://www.upcreative.net/animate-css-animazioni-css3-cross-browser/">questo articolo</a>)</span></p>

		</div> 
	</div> 
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<p>Per prima cosa includiamo Modernizr nel documento, all&#8217;interno del tag <em>&lt;head&gt;</em>, come dice la <a title="Documentazione installazione Modernizr" href="http://modernizr.com/docs/#installing">documentazione</a>:</p><pre class="crayon-plain-tag">&lt;script src="js/modernizr.custom.js"&gt;&lt;/script&gt;</pre><p>
Per spiegare il concetto nel modo più semplice applicheremo il primo effetto ad una div, e dopo l&#8217;evento di fine animazione aspetteremo 5 secondi per poi passare alla seconda animazione. Utilizziamo <strong>jQuery</strong> per realizzare tutto ciò:</p><pre class="crayon-plain-tag">$(function(){

   var endAnimationEventName = getEndAnimationName();  

   //aggiungiamo la classe per l'animazione e all'evento di dine animazione
   //eseguiamo (una volta con '.one') la funzione successiva
   $("#mydiv").addClass("rotateInDownLeft").one(endAnimationEventName, function(){
       $(this).text("Aspetto 5s poi me ne vado...");
       setTimeout(function(){
           $("#mydiv").addClass("fadeOutRight");   
       }, 5000); //aspettiamo 5 secondi
   });

});</pre><p>
OK, ma come fa la funzione &#8220;<em>getEndAnimationName</em>&#8221; a riprendere il nome dell&#8217;animazione?</p>
<p>E&#8217; proprio qui che entra in gioco Modernizr: ci serviamo della funzione &#8220;<strong><em>prefix</em></strong>&#8221; per conoscere il prefisso del browser dell&#8217;utente associato alla proprietà passata come input.</p><pre class="crayon-plain-tag">function getEndAnimationName(){
   var endAnimationName = {
       'WebkitAnimation' : 'webkitAnimationEnd',
       'OAnimation' : 'oAnimationEnd',
       'msAnimation' : 'MSAnimationEnd',
       'animation' : 'animationend'
   };
   return endAnimationName[ Modernizr.prefixed( 'animation' ) ];
}</pre><p>
Nella funzione  abbiamo preparato un oggetto con i prefissi di tutti i browser come chiavi e i nomi degli eventi di fine animazione come valori; quindi impostiamo come parametro di ritorno il valore corrispondente alla chiave restituita da Modernizr.</p>
<p>Ovviamente, se abbaiamo bisogno del nome dell&#8217;evento di inizio animazione, la procedura sarà la stessa, modificando i nomi degli eventi con &#8220;<em>webkitAnimationStart</em>&#8220;, &#8220;<em>oAnimationStart</em>&#8220;, &#8220;<em>MSAnimationStart</em>&#8220;, e &#8220;<em>animationStart</em>&#8220;.</p>
<p>Per impostare <strong>l&#8217;evento di fine transizione</strong>, il procedimento sarà analogo:</p><pre class="crayon-plain-tag">function getEndTransitionnName(){
   var endTransitionName = {
	'WebkitTransition' : 'webkitTransitionEnd',
	'OTransition' : 'oTransitionEnd',
	'msTransition' : 'MSTransitionEnd',
	'transition' : 'transitionend'
   };
   return endTransitionName[ Modernizr.prefixed( 'transition' ) ];
}</pre><p>
&nbsp;</p>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<img width="690" height="400" src="http://www.upcreative.net/wp-content/uploads/2013/11/Modernizr-e-CSS3-eventi-fine-animazione.jpg" class="attachment-full" alt="Modernizr-e-CSS3-eventi-fine-animazione" />
		</div> 
	</div> <div class="g-cols"><div class="one-half"><div class="wpb_button align_center"><a href="http://www.upcreative.net/tutorials/30112013Modernizr-e-CSS3-eventi-fine-animazione/"class="g-btn type_primary size_big"><span>Demo</span></a></div>
</div><div class="one-half"><div class="wpb_button align_center"><a href="http://www.upcreative.net/download/2647/"class="g-btn type_primary size_big"><span>Download</span></a></div>
</div></div>
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h2></h2>
<h2>Conculsioni</h2>
<p>Grazie a questa tecnica sono riuscito ad organizzare e coordinare la sinergia tra le view delle applicazioni mobile HTML5 che ho distribuito su App Store. Mi è tornata particolarmente utile per esempio al fine di nascondere o eliminare la div di una view al termine di una animazione di uscita per alleggerire il markup (<a title="Come migliorare le prestazioni delle animazioni CSS3" href="http://www.upcreative.net/performance-css3-consigli-per-ottimizzare-le-animazioni/">migliorando quindi le prestazioni</a>).</p>
<p>E tu? Quale tecniche utilizzi per gestire le animazioni e le transizioni nei tuoi progetti?</p>

		</div> 
	</div> <div class="g-hr">
						<span class="g-hr-h">
							<i class="fa fa-chevron-down"></i>
						</span>
					</div><div class="g-cols"><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<div>Hey! Sto scrivendo un e-book su come aumentare le performance e la fluidità per le tue HTML mobile app! Segui i consigli e le tecniche di cui mi sono servito per creare le mie applicazioni (come <a title="Le mie applicazioni HTML5" href="http://www.upcreative.net/html5-mobile-apps/">Tint, Dieta SI o NO?</a>).</div>
<div>Iscriviti alla newsletter per sapere quando sarà pronto!</div>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<img width="563" height="418" src="http://www.upcreative.net/wp-content/uploads/2013/11/HTML-mobile-accelerato-ebook-cover1.png" class="attachment-full" alt="HTML-mobile-accelerato-ebook-cover" />
		</div> 
	</div> </div><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h4 style="text-align: center;"><strong>HTML Mobile Accelerato (E-book)</strong></h4>
<p style="text-align: center;">Lascia la tua email per ricevere aggiornamenti e sapere quando sarà disponibile</p>
<style><!--
.wysija-submit{margin:0 !important;}
--></style>
<div style="text-align: center;"><div class="widget_wysija_cont shortcode_wysija"><div id="msg-form-wysija-shortcode6ab2cd2b62b2c-4" class="wysija-msg ajax"></div><form id="form-wysija-shortcode6ab2cd2b62b2c-4" method="post" action="#wysija" class="widget_wysija shortcode_wysija">
<p class="wysija-paragraph">
    
    
    	<input type="text" name="wysija[user][email]" class="wysija-input validate[required,custom[email]]" title="Inserisci la tua mail" placeholder="Inserisci la tua mail" value="" />
    
    
    
    <span class="abs-req">
        <input type="text" name="wysija[user][abs][email]" class="wysija-input validated[abs][email]" value="" />
    </span>
    
</p>
<input class="wysija-submit wysija-submit-field" type="submit" value="Tienimi aggiornato/a" />

    <input type="hidden" name="form_id" value="4" />
    <input type="hidden" name="action" value="save" />
    <input type="hidden" name="controller" value="subscribers" />
    <input type="hidden" value="1" name="wysija-page" />

    
        <input type="hidden" name="wysija[user_list][list_ids]" value="4,1" />
    
 </form></div></div>
<div style="text-align: center;"></div>
<div style="text-align: center;"><a title="E-book HTML5 Mobile Accelerato" href="http://www.upcreative.net/html-mobile-accelerato/">Clicca qui per avere maggiori informazioni<i class="fa fa-chevron-right"></i></a></div>

		</div> 
	</div> </div></div></div></div>
</div></div><p>The post <a rel="nofollow" href="https://www.upcreative.net/modernizr-e-css3-gestire-eventi-animazioni-e-transizioni/">Modernizr e CSS3: gestire gli eventi di fine animazione e transizione con javascript</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.upcreative.net/modernizr-e-css3-gestire-eventi-animazioni-e-transizioni/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
