 
 
 <?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; stili</title>
	<atom:link href="https://www.upcreative.net/tag/stili/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>CSS3 Tutorial: Come creare un effetto overlay iOS 7 blur</title>
		<link>https://www.upcreative.net/css3-tutorial-creare-effetto-overlay-ios-7-blur/</link>
		<comments>https://www.upcreative.net/css3-tutorial-creare-effetto-overlay-ios-7-blur/#comments</comments>
		<pubDate>Mon, 30 Sep 2013 17:48:21 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[iOS 7]]></category>
		<category><![CDATA[stili]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=1889</guid>
		<description><![CDATA[<p>The post <a rel="nofollow" href="https://www.upcreative.net/css3-tutorial-creare-effetto-overlay-ios-7-blur/">CSS3 Tutorial: Come creare un effetto overlay iOS 7 blur</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>Recentemente è stata rilasciata la versione definitiva del tanto atteso sistema operativo <a title="iOS 7 operating system" href="http://www.upcreative.net/tag/ios-7/"><strong>iOS 7</strong></a>  targato <a title="Apple" href="http://www.apple.com">Apple</a>, con il suo design flat, le nuove icone e tutto il bagaglio di innovazioni presentate da Tim Cook durante il <a href="http://www.apple.com/apple-events/september-2013/">Keynote tenutosi a Settembre</a> 2013. Uno degli aspetti principali che caratterizza il design si iOS 7 è determinato dall&#8217;uso costante dell&#8217;<strong>effetto blur,</strong> impiegato sui vari background che compongono l&#8217;interfaccia utente.</p>
<p>In questo articolo cercheremo di riprodurre questo effetto tramite l&#8217;esclusivo utilizzo di funzioni <a title="CSS3" href="http://www.upcreative.net/tag/css3/"><strong>CSS3</strong></a> avanzate, senza usare alcun tipo di immagine. Il risultato dell&#8217;esperimento sarà quello di creare una pagina con una barra di navigazione contenente un pulsante che servirà ad attivare il nostro overlay, ed un altro, contenuto all&#8217;interno dello stesso overlay, che avrà il compito di disattivarlo. L&#8217;obiettivo di quest&#8217;ultimo è quello di apparire con effetto slide sopra il contenuto del documento.</p>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/09/CSS3-Tutorial-Come-creare-un-effetto-overlay-iOS-7-blur.jpg"><img class="alignnone size-full wp-image-1895" alt="CSS3-Tutorial--Come-creare-un-effetto-overlay-iOS-7-blur" src="http://www.upcreative.net/wp-content/uploads/2013/09/CSS3-Tutorial-Come-creare-un-effetto-overlay-iOS-7-blur.jpg" width="690" height="340" /></a></p>

		</div> 
	</div> </div></div><div class="g-cols"><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			<div class="wpb_button align_center"><a href="http://www.upcreative.net/tutorials/30092013-CSS3-overlay-iOS-7-blur/"class="g-btn type_primary size_big"><span><i class="fa fa-icon-eye-open"></i>Demo</span></a></div>
 
		</div> 
	</div> </div><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			<div class="wpb_button align_center"><a href="http://www.upcreative.net/download/1898/"class="g-btn type_primary size_big"><span><i class="fa fa-icon-download-alt"></i>Download</span></a></div>
 
		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h3>Il markup HTML</h3>
<p>Come primo passaggio creiamo il nostro markup html, comprensivo della barra di navigazione, del contenuto della pagina, e della div di overlay:</p><pre class="crayon-plain-tag">&lt;nav&gt;
		&lt;h1 class="title"&gt;Overlay Blur effect&lt;/h1&gt;
		&lt;button class="open-overlay"&gt;Show&lt;/a&gt;
	&lt;/nav&gt;
	&lt;article&gt;

		&lt;ul class='list'&gt;
			&lt;li class="show-detail"&gt;
				&lt;img src="img/1.jpg" height="80px"&gt;
				&lt;div&gt;
					&lt;h3&gt;Lorem ipsum&lt;/h3&gt;
					&lt;h4&gt;Radioactive&lt;/h4&gt;
					&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.&lt;/p&gt;
				&lt;/div&gt;
			&lt;/li&gt;
			&lt;li class="show-detail"&gt;
				&lt;aside&gt;
					&lt;img src="img/2.jpg" height="80px"&gt;
				&lt;/aside&gt;
				&lt;div&gt;
					&lt;h3&gt;Lorem ipsum&lt;/h3&gt;
					&lt;h4&gt;Radioactive&lt;/h4&gt;
					&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.&lt;/p&gt;
				&lt;/div&gt;
			&lt;/li&gt;
			&lt;li class="show-detail"&gt;
				&lt;aside&gt;
					&lt;img src="img/3.jpg" height="80px"&gt;
				&lt;/aside&gt;
				&lt;div&gt;
					&lt;h3&gt;Lorem ipsum&lt;/h3&gt;
					&lt;h4&gt;Radioactive&lt;/h4&gt;
					&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.&lt;/p&gt;
				&lt;/div&gt;
			&lt;/li&gt;
			&lt;li class="show-detail"&gt;
				&lt;aside&gt;
					&lt;img src="img/4.jpg" height="80px"&gt;
				&lt;/aside&gt;
				&lt;div&gt;
					&lt;h3&gt;Lorem ipsum&lt;/h3&gt;
					&lt;h4&gt;Radioactive&lt;/h4&gt;
					&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.&lt;/p&gt;
				&lt;/div&gt;
			&lt;/li&gt;
		&lt;/ul&gt;

	&lt;/article&gt;
	&lt;section class="overlay"&gt;

		&lt;button class="close-overlay"&gt;Hide&lt;/a&gt;

	&lt;/section&gt;</pre><p>
&nbsp;</p>
<p>Per fare ciò abbiamo utilizzato elementi <a href="http://www.upcreative.net/tag/html5/">html5</a> come <strong>nav</strong> ed <strong>article</strong>  e <strong>section</strong>, ma è possibile utilizzare  anche altri elementi con attributo css &#8220;<em>display:block</em>&#8220;. Abbiamo inoltre inserito all&#8217;interno del <em>tag article, </em>una lista con stili simili ad iOS7 (giusto per rimanere nel tema).</p>
<h3>Il foglio di stile CSS</h3>
<p>Prima di arrivare al passaggio più importante, ovvero attribuire ai vari elementi gli stili necessari per rendere possibile l&#8217;effetto overlay con blur, cerchiamo di dare alla pagina un aspetto che si avvicini più possibile alla grafica di iOS 7:</p><pre class="crayon-plain-tag">body, html{
	height: 100%;
	font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
	font-weight: 100;
	overflow: hidden;
}

nav {
  top: 0;
  height: 44px;
  padding:0;	  	  
  background-color: #F7F7F7;
  border-bottom: 1px solid #A7A7AA;	  	  
  position: relative;  
}	
nav .title {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  margin:0;
  width: 100%;
  font-size: 18px;
  font-weight: 100;
  line-height: 44px;
  color: #333;
  text-align: center;
  white-space: nowrap;
}

nav .title + button {
  position: absolute; 
  top: 5px;
  right: 5px;
  z-index: 10; 

  border-radius:4px;
  padding:6px 8px;
  border:none;	
  color: #397AFC;
  background: transparent;	  
}
nav .title + button:active{
	color: #7BB6FB;
}

article {
  position: fixed;
  top: 45px;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: auto;
  background: #EFEFF4;
  padding-top:20px;
}

.list {
   list-style: none;
   margin: 0 0 10px 0;
   padding: 0;
   border-top: solid 1px #c8c8c8;
   border-bottom: solid 1px #c8c8c8;
   background-color: #fff;
   overflow: hidden;
   width: 100%;
}

.list &gt; li {
   padding: 13px 15px 13px 15px;
   -webkit-transition: all .3s ease-out;
   -moz-transition: all .3s ease-out;
   transition: all .3s ease-out;
   position: relative;
   background-color: #fff;
   font-size: 12pt;
}
.list img{
	float:left;
	margin: 0 10px 10px 0;
}
.list h3,
.list h4,
.list p{
	font-size: 0.9em;
	margin:5px 0;
}

.list &gt; li::before {
   content: '';
   display: block;
   position: absolute;
   bottom: 0px;
   left: 15px;
   right: 0px;
   border-bottom: solid 1px #c8c8c8;
}

.list &gt; li.show-detail::after {
   content: 'i';
   display: block;
   height: 20px;
   width: 22px;
   border-radius: 20px;
   border: solid 1px #007aff;
   color: #007aff;
   font: bold 14px/0 'Times', serif;
   -webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
   box-sizing: border-box;
   padding: 10px 8px;
   position: absolute;
   top: 10px;
   right: 15px;
}</pre><p>
Applicando questa porzione di codice abbiamo attribuito al documento il font &#8220;<strong>HelveticaNeue Light</strong>&#8220;, tipico del flat design targato Apple, abbiamo posizionato e &#8220;stilizzato&#8221; la barra di navigazione e gli elementi in essa contenuti (come titolo e pulsante d&#8217;azione) ed infine abbiamo posizionato il corpo della pagina, costituito appunto dal tag &#8220;<em>article</em>&#8220;.</p>
<p>Passiamo invece agli stili CSS che caratterizzano il risultato del nostro esperimento:  aggiungiamo la proprietà &#8220;<a href="http://www.w3schools.com/css3/css3_transitions.asp"><strong>transition</strong></a>&#8221; all&#8217;elemento article, specificando che sia applicata all&#8217;attributo <strong>filter</strong>.</p><pre class="crayon-plain-tag">article {
  position: fixed;
  top: 45px;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: auto;
  background: #EFEFF4;
  padding-top:20px;

  -webkit-transition: -webkit-filter .15s ease;
          		  transition: filter .15s ease;
}</pre><p>
&nbsp;</p>
<p>Poi aggiungiamo un blur di 15 px al contenuto della pagina nel caso in cui il body abbia la classe &#8220;<em>open-overlay</em>&#8220;, rimuovendolo invece nel caso in cui abbia la classe &#8220;<em>close-overlay</em>&#8220;.</p><pre class="crayon-plain-tag">body.open-overlay article{
	-webkit-filter:blur(15px);
	filter: blur(15px);
}

