<?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>diploD &#187; flexslider</title>
	<atom:link href="http://www.diplod.it/tag/flexslider/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diplod.it</link>
	<description>by Davide Del Monte</description>
	<lastBuildDate>Fri, 13 Feb 2015 14:26:10 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Javascript per &#8220;pagina in caricamento&#8221;: loading con eleganza.</title>
		<link>http://www.diplod.it/2014/01/13/javascript-per-pagina-in-caricamento-loading-con-eleganza/</link>
		<comments>http://www.diplod.it/2014/01/13/javascript-per-pagina-in-caricamento-loading-con-eleganza/#comments</comments>
		<pubDate>Mon, 13 Jan 2014 15:58:51 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Applicazioni Web]]></category>
		<category><![CDATA[animata]]></category>
		<category><![CDATA[boilerplate]]></category>
		<category><![CDATA[caricamento]]></category>
		<category><![CDATA[flexslider]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[initializr]]></category>
		<category><![CDATA[loading]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1419</guid>
		<description><![CDATA[Sempre più spesso si realizzano siti e applicazioni web che richiedono tempi di caricamento un po' più lunghi del normale, per evitare possibili errori nel codice javascript e rendere l'esperienza utente il più fluida possibile, è buona cosa e giusta mostrare qualcosa durante il caricamento della pagina per poi mostrare il contenuto in toto solo una volta che questo si è generato. Ecco come fare, con eleganza.]]></description>
				<content:encoded><![CDATA[<p>Sempre più spesso si realizzano siti e applicazioni web che richiedono <strong>tempi di caricamento</strong> un po&#8217; più lunghi del normale, per evitare possibili errori nel codice javascript e rendere l&#8217;<strong>esperienza utente</strong> il più <strong>fluida</strong> possibile, è buona cosa e giusta mostrare qualcosa durante il caricamento della pagina per poi mostrare il contenuto in toto solo una volta che questo si è generato.</p>
<p>La <strong>demo</strong>? <a title="Demo - caricamento con gif" href="http://lab.diplod.it/initializr-loading/" target="_blank">Eccola</a>! Provare è sempre più rapido che leggere.. ;) Attenzione che la cosa funziona bene la prima volta, poi la pagina viene messa nella cache e l&#8217;immagine di caricamento sparirà in fretta. Per chi vuole scaricare l&#8217;esempio completo e guardarlo in santa pace, basta fare il download.</p>
<p><a style="padding: 10px; background: #dadada; border: 1px solid #ccc;" href="http://lab.diplod.it/initializr-loading/">DEMO</a> <a style="padding: 10px; background: #dadada; border: 1px solid #ccc;" href="http://www.diplod.it/wp-content/uploads/2014/01/initializr-loading.zip">DOWNLOAD</a></p>
<p>Per fare ciò, la prima cosa necessaria è l&#8217;<strong>immagine di caricamento</strong>, una gif animata è l&#8217;ideale. Si possono generare con le proprie preferenze  tramite tools on line come ad esempio <a title="Preloaders" href="http://preloaders.net/" target="_blank">Preloaders </a>o <a title="Animizer" href="http://animizer.net/" target="_blank">Animizer</a>, col primo si ha a disposizione una nutrita serie di immagini eleganti e predefinite, col secondo si possono creare gif animate a partire da proprie immagini.</p>
<p><span id="more-1419"></span></p>

<a href='http://www.diplod.it/2014/01/13/javascript-per-pagina-in-caricamento-loading-con-eleganza/attachment/9400/'><img width="89" height="128" src="http://www.diplod.it/wp-content/uploads/2014/01/9400.gif" class="attachment-thumbnail" alt="gif creata con Animizer" /></a>
<a href='http://www.diplod.it/2014/01/13/javascript-per-pagina-in-caricamento-loading-con-eleganza/page-loader/'><img width="128" height="128" src="http://www.diplod.it/wp-content/uploads/2014/01/page-loader.gif" class="attachment-thumbnail" alt="gif creata con Preloaders" /></a>

<p>Ora veniamo all&#8217;<strong>HTML</strong>, al <strong>CSS</strong> e al caro <strong>jquery</strong>. Il riferimento principale è la documentazione del <a href="http://learn.jquery.com/using-jquery-core/document-ready/" target="_blank">$(document).ready()</a>.</p>
<p>Per fare le cose fatte bene, ho utilizzato l&#8217;<a title="HTML5 Boilerplate" href="http://html5boilerplate.com/" target="_blank">HTML5 Boilerplate</a>, un blasonato framework di frontend che agevola la scrittura del codice ma soprattutto ci da una solida guida per scriverlo bene. Nel template responsivo generato su <a title="Initializr" href="http://www.initializr.com/" target="_blank">Initializr</a> ho inserito <a title="Flexslider" href="http://www.woothemes.com/flexslider/" target="_blank">flexslider</a>, il famoso slider di woothemes. Ho scelto di impostare l&#8217;ambiente di demo in questo modo per avere a disposizione uno slider con alcune immagini ad alta risoluzione che impieghino un po&#8217; di tempo per caricarsi, ma ovviamente la parte di javascript e html che riguarda il caricamento <strong>può essere utilizzata su qualsiasi sito web</strong>.</p>
<p>Vediamo nel dettaglio la tecnica utilizzata, partendo dall&#8217;<strong>HTML</strong>. Basta inserire questo div subito dopo il tag <em>&lt;body&gt;</em>:</p>
<p><code>&lt;div class="loader"&gt;LOADING...&lt;/div&gt;</code></p>
<p>Visualizziamo la scritta loading, a tutto il resto penserà il foglio di stile.</p>
<p>Questo il <strong>CSS</strong>:</p>
<p><code>.loader {<br />
display: none;<br />
position: fixed;<br />
left: 0px;<br />
top: 0px;<br />
width: 100%;<br />
height: 100%;<br />
z-index: 9999;<br />
background: #fafafa url(../img/page-loader.gif) no-repeat center center;<br />
text-align: center;<br />
color: #999;<br />
}</code></p>
<p>Mettiamo a tutta pagina il div, per coprire tutto il contenuto, con una immagine di caricamento come sfondo. Questo blocco verrà rimosso tramite javascript una volta che il caricamento è avvenuto.</p>
<p>Ecco appunto la parte <strong>javascript</strong> (utilizzando jquery):</p>
<p><code>$( document ).ready(function() {<br />
//una volta caricato il DOM esegui questo codice<br />
//console.log( "DOM ready!" );<br />
$(window).load(function() {<br />
//una volta caricata l'intera pagina (immagini e i frames..) esegui questo codice<br />
//console.log( "Page ready!" );<br />
//faccio scomparire l'immagine di caricamento<br />
$(".loader").fadeOut("slow");<br />
});<br />
});</code></p>
<p>Il costrutto <em>$( document ).ready(function() { .. }</em> ci serve per far eseguire &#8220;qualcosa&#8221; una volta caricato tutto l&#8217;albero (DOM), in questo caso scriviamo semplicemente due righe sulla console del browser; mentre il costrutto  <em>$(window).load(function() { .. }</em> ci serve per fare eseguire &#8220;qualcosa&#8221; una volta caricata l&#8217;intera pagina, comprese appunto le immagini o roba contenuta negli iframe. E&#8217; qui, che oltre a scrivere un log sulla console, andiamo a rimuovere il div di caricamento che copriva tutto il contenuto della pagina.</p>
<p><strong>E&#8217; tutto ciò che serve!</strong></p>
<p>NB: ovviamente, se si vuole iniziare a far vedere la pagina e i suoi contenuti durante il caricamento, la stessa tecnica può essere applicata a un div che non copra tutta la pagina, ma ad esempio solo il box dello slider dove si caricheranno le immagini..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2014/01/13/javascript-per-pagina-in-caricamento-loading-con-eleganza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flexslider applicato coi Rio: uno slider jquery davvero flessibile.</title>
		<link>http://www.diplod.it/2012/10/01/flexslider-applicato-coi-rio-uno-slider-jquery-davvero-flessibile/</link>
		<comments>http://www.diplod.it/2012/10/01/flexslider-applicato-coi-rio-uno-slider-jquery-davvero-flessibile/#comments</comments>
		<pubDate>Mon, 01 Oct 2012 14:07:32 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[flexslider]]></category>
		<category><![CDATA[i rio]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[rio]]></category>
		<category><![CDATA[slider]]></category>
		<category><![CDATA[slideshow]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1359</guid>
		<description><![CDATA[Di slider e slideshow ce ne sono una infinità. Col tempo ne ho provati e utilizzati diversi, ma come flexslider ce ne sono pochi. Credo di aver finalmente trovato ciò che cercavo: flessibile, altamente configurabile ed adattabile, semplice, e soprattutto funzionante anche con dispositivi touch (iphone, ipad, android, ecc..). Si tratta di una creazione di [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Di <strong>slider</strong> e <strong>slideshow </strong>ce ne sono una infinità. Col tempo ne ho provati e <a title="Slideshow wordpress" href="http://www.diplod.it/2009/09/06/wordpress-creare-uno-sliseshow-con-gli-articoli-in-rilievo-stile-magazine/" target="_self">utilizzati </a>diversi, ma come <strong><a title="Flexslider" href="http://www.woothemes.com/flexslider/" target="_blank">flexslider</a> </strong>ce ne sono pochi. Credo di aver finalmente trovato ciò che cercavo: flessibile, altamente configurabile ed adattabile, semplice, e soprattutto funzionante anche con dispositivi <em>touch </em>(iphone, ipad, android, ecc..). Si tratta di una creazione di <a title="Woothemes" href="http://www.woothemes.com" target="_blank">Woothemes</a>, rilasciata gratuitamente e utilizzabile da chiunque. Per vederlo subito all&#8217;opera, nel modo in cui l&#8217;ho impiegato, basta aprire il sito dei <a title="i Rio" href="http://www.rioofficial.it" target="_self">Rio</a> o di <a title="Bluebeet recording studio" href="http://www.bluebeet.it" target="_blank">Bluebeet Studio</a>. Questo per dire che ho aggiornato il portfolio, ogni tanto è bene farlo. ;)</p>
<p>Per capire come utilizzare lo slideshow di immagini si può dare un&#8217;occhiata alle demo sul sito ufficiale, ma credo che il meglio di questo slider sia nelle possibilità di utilizzo con pezzi di codice formattato (con testo e immagini), per poter creare fluide e accattivanti presentazioni di news o quant&#8217;altro.</p>
<p>Andiamo subito al sodo e vediamo come si può utilizzare all&#8217;interno di un tema <strong>wordpress</strong> per presentare articoli o elementi di altro tipo.</p>
<p><span id="more-1359"></span></p>
<p>Ci sono tre cose fondamentali: il <strong>codice javascript</strong>, il <strong>codice html</strong> e il <strong>codice CSS</strong>. Partiamo con javascript; all&#8217;interno del tag &lt;head&gt; dovremo mettere questo pezzo di codice:</p>
<p><code> &lt;script type="text/javascript"&gt;<br />
$(window).load(function() {<br />
$('#flexslider').flexslider({<br />
animation: "slide",<br />
controlsContainer: "#flex-container",<br />
prevText: "Prec",<br />
nextText: "Succ"    });<br />
});<br />
</code></p>
<p>Mentre nel codice <strong>php </strong>che presenta gli articoli, ad esempio nel file <em>home.php</em>, dovremo utilizzare questo:</p>
<p><code><br />
&lt;?php query_posts('showposts=6&amp;cat=3'); //prendo gli ultimi 6 articoli delle top news ?&gt;<br />
&lt;?php if (have_posts()) : ?&gt;<br />
&lt;div&gt;<br />
&lt;div id="flex-container"&gt;<br />
&lt;div id="flexslider"&gt;<br />
&lt;ul&gt;<br />
&lt;?php while (have_posts()) : the_post(); ?&gt;<br />
&lt;li&gt;<br />
&lt;h1&gt;&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h1&gt;<br />
&lt;div&gt;<br />
&lt;?php if ( has_post_thumbnail()) : ?&gt;<br />
&lt;?php the_post_thumbnail('medium', array('class' =&gt; 'img-news')); ?&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php the_excerpt(); ?&gt;<br />
&lt;a href="&lt;?php the_permalink() ?&gt;" title="&lt;?php the_title(); ?&gt;"&gt;Leggi tutto...&lt;/a&gt;<br />
&lt;div&gt;&lt;div data-href="&lt;?php the_permalink() ?&gt;" data-send="false" data-layout="button_count" data-width="150" data-show-faces="false" data-font="lucida grande"&gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/li&gt;<br />
&lt;?php endwhile; ?&gt;<br />
&lt;/ul&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php // Reset Query<br />
wp_reset_query(); ?&gt;<br />
</code></p>
<p>Il mestiere di questo pezzo di codice non è altro che recuperare gli ultimi 6 articoli di una determinata categoria (con ID=3), tramite la function <em>query_posts()</em>; per poi presentare ogni articolo con la sua immagine in evidenza e il suo riassunto. Al di là delle classi css attribuite agli elementi, che sono comunque poco rilevanti per il nostro esempio, ciò che mi preme far notare è che tutti questi elementi stanno racchiusi in un elemento di lista <em>&lt;li&gt;</em>, che sarà uno dei 6 slide che ruoteranno.</p>
<p>Veniamo ora al bello: il<strong> foglio di stile</strong>. Di seguito il mio CSS riadattato partendo da quello di default.<br />
<code><br />
/* jQuery FlexSlider v2.0 */<br />
/* Browser Resets */<br />
.flex-container a:active,<br />
.flexslider a:active,<br />
.flex-container a:focus,<br />
.flexslider a:focus  {outline: none;}<br />
.slides,<br />
.flex-control-nav,<br />
.flex-direction-nav {margin: 0; padding: 0; list-style: none;}<br />
/* FlexSlider Necessary Styles<br />
*********************************/<br />
.flexslider {margin: 0; padding: 0;}<br />
.flexslider .slides &gt; li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping */<br />
/*.flexslider .slides img {width: 100%; display: block;} */<br />
.flex-pauseplay span {text-transform: capitalize;}<br />
/* Clearfix for the .slides element */<br />
.slides:after {content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;}<br />
html[xmlns] .slides {display: block;}<br />
* html .slides {height: 1%;}<br />
/* No JavaScript Fallback */<br />
/* If you are not using another script, such as Modernizr, make sure you<br />
* include js that eliminates this class on page load */<br />
.no-js .slides &gt; li:first-child {display: block;}<br />
/* FlexSlider Default Theme<br />
*********************************/<br />
.flex-container { position: relative;}<br />
.flexslider {margin: 0 0 5px 0; position: relative;}<br />
.flex-viewport {max-height: 2000px; -webkit-transition: all 1s ease; -moz-transition: all 1s ease; transition: all 1s ease;}<br />
.loading .flex-viewport {max-height: 300px;}<br />
.flexslider .slides {zoom: 1;}<br />
.carousel li {margin-right: 5px}<br />
/* Direction Nav */<br />
.flex-direction-nav { display: block; position: absolute; top: 50%; background: transparent; width: 100%;<br />
opacity: 0.2;<br />
transition:opacity 1s;<br />
-moz-transition:opacity 1s; /* Firefox 4 */<br />
-webkit-transition:opacity 1s; /* Safari and Chrome */<br />
-o-transition:opacity 1s; /* Opera */ }<br />
.flex-container .flex-direction-nav:hover { opacity: 1; }<br />
.flex-direction-nav a {width: 30px; height: 30px; margin: -30px 0 0; display: block; background: url(../images/bg_direction_nav.png) no-repeat 0 0; position: absolute; cursor: pointer; text-indent: -9999px; }<br />
.flex-direction-nav .next {background-position: 100% 0; right: 5px;}<br />
.flex-direction-nav .prev {left: 5px;}<br />
/* Control Nav */<br />
.flex-control-nav {width: 100%; position: relative; bottom: 0px; text-align: center;}<br />
.flex-control-nav li {margin: 0 6px; display: inline-block; zoom: 1; *display: inline;}<br />
.flex-control-nav li a {width: 11px; height: 11px; display: block; background: #666; background: rgba(0,0,0,0.5); cursor: pointer; text-indent: -9999px; -webkit-border-radius: 20px; -moz-border-radius: 20px; -o-border-radius: 20px; border-radius: 20px; box-shadow: inset 0 0 3px rgba(0,0,0,0.3);}<br />
.flex-control-nav li a:hover { background: #333; background: rgba(0,0,0,0.7); }<br />
.flex-control-nav li a.active { background: #000; background: rgba(0,0,0,0.9); cursor: default; }<br />
.flex-control-paging li a {width: 11px; height: 11px; display: block; background: #666; background: rgba(0,0,0,0.5); cursor: pointer; text-indent: -9999px; -webkit-border-radius: 20px; -moz-border-radius: 20px; -o-border-radius: 20px; border-radius: 20px; box-shadow: inset 0 0 3px rgba(0,0,0,0.3);}<br />
.flex-control-paging li a:hover { background: #333; background: rgba(0,0,0,0.7); }<br />
.flex-control-paging li a.active { background: #000; background: rgba(0,0,0,0.9); cursor: default; }<br />
.flex-control-thumbs {margin: 5px 0 0; position: static; overflow: hidden;}<br />
.flex-control-thumbs li {width: 25%; float: left; margin: 0;}<br />
.flex-control-thumbs img {width: 100%; display: block; opacity: .7; cursor: pointer;}<br />
.flex-control-thumbs img:hover {opacity: 1;}<br />
.flex-control-thumbs .active {opacity: 1; cursor: default;}<br />
</code></p>
<p>Con un pizzico di CSS3 è possibile fare in modo che le frecce di navigazione appaiano evidenti solo al passaggio del mouse, mentre rimangano in trasparenza mentre scorrono le notizie. Il risultato finale si può <a title="Rio" href="http://www.rioofficial.it/" target="_blank">vedere qui</a>.</p>
<p>Buono slideshow a tutti. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2012/10/01/flexslider-applicato-coi-rio-uno-slider-jquery-davvero-flessibile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
