 
 
 <?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; Web UI</title>
	<atom:link href="https://www.upcreative.net/tag/web-ui/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 slide panel: tutorial su come realizzare un menu stile mobile</title>
		<link>https://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/</link>
		<comments>https://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/#comments</comments>
		<pubDate>Wed, 27 Nov 2013 15:47:12 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Apps]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[CSS3 slide panel]]></category>
		<category><![CDATA[CSS3 transform]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Progressive Enhancement]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[web app]]></category>
		<category><![CDATA[Web UI]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=2530</guid>
		<description><![CDATA[<p>The post <a rel="nofollow" href="https://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/">CSS3 slide panel: tutorial su come realizzare un menu stile mobile</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>Come sicuramente avrai capito leggendo i miei post, ho un vero e proprio debole per le <strong>mobile web app</strong> e per l&#8217;impiego dei <strong>CSS3</strong> al fine di rendere più piacevole la <strong>user-experience</strong> delle mie interfacce.</p>
<p>Con il miglioramento costante delle caratteristiche hardware dei dispositivi mobili è possibile avvicinarsi sempre di più alle <strong>prestazioni di applicazioni native</strong>, realizzando effetti come animazioni e transizioni puramente in <strong>CSS3</strong>.</p>
<p>Inserire nelle web app elementi come touch sliders, slide menu, <a title="Pull to refresh plugin" href="http://www.upcreative.net/pull-to-refresh-plugin-scrolling-nativo-ios/">pull-to-refresh</a> scroll, e molti altri componenti che siamo ormai abituati a vedere nelle applicazioni native, diventa quindi meno complicato.</p>
<h2>L&#8217;impiego nei siti web</h2>
<p>Effetti del genere ovviamente non sono limitati soltanto a smartphone o tablet, ma si possono implementare anche nei &#8220;classici&#8221; dispositivi desktop. Numerosi web designer e developer li inseriscono per esempio nei propri progetti per renderli più piacevoli e per stupire in modo originale il visitatore.</p>
<p>In questo articolo ti voglio parlare proprio di <strong>come realizzare un CSS3 slide panel menu</strong>, effetto che ho trovato ultimamente in molti siti web, e che può essere utilizzato in tutti i dispositivi.</p>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/11/CSS3-slide-panel-upcreative.jpg"><img class="alignnone size-full wp-image-2542" alt="CSS3-slide-panel-upcreative" src="http://www.upcreative.net/wp-content/uploads/2013/11/CSS3-slide-panel-upcreative.jpg" width="690" height="433" /></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/27112013upcreative-CSS3-slide-panel/"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/2559/"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">
			
<p>Quello che realizzeremo in questo tutorial è quindi un menu <strong>CSS3 slide panel</strong>, che appare o scompare al click su uno specifico pulsante.</p>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/11/square-space-css3-slide-menu.png"><img class="alignnone size-full wp-image-2532" alt="square-space-css3-slide-menu" src="http://www.upcreative.net/wp-content/uploads/2013/11/square-space-css3-slide-menu.png" width="690" height="436" /></a></p>
<p><span style="color: #999999;"><em><a title="Squarespace.com - Piattaforma per la creazione di siti web" href="http://www.squarespace.com">Squarespace</a> usa la tecnica dello slide menu nel proprio sito</em></span></p>
<p>Uno degli aspetti fondamentali che caratterizzerà il risultato finale è l&#8217;introduzione, se pur a livello base, di un concetto molto importante nell&#8217;ambito della compatibilità: il <strong>miglioramento progressivo tramite CSS3 </strong>(o CSS3 Progressive Enhancement).</p>
<blockquote><p>Il <b>Progressive enhancement </b>è una strategia impiegata nel web design che utilizza le tecnologie web a più livelli, per permettere a chiunque di accedere a contenuti e funzionalità di base del sito (o della web app) indipendentemente dal browser o dalla connessione utilizzata, fornendo anche una versione migliorata della pagina per coloro che dispongono di un browser più avanzato o maggiore larghezza di banda.</p>
<p><span style="color: #999999;">Fonte: <span style="text-decoration: underline;"><a title="Wikipedia - Progressive enhancement" href="http://en.wikipedia.org/wiki/Progressive_enhancement"><span style="color: #999999; text-decoration: underline;">Wikipedia</span></a></span></span></p></blockquote>
<p>Per quanto riguarda il nostro esperimento, la tecnica di base consisterà nel basare l&#8217;animazione dello sliding panel sulla proprietà <em>left</em> per i browser che non supportano le <em>css transform</em>, mentre sulla proprietà <em>translate3d</em> per quelli che la supportano.</p>
<p>Così facendo potremo guadagnare in termini di fluidità e le prestazioni (per capire quali sono gli attributi sui quali agire per <strong>migliorare fluidità e prestazioni</strong> ti consiglio di leggere: <a title="Performance CSS3: consigli per ottimizzare le animazioni" href="http://www.upcreative.net/performance-css3-consigli-per-ottimizzare-le-animazioni/">Performance CSS3: consigli per ottimizzare le animazioni</a>).</p>
<p>Ma veniamo al punto.</p>
<h2>Il markup HTML</h2>
<pre class="crayon-plain-tag">&lt;!-- Menu --&gt;
&lt;nav class="menu"&gt;

	&lt;!-- Menu Wrapper --&gt;
	&lt;div class="menu-wrap"&gt;
		&lt;span id="menu-close"&gt;x&lt;/span&gt;
		&lt;a href="index.html"&gt;Home&lt;/a&gt;
		&lt;a href="services.html"&gt;Services&lt;/a&gt;
		&lt;a href="portfolio.html"&gt;Portfolio&lt;/a&gt;
		&lt;a href="about.html"&gt;About&lt;/a&gt;
		&lt;a href="#contact"&gt;Contact&lt;/a&gt;
	&lt;/div&gt;

	&lt;!-- Menu button --&gt;
	&lt;button id="toggle" title="Menu Toggle"&gt;Toggle&lt;/button&gt;
&lt;/nav&gt;

&lt;!-- contenuto pagina --&gt;

&lt;div class="main-wrapper"&gt;			
	&lt;!-- contenuto della pagina --&gt;	
&lt;/div&gt;</pre>
Dal codice puoi vedere che il menu (class = &#8220;menu-wrap&#8221;) ed il pulsante di toggle (id=&#8221;toggle&#8221;) sono stati inseriti all&#8217;interno di un wrapper principale con class=&#8221;menu&#8221;, che sarà poi quello su cui effettueremo l&#8217;animazione, assieme al body stesso della pagina</p>
<h2>Gli stili CSS</h2>
<p>Vediamo gli stili per il wrapper principale del menu:</p><pre class="crayon-plain-tag">/* 
	stili del menu
	impostiamo la position a fixed con un right di -200px (il menu "a riposo" 
	esce dalla pagina a destra per un numero di pixel pari alla sua larghezza)
*/
.menu {
    position: fixed;
    right: -200px;
    width: 260px;
    height: 100%;
    top: 0;
    z-index: 10;
    text-align: left
}
/*
	serve per far muovere anche il body nel caso in cui il browser non supporta le CSS transform
*/
body {
&amp;nbsp; &amp;nbsp; overflow-x: hidden;
&amp;nbsp; &amp;nbsp; position: relative;
&amp;nbsp; &amp;nbsp; left: 0;
}</pre><p>
Ora impostiamo gli stili del menu-wrapper che è contenuto all&#8217;interno del panel menu principale, quelli del pulsante di chiusura (id=&#8221;menu-close&#8221;), e quelli del pulsante &#8220;toggle&#8221;:</p><pre class="crayon-plain-tag">/* 
	impostiamo gli stili dell'elemento wrapper che contiene il menu 
*/
.menu-wrap {
    position: absolute;
    top: 0;
    /* impostiamo un left di 60px per dare 'spazio' al pulsante '#toggle' */
    left: 60px;
    background: #1a1a1a;
    width: 200px;
    height: 100%;
    padding-top: 20px;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

/*
	impostiamo gli stili dei link del menu	
*/
.menu a {
    margin-left: 20px;
    color: gray;
    display: block;
    font-size: 12px;
    font-weight: 700;
    line-height: 40px;
    letter-spacing: .1em;
    text-transform: uppercase;
}
.menu a:hover {
    color: #fff
}
.menu a:active {
    color: #fff
}
.menu a&gt;i {
    float: left;
    display: inline-block;
    vertical-align: middle;
    text-align: left;
    width: 25px;
    font-size: 14px;
    line-height: 40px;
    margin: 25px 2px
}

/*
	impostiamo gli stili e posizioniamo il pulsante di chiusura che si trova all'interno del paneò
*/

#menu-close {
    cursor: pointer;
    display: block;
    position: absolute;
    font-size: 18px;
    font-weight: bold;
    color: gray;
    width: 40px;
    height: 40px;
    line-height: 40px;
    top: 18px;
    right: 5px;
    -webkit-transition: all .1s ease-in-out;
    -moz-transition: all .1s ease-in-out;
    -ms-transition: all .1s ease-in-out;
    -o-transition: all .1s ease-in-out;
    transition: all .1s ease-in-out
}
#menu-close:hover {
    color: #fff;
}

/*
     posizioniamo il pulsante toggle
*/
#toggle{
    position: absolute;	
    top: 25px;
    right: 265px;
    display: block;
    min-width: 110px;
    text-align: right;
    z-index: 11;
    font-size: 18px;
    font-weight: 700;
    color: #FFF;
    text-transform: uppercase;

    padding:0;
    background: none;
    margin:0;
    border:0;
}</pre><p>
Ora impostiamo gli stili del contenuto principale della pagina:</p><pre class="crayon-plain-tag">/* stili del contenuto della pagina */

.main-wrapper {
    background: url(../img/header-bg1.jpg) no-repeat center top;
    margin-top: 0px;
    padding-top: 130px;
    text-align: center;
    background-attachment: relative;
    background-position: center center;
    height: 100%;
    width: 100%;
    -webkit-background-size: 100%;
    -moz-background-size: 100%;
    -o-background-size: 100%;
    background-size: 100%;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover    
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}</pre><p>
Infine, ecco il punto focale del nostro esperimento, dove avviene &#8220;la magia&#8221;, ovvero il momento in cui scegliamo quale proprietà modificare oper effettuare l&#8217;animazione in base alla compatibilità del browser:</p><pre class="crayon-plain-tag">/*
	in questa situazione, quindi quando il browser NON supporta le CSS3 transform, 
	muoviamo la reale posizione del menu da fuori dallo schermo al suo interno, agendo sulla 
	proprietà "left"
*/
body:not(.with-translate).open {
    left: -200px;
}

/*
	in questa situazione, quindi quando il browser supporta le CSS3 transform, 
	lasciamo la reale posizione del menu fuori dallo schermo, mentre la trasliamo 
	al suo interno di 200px;
*/
body.with-translate.open {
    left: 0;    
    -webkit-transform: translate3d(-200px , 0 , 0);
    -moz-transform: translate3d(-200px,0,0);
    -ms-transform: translate3d(-200px,0,0);
    -o-transform: translate3d(-200px,0,0);    
    transform: translate3d(-200px,0,0);    
}

/* 
	impostiamo infine la transition ad all	per comprendere sia quella sulla proprietà "translate3d" che sulla proprietà "right"
*/

/* 
	se il browser non supporta le CSS3 transform, utilizziamo 
	la proprietà "right" per creare il nostro effetto 
        sull'elemento del menu
*/
body:not(.with-translate) .menu.open {
    right: 0
}

/* 
	altrimenti la proprietà right dovrà avere lo stesso valore negativo 
	in quanto useremo la proprietà translate per l'animazione 
*/

body.with-translate .menu.open{
	right:-200px;
}

/*
	nel caso in cui si tratta di ie10 attribuiamo la translate anche al menu, 
	che in questa versione non si sposta insieme al body (maledetto IE!)
*/
body.ie10.with-translate .menu.open {
    -webkit-transform: translate3d(-200px , 0 , 0);
    -moz-transform: translate3d(-200px,0,0);
    -ms-transform: translate3d(-200px,0,0);
    -o-transform: translate3d(-200px,0,0);    
    transform: translate3d(-200px,0,0);    
}

/*
       impostiamo la durata delle animazioni per il menu ed il body con 'all'
       in modo da agire sia sulla proprietà 'transform' che sulla proprietà 'right'
*/
.menu, body{
    -webkit-transition: all .3s ease;
    -moz-transition: all .3s ease;
    -ms-transition: all .3s ease;
    -o-transition: all .3s ease;
    transition: all .3s ease
}</pre><p>
Qui vengono definite le due differenti tecniche di animazione distinte in base alla classe del body: se esso ha la classe &#8220;<em>with-translate</em>&#8221; (significa che il browser supporta la proprietà <em>CSS transform</em>)<em>,</em> allora animeremo body e menu traslandoli con la l&#8217;attributo &#8220;<em>transform: translate3D</em>&#8220;, altrimenti lo faremo agendo sulla proprietà &#8220;right&#8221;.</p>
<h2>Il file Javascript</h2>
<p>Infine qualche riga di codice per aggiungere o togliere la classe &#8220;open&#8221; dal body e dal menu, all&#8217;evento &#8220;<em>click</em>&#8221; dei pulsanti desiderati. Controlliamo inoltre, sfruttando <a title="Modernizr" href="http://modernizr.com">modernirz</a> ( che ho incluso nel documento, puoi verificarlo scaricando il codice sorgente), se il browser supporta le <em>CSS transform </em>oppure no (in caso positivo aggiungiamo la classe &#8220;with-translate&#8221; al body).</p><pre class="crayon-plain-tag">$(function(){

	/* 
		grazie a modernizr, controllando le classi del tag HTML 
		possiamo sapere se il browser supporta la transition3d		
	*/
	var supportCssTransforms = $("html").hasClass("csstransforms3d");

    /*
	    se la supporta aggiungiamo la classe 'with-translate' al body, 
	    in modo da poter differenziare la modalità d'effetto tramite CSS
    */
	if(supportCssTransforms){
    	$("body").addClass("with-translate");
	}

        /*
		se si tratta di IE 10 aggiungiamo la classe per il workaround 
		(la condizione di controllo può essere migliorata)		
	*/
	if(navigator.userAgent.indexOf("MSIE 10.")!=-1){
		$("body").addClass("ie10");
	}

	/*
		impostiamo sugli elementi desiderati l'evento click in modo da 
		aprire o chiudere il menu aggiungendo o togliendo la classe "open"	
		al body e al menu stesso	
	*/
	$("#toggle, #menu-close").on("click", function(){
		$("body, .menu").toggleClass("open");		
	});

});</pre><p>
Ecco fatto: ora possiamo visualizzare un vero e proprio <strong>CSS3 slide panel menu</strong> con tanto di <strong>Progressive Enhancement</strong> per i dispositivi che non supportano le funzionalità CSS3 più recenti!</p>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/11/CSS3-slide-panel-upcreative.jpg"><img class="alignnone size-full wp-image-2542" alt="CSS3-slide-panel-upcreative" src="http://www.upcreative.net/wp-content/uploads/2013/11/CSS3-slide-panel-upcreative.jpg" width="690" height="433" /></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/27112013upcreative-CSS3-slide-panel/"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/2559/"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">
			
<p>Se ti è piaciuto l&#8217;articolo, perché non lo condividi?</p>

		</div> 
	</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">
		<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-shortcode6ab09f4230cde-4" class="wysija-msg ajax"></div><form id="form-wysija-shortcode6ab09f4230cde-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>
<p style="text-align: center;">
<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 class="g-hr">
						<span class="g-hr-h">
							<i class="fa fa-chevron-down"></i>
						</span>
					</div></div></div>
</div></div><p>The post <a rel="nofollow" href="https://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/">CSS3 slide panel: tutorial su come realizzare un menu stile mobile</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.upcreative.net/css3-slide-panel-tutorial-creare-menu-mobile/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