body.close-overlay article{
	-webkit-filter:none;
	filter:none;
}</pre><p>
&nbsp;</p>
<p>Ora l&#8217;elemento più importante: l&#8217;overlay. Attribuiamo al nostro overlay (tag section) una posizione assoluta nei confronti del documento e posizioniamolo in modo tale che non copra la barra di navigazione, poi aggiungiamo le altre proprietà fondamentali:</p>
<ol>
<li>L&#8217;attributo <em>visibility:hidden, </em>perchè nello &#8220;stato normale&#8221; l&#8217;overlay non deve essere visibile</li>
<li>L&#8217;attributo <em>backface-visibility:hidden</em> (nei suoi adattamenti per la compatibilità dei vari browser): con il quale miglioriamo le prestazioni di rendering nel caso di trasformazioni CSS prevenendo quest&#8217;ultimo dall&#8217;essere eseguito per la parte posteriore dell&#8217;elemento</li>
<li>L&#8217;attributo<em> transform:translate3d(0,0,0) </em>con il quale <strong>miglioriamo la fluidità della nostra animazione</strong> &#8220;<strong>forzando&#8221; l&#8217;utilizzo della GPU</strong></li>
<li>L&#8217;attributo &#8220;<em>animatior</em>&#8220;, con il quale comunichiamo all&#8217;overlay quale genere di animazione eseguire, quanto tempo deve durare, e che tipo di &#8220;andamento&#8221; eseguire (lineare, swing ecc.)</li>
<li>L&#8217;istruzione &#8220;<strong><a href="http://www.w3schools.com/css3/css3_animations.asp"><em>keyframe</em></a>&#8220;, </strong>con la quale definiamo le animazioni</li>
</ol>
<pre class="crayon-plain-tag">section {
  position: absolute;
  left: 0;
  top: 44px;	  
  right: 0;	
  bottom:0;  
  background-color: rgba(156,159,164,.5);	  
  padding:20px;
  text-align: center;

  visibility: hidden;

  /* migliora le prestazioni prevenendo il render della parte 'posteriore' dell'elemento */
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
   backface-visibility: hidden;

   /* accelerazione hardware */
   -webkit-transform: translate3d(0,0,0);
   -moz-transform: translate3d(0,0,0);
   -ms-transform: translate3d(0,0,0);
   transform: translate3d(0,0,0);			   
}	

body.open-overlay section{
	-webkit-animation: showFromBottom .25s ease both;
	-moz-animation: showFromBottom .25s ease both;
	animation: showFromBottom .25s ease both;

	visibility: visible;
}

body.close-overlay section{
	-webkit-animation: hideToBottom .25s ease both;
	-moz-animation: hideToBottom .25s ease both;
	animation: hideToBottom .25s ease both;
}

/* definizione delle animzioni dell'overlay  */

	@-webkit-keyframes showFromBottom {
		from { -webkit-transform: translateY(100%); }
	}
	@-moz-keyframes showFromBottom {
		from { -moz-transform: translateY(100%); }
	}
	@keyframes showFromBottom {
		from { transform: translateY(100%); }
	}

	@-webkit-keyframes hideToBottom {
		to { -webkit-transform: translateY(100%); }
	}
	@-moz-keyframes hideToBottom {
		to { -moz-transform: translateY(100%); }
	}
	@keyframes hideToBottom {
		to { transform: translateY(100%); }
	}</pre>
Apro una piccola parentesi in merito: devo dire che mi piace molto utilizzare la terza delle proprietà elencate, che permette, nel caso di dispositivi mobile, di raggiungere o perlomeno di avvicinarsi alle prestazioni delle applicazioni native.</p>
<p>Tornando a noi, vediamo come nel caso in cui il body abbia la classe &#8220;<em>open-overlay</em>&#8221; o &#8220;<em>close-overlay</em>&#8220;, il tag section debba eseguire le due animazioni rispettivamente di comparsa e scomparsa dichiarate sotto il codice &#8220;<em><strong>keyframes</strong></em>&#8221; : <strong>showFromBottom</strong> e <strong>hideToBottom</strong>. Abbiamo inoltre modificato l&#8217;attributo &#8220;<em>visibility:visible</em>&#8221; per rendere visibile il pannello.</p>
<p>Il risultato dovrebbe quindi essere il seguente:</p>
<ol>
<li>Nel caso di un body con classe &#8220;open-overlay&#8221; dovremmo vedere l&#8217;animazione dell&#8217;overlay assieme a quella del blur del documento.</li>
<li>Nel caso di un body con classe &#8220;close-overlay&#8221; dovremmo vedere esattamente le due animazioni opposte, per poi tornare allo stato iniziale.</li>
</ol>
<p>Passiamo quindi all&#8217;ultima parte.</p>
<h3>Il codice Javascript</h3>
<p>Per scrivere meno righe di javascript, incorporiamo nel documento due librerie: jQuery e Modernizr, rispettivamente per effettuare il bind degli eventi del click dei pulsanti di apertura e chiusura, e per ricavare il nome dell&#8217;evento di fine animazione, che varia a seconda del browser.</p><pre class="crayon-plain-tag">var endAnimationName = {
	'WebkitAnimation' : 'webkitAnimationEnd',
	'OAnimation' : 'oAnimationEnd',
	'msAnimation' : 'MSAnimationEnd',
	'animation' : 'animationend'
};
var animationName = endAnimationName[ Modernizr.prefixed( 'animation' ) ];

$(function(){
   //bind dell'evento click sul pulsante di attivazione 
   $("button.open-overlay").on("click", function(){
	   $("body").addClass("open-overlay");
   });
   $("button.close-overlay").on("click", function(){
	   $("body").addClass("close-overlay").on(animationName, function(){				   
		   $(this).off(animationName)
		   .removeClass("open-overlay close-overlay");
	   });
   });
});</pre><p>
Alla fine dell&#8217;animazione di chiusura, togliamo al body entrambe le classi &#8220;open-overlay&#8221;  e &#8220;close-overlay&#8221;, per ritornare così allo stato di partenza.</p>
<h3>Conclusioni finali</h3>
<p>Purtroppo questo esperimento non è ancora ottimizzato con tutti i browser (per esempio nel caso di Firefox non è possibile applicare l&#8217;effetto blur al contenuto della pagina con il semplice attributo &#8220;<em>filter:blur</em>&#8221; ma solo servendosi degli <strong>effetti svg</strong>) e inoltre si tratta in fin dei conti di un workaround, in quanto l&#8217;effetto sul documento non è scaturito dalla sovrapposizione dell&#8217;overlay bensì da uno stile completamente separato. Tuttavia spero che questo tutorial ti sia d&#8217;aiuto per imparare nuove regole CSS3 e che magari potrai utilizzarlo nel tuo prossimo progetto!</p>

		</div> 
	</div> </div></div><div class="g-cols"><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			<div class="wpb_button align_center"><a href="http://www.upcreative.net/tutorials/30092013-CSS3-overlay-iOS-7-blur/"class="g-btn type_primary size_big"><span><i class="fa fa-icon-eye-open"></i>Demo</span></a></div>
 
		</div> 
	</div> </div><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			<div class="wpb_button align_center"><a href="http://www.upcreative.net/download/1898/"class="g-btn type_primary size_big"><span><i class="fa fa-icon-download-alt"></i>Download</span></a></div>
 
		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<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>

		</div> 
	</div> 
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<p>I am text block. Click edit button to change this text.</p>

		</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>
</div></div><p>The post <a rel="nofollow" href="https://www.upcreative.net/css3-tutorial-creare-effetto-overlay-ios-7-blur/">CSS3 Tutorial: Come creare un effetto overlay iOS 7 blur</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.upcreative.net/css3-tutorial-creare-effetto-overlay-ios-7-blur/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter Bootstrap 3 autocomplete &#8211; come realizzarlo con JQuery UI</title>
		<link>https://www.upcreative.net/twitter-bootstrap-3-autocomplete-con-jquery-ui/</link>
		<comments>https://www.upcreative.net/twitter-bootstrap-3-autocomplete-con-jquery-ui/#comments</comments>
		<pubDate>Mon, 09 Sep 2013 17:05:39 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[stili]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[twitter bootstrap]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=1609</guid>
		<description><![CDATA[<p>The post <a rel="nofollow" href="https://www.upcreative.net/twitter-bootstrap-3-autocomplete-con-jquery-ui/">Twitter Bootstrap 3 autocomplete &#8211; come realizzarlo con JQuery UI</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">
			Tutti i designer e gli sviluppatori web hanno utilizzato o perlomeno conoscono gli utilissimi widget di <a title="jQuery UI" href="http://jqueryui.com">jQuery UI</a>. In questo articolo voglio parlarvi di come personalizzare gli stili ed il markup del widget <a title="jQuery UI automplete widget" href="http://jqueryui.com/autocomplete/">autocomplete</a>, che pur essendo uno dei plugin più completi, presenta un aspetto al quanto obsoleto. Cercheremo in particolare di realizzare un <a title="Twitter Bootstrap" href="http://getbootstrap.com">twitter bootstrap 3 autocomplete</a> servendoci del widget di jQuery UI.</p>
<p><img class="alignnone  wp-image-1645" src="http://www.upcreative.net/wp-content/uploads/2013/09/Bootstrap3-jQUeryUI-e1378745985638.jpg" alt="Bootstrap3-jQUeryUI" width="100%" height="auto" /></p>

		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			<div class="wpb_button align_center"><a href="http://www.upcreative.net/tutorials/09092013-jquery-autcomplete-bootstrap/"class="g-btn type_primary size_big"><span><i class="fa fa-icon-eye-open"></i>Demo</span></a></div>
 
		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			Aiutami a condividere la risorsa per ottenere il <strong>download</strong>:</p>

		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width"><div class="g-hr">
						<span class="g-hr-h">
							<i class="fa fa-chevron-down"></i>
						</span>
					</div>
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5>Prima di iniziare</h5>
<p>In alcuni progetti, soprattutto per quelli in cui alcune risorse come il tempo o anche il budget del cliente vengono a mancare, può tornare molto utile servirsi di <strong>temi twitter bootstrap 3 premium</strong>. A tal proposito te ne voglio proporre alcuni di alta qualità che io stesso ho usato per alcuni miei lavori:
		</div> 
	</div> <div class="g-cols"><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/rioleme-responsive-multipurpose-wordpress-theme/7041517?ref=Colddesign">RioLeme &#8211; Responsive Multi-Purpose WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/rioleme-responsive-multipurpose-wordpress-theme/7041517?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/rioleme-preview-image-590x300.__large_preview.jpg" class="attachment-full" alt="rioleme-preview-image-590x300.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/alamak-responsive-one-page-portfolio-theme/6502151?ref=Colddesign">Alamak &#8211; Responsive One Page Portfolio Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/alamak-responsive-one-page-portfolio-theme/6502151?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/alamak-preview.__large_preview.jpg" class="attachment-full" alt="alamak-preview.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/moose-multipurpose-responsive-wordpress-theme/6928835?ref=Colddesign">Moose &#8211; Multipurpose Responsive WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/moose-multipurpose-responsive-wordpress-theme/6928835?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/preview.__large_preview.png" class="attachment-full" alt="preview.__large_preview" /></a>
		</div> 
	</div> </div></div><div class="g-cols"><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/-slowave-multipurpose-responsive-wordpress-theme/6870792?ref=Colddesign">Slowave &#8211; Multipurpose Responsive WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/-slowave-multipurpose-responsive-wordpress-theme/6870792?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/1.__large_preview.png" class="attachment-full" alt="1.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/floyd-one-page-parallax-wordpress-theme/7081098?ref=Colddesign">Floyd &#8211; One Page Parallax WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/floyd-one-page-parallax-wordpress-theme/7081098?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/01_preview.__large_preview.png" class="attachment-full" alt="01_preview.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/nativechurch-multi-purpose-wordpress-theme/7082446?ref=Colddesign">NativeChurch &#8211; Multi Purpose WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/nativechurch-multi-purpose-wordpress-theme/7082446?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/preview_image1_large_preview.__large_preview.jpg" class="attachment-full" alt="preview_image1_large_preview.__large_preview" /></a>
		</div> 
	</div> </div></div><div class="g-hr">
						<span class="g-hr-h">
							<i class="fa fa-chevron-down"></i>
						</span>
					</div></div></div><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h1>Twitter Bootstrap 3 autocomplete: iniziamo!</h1>
<h3>Cosa includere nel documento</h3>
<p>Come prima cosa andremo ad inserire nel nostro documento html le librerie css e javascript necessarie:</p>
<p><strong>CSS:</strong></p>
<ul>
<li>bootstrap.css</li>
<li>demo.css (il nostro foglio di stile)</li>
</ul>
<p><strong>FILE JS:</strong></p>
<ul>
<li>jquery.js (versione 1.10.2)</li>
<li>jquery-ui.js (per l&#8217;autocomplete)</li>
<li>demo.js (il nostro file javascript)</li>
</ul>
<p>Per questo esempio ho escluso tutti i file js del Bootstrap e qualunque tema css del jQuery UI, in quanto il nostro intento è quello di combinare appunto gli stili del primo con le funzionalità del secondo; tuttavia è possibile raggiungere l&#8217;obiettivo anche includendo le due librerie al completo.</p>
<p>I file &#8220;demo.css&#8221; e &#8220;demo.js&#8221; sono rispettivamente il foglio di stile e il javascript del nostro esempio.</p>
<h3>Il markup HTML</h3>
<pre class="crayon-plain-tag">&lt;div class="row"&gt;

	    &lt;div class="col-sm-6 col-md-6 col-md-offset-3"&gt;

		    &lt;form id="search-form" role="form"&gt;
			  &lt;div class="form-group"&gt;
			    &lt;label for="spotlight"&gt;Cerca&lt;/label&gt;
			    &lt;input type="email" class="form-control" id="spotlight" placeholder="Cerca" /&gt;
			  &lt;/div&gt;

		    &lt;/form&gt;

	    &lt;/div&gt;	    

    &lt;/div&gt;</pre>
&nbsp;</p>
<p>Aabbiamo usato un input con id &#8220;spotlight&#8221; all&#8217;interno di un form, il tutto contenuto nella colonna di una griglia Bootstrap, con offset 3 e larghezza 6: il risultato è un campo di testo responsive centrato nel mezzo del documento, sia per dispositivi desktop che  mobile.</p>
<h3>Javascript: demo.js</h3>
<pre class="crayon-plain-tag">$(function() {

    var availableTags = [
      "ActionScript",
      "AppleScript",
      "AppleScript2",
      "AppleScript3",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];

    $("#spotlight").autocomplete({
		source: availableTags,
		appendTo: $("form:first")
	});

	$("#spotlight").data( "ui-autocomplete" )._renderMenu = function( ul, items ) {
		var that = this;		
		ul.attr("class", "nav nav-pills nav-stacked");
		$.each( items, function( index, item ) {
			that._renderItemData( ul, item );
		});
	};	    

});</pre>
&nbsp;</p>
<p>Prima di tutto abbiamo definito l&#8217;array dei termini possibili di ricerca, poi abbiamo inizializzato il campo con id &#8220;spotlight&#8221; per l&#8217;autocomplete del jQuery UI: qui si noti in particolare come sia stato necessario &#8220;appendere&#8221; il menù creato dal plugin al form tramite il parametro &#8220;appendTo&#8221;.</p>
<p>Il passo successivo è stato quello di modificare la funzione &#8220;<strong>_renderMenu</strong>&#8221; del plugin, ovvero quella funzione che ha il compito di inserire i vari risultati di ricerca alo&#8217;interno del menù sottoforma di entità HTML. Il procedimento è molto semplice: alla funzione vengono passati come parametri l&#8217;elemento del menu che sarà appeso al form, e gli elementi del risultato della ricerca in formato JSON. All&#8217;interno di un loop si scorrono poi tutti i risultati e viene richiamata la funzione &#8220;<strong>_renderItemData</strong>&#8221; che ha il compito di creare per ogni risultato l&#8217;elemento HTML e di aggiungerlo alla lista. Prima del loop noi sostituiamo semplicemente la classe del menu del jQuery UI con quelle del Twitter Bootstrap.</p>
<h3>Gli stili CSS: demo.css</h3>
<pre class="crayon-plain-tag">form#search-form{
  position: relative;
}

form#search-form ul{
	  position: absolute;
	  top: 0;
	  left: 0; 
	  width: 100%;
	  max-height: 200px;
	  overflow: auto;	  
	  z-index: 1;	  
	  border:1px solid #DDDDDD;
	  border-radius: 6px;	  
  }

span.ui-helper-hidden-accessible{
  display: none !important;
}

.ui-state-focus {
	 color: #ffffff;
	 background-color: #428bca;
}</pre>
&nbsp;</p>
<p>Anche per quanto riguarda gli stili il discorso non è molto complicato: per prima cosa attribuiamo il &#8220;position:relative&#8221; al form, di modo ché il menù dei risultati venga riposizionato in base al primo (è per questo che precedentemente lo abbiamo inserito tramite javascript al suo interno), poi impostiamo gli attributi del menu stesso, il quale avrà quindi una &#8220;position:absolute&#8221;.</p>
<p>Attribuiamo poi al menù una altezza massima di 200px con overflow:auto per far scorrere i risultati con una scrollbar, evitando di farli uscire dallo schermo, qualora fossero troppo numerosi.</p>
<p>Fatto ciò nascondiamo la classe helper del jQuery UI, ed impostiamo lo stile del risultato della lista su cui scaturisce il focus (<em>questo è un hack necessario perché purtroppo non è possibile modificare con poche righe di codice il markup e le classi di ogni singolo elemento della lista dei risultati. Per questo si è scelto di prendere la strada &#8220;più leggera</em>&#8220;).</p>
<h2>Twitter bootstrap 3 autocomplete: risultato finale</h2>

		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			<div class="wpb_button align_center"><a href="http://www.upcreative.net/tutorials/09092013-jquery-autcomplete-bootstrap/"class="g-btn type_primary size_big"><span><i class="fa fa-icon-eye-open"></i>Demo</span></a></div>
 
		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			Aiutami a condividere la risorsa per ottenere il <strong>download</strong>:</p>

		</div> 
	</div> </div></div><div class="g-cols"><div class="full-width"><div class="g-hr">
						<span class="g-hr-h">
							<i class="fa fa-chevron-down"></i>
						</span>
					</div>
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5>Temi Twitter Bootstrap 3 premium</h5>

		</div> 
	</div> <div class="g-cols"><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/rioleme-responsive-multipurpose-wordpress-theme/7041517?ref=Colddesign">RioLeme &#8211; Responsive Multi-Purpose WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/rioleme-responsive-multipurpose-wordpress-theme/7041517?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/rioleme-preview-image-590x300.__large_preview.jpg" class="attachment-full" alt="rioleme-preview-image-590x300.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/alamak-responsive-one-page-portfolio-theme/6502151?ref=Colddesign">Alamak &#8211; Responsive One Page Portfolio Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/alamak-responsive-one-page-portfolio-theme/6502151?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/alamak-preview.__large_preview.jpg" class="attachment-full" alt="alamak-preview.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/moose-multipurpose-responsive-wordpress-theme/6928835?ref=Colddesign">Moose &#8211; Multipurpose Responsive WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/moose-multipurpose-responsive-wordpress-theme/6928835?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/preview.__large_preview.png" class="attachment-full" alt="preview.__large_preview" /></a>
		</div> 
	</div> </div></div><div class="g-cols"><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/-slowave-multipurpose-responsive-wordpress-theme/6870792?ref=Colddesign">Slowave &#8211; Multipurpose Responsive WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/-slowave-multipurpose-responsive-wordpress-theme/6870792?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/1.__large_preview.png" class="attachment-full" alt="1.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/floyd-one-page-parallax-wordpress-theme/7081098?ref=Colddesign">Floyd &#8211; One Page Parallax WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/floyd-one-page-parallax-wordpress-theme/7081098?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/01_preview.__large_preview.png" class="attachment-full" alt="01_preview.__large_preview" /></a>
		</div> 
	</div> </div><div class="one-third">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h5><a href="http://themeforest.net/item/nativechurch-multi-purpose-wordpress-theme/7082446?ref=Colddesign">NativeChurch &#8211; Multi Purpose WordPress Theme</a></h5>

		</div> 
	</div> 
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<a href="http://themeforest.net/item/nativechurch-multi-purpose-wordpress-theme/7082446?ref=Colddesign"><img width="590" height="300" src="http://www.upcreative.net/wp-content/uploads/2013/09/preview_image1_large_preview.__large_preview.jpg" class="attachment-full" alt="preview_image1_large_preview.__large_preview" /></a>
		</div> 
	</div> </div></div></div></div>
</div></div><p>The post <a rel="nofollow" href="https://www.upcreative.net/twitter-bootstrap-3-autocomplete-con-jquery-ui/">Twitter Bootstrap 3 autocomplete &#8211; come realizzarlo con JQuery UI</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.upcreative.net/twitter-bootstrap-3-autocomplete-con-jquery-ui/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
