<?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>MaiNick Web &#187; javascript</title>
	<atom:link href="http://www.mainickweb.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mainickweb.com</link>
	<description>Tutorial e Risorse gratuite su jQuery, PHP e CSS</description>
	<lastBuildDate>Sun, 29 Jan 2012 10:17:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Applicazioni Web Offline con HTML5</title>
		<link>http://www.mainickweb.com/applicazioni-web-offline-con-html5/</link>
		<comments>http://www.mainickweb.com/applicazioni-web-offline-con-html5/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 06:00:00 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[HMTL5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cache manifest]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[web application offline]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=722</guid>
		<description><![CDATA[HTML5 fornisce una nuova funzionalit&#224; di caching per supportare le applicazioni web in modalit&#224; offline. E&#8217; necessario specificare un determinato file chiamato &#8220;cache manifest&#8221; nella pagina web a cui vogliamo applicare il sistema di caching. L&#8217;URL del file cache manifest va specificato nel tag html del documento in cui vogliamo attivare la funzione di caching [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.mainickweb.com/wp-content/2011/06/web-application-offline.jpg" alt="Web Application Offline" border="0" width="700" height="234" /></p>
<p>HTML5 fornisce una nuova <a href="http://www.w3.org/TR/offline-webapps/" title="Offline Web Applications" target="_blank">funzionalit&agrave; di caching</a> per supportare le <strong>applicazioni web in modalit&agrave; offline</strong>.</p>
<p>E&#8217; necessario specificare un determinato file chiamato <strong>&#8220;cache manifest&#8221;</strong> nella pagina web a cui vogliamo applicare il sistema di caching.<br />
L&#8217;URL del file cache manifest va specificato nel tag <code>html</code> del documento in cui vogliamo attivare la funzione di caching HTML5.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE HTML&gt;
&lt;html manifest=&quot;myapp.cache&quot;&gt;
...
</pre>
<p>E&#8217; importante che, per essere correttamente analizzato dal browser, il file di cache manifest deve avere come intestazione in <code>header</code> il tipo MIME <code>text/cache-manifest</code>; dunque &egrave; necessario aggiungere al web server l&#8217;associazione all&#8217;estensione del tipo di file o specificarlo manualmente, ad esempio utilizzando la direttiva <code>header</code> di PHP.</p>
<p>L&#8217;aspetto di un tipico file di cache manifest &egrave; il seguente:</p>
<pre class="brush: plain; title: ; notranslate">
CACHE MANIFEST
index.html
css/style.css
js/jquery.js
images/logo.png

NETWORK:
search.php
</pre>
<p>specifica diversi file di cache, e poi specifica che il file <em>search.php</em> non deve mai essere memorizzato nella cache, in modo da consentire che ad ogni tentativo di accesso al file &egrave; consentito di bypassare il file di cache.</p>
<p>Il procedimento di caching funziona nel momento in cui un utente fa richiesta o accede alla pagina corrispondente ad un documento a cui &egrave; associato un cache manifest, allora il browser deve prima controllare se su server quest&#8217;ultimo &egrave; stato modificato:</p>
<ul>
<li>se non &egrave; stato modificato, viene utilizzato il contenuto della cache</li>
<li>altrimenti se presente una nuova versione del cache manifest, il contenuto presente della cache viene considerato obsoleto e ricaricato dal server.</li>
</ul>
<p>Altra funzionalit&agrave; importante del cache manifest &egrave; che pu&ograve; contenere anche voci di ripiego (sotto la voce <code>FALLBACK</code>), utilizzate dal client/browser se non &egrave; possibile recuperare il contenuto originale.</p>
<pre class="brush: plain; title: ; notranslate">
CACHE MANIFEST
index.html
css/style.css
js/jquery.js
images/logo.png

NETWORK:
search.php

FALLBACK
images/thumb.php	error.png
</pre>
<p>nell&#8217;esempio viene utilizzata un&#8217;immagine statica quando il recupero di un&#8217;immagine generata dinamicamente fallisce.</p>
<p>In HTML5 sono definite delle <a href="http://www.whatwg.org/specs/web-apps/current-work/#application-cache-api" title="Application cache API" target="_blank">API</a> che permettono di attivare manualmente gli aggiornamenti della cache:</p>
<ul>
<li><strong>update()</strong>: aggiorna la cache per il documento corrente in background;</li>
<li><strong>swapCache()</strong>: passa alla cache dell&#8217;applicazione pi&ugrave; recente, se vi &egrave; una pi&ugrave; recente; valida anche per le successive richieste di risorse dalla cache;</li>
<li><strong>onchecking()</strong>: cattura l&#8217;evento <em>checking</em> che si manifesta quando il client/browser verifica se disponibile un aggiornamento o tenta di scaricare per la prima volta il file di cache manifest (questo &egrave; sempre il primo evento della sequenza);</li>
<li><strong>onerror()</strong>: cattura l&#8217;evento <em>error</em> che si manifesta per tutti gli errori che possono verificarsi del tipo: nello scaricare il cache manifest il client/browser ha ricevuto errore 404 o 410, non &egrave; stato possibile scariche le risorse elencate nel cache manifest, si &egrave; verificato un errore durante il recupero delle risorse;</li>
<li><strong>onnoupdate()</strong>: cattura l&#8217;evento <em>noupdate</em> che si manifesta quando il client/browser verifica se disponibile un aggiornamento il cache manifest non &egrave; cambiato;</li>
<li><strong>ondownloading()</strong>: cattura l&#8217;evento <em>downloading</em> che si manifesta quando il client/browser sta scaricando le risorse elencate nel cache manifest dopo aver verificato un aggiornamento di quel&#8217;ultimo;</li>
<li><strong>onprogress()</strong>: cattura l&#8217;evento <em>progress</em> che si manifesta quando il client/browser sta scaricando le risorse elencate nel cache manifest;</li>
<li><strong>onupdateready()</strong>: cattura l&#8217;evento <em>updateready</em> che si manifesta quando le risorse elencate nel cache manifest sono state appena ri-scaricate e lo script pu&ograve; utilizzare il metodo <code>swapCache()</code> per passare alla nuova cache;</li>
<li><strong>oncached()</strong>: cattura l&#8217;evento <em>cached</em> che si manifesta quando le risorse elencate nel cache manifest sono state scaricate e ora si trovano nella cache;</li>
<li><strong>onobsolete()</strong>: cattura l&#8217;evento <em>obsolete</em> che si manifesta quando per trovare il cache manifest il client/browser ha ricevuto l&#8217;errore 404 o 410, per cui la cache dell&#8217;applicazione viene cancellata;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/applicazioni-web-offline-con-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TinyBox2: window modali standalone</title>
		<link>http://www.mainickweb.com/tinybox2-window-modali-standalone/</link>
		<comments>http://www.mainickweb.com/tinybox2-window-modali-standalone/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 06:00:00 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[modal windows]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=590</guid>
		<description><![CDATA[TinyBox2 &#232; il successore di TinyBox, una libreria JavaScript standalone, autonoma senza l&#8217;utilizzo di ulteriori framework come jQuery, per la realizzazione di finestre modali. Dal peso leggero (5 KB), supporta immagini, iframe, HTML e richieste AJAX native. Le finestre modali realizzabili sono molto personalizzabili nelle animazioni, livello di opacit&#224;, auto-hide, posizione personalizzate e molto altro. [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.mainickweb.com/wp-content/2011/03/tinybox2.jpg" alt="TinyBox - windows modal" border="0" width="500" height="190" /></p>
<p><strong>TinyBox2</strong> &egrave; il successore di TinyBox, una <strong>libreria JavaScript standalone</strong>, autonoma senza l&#8217;utilizzo di ulteriori framework come jQuery, per la <strong>realizzazione di finestre modali</strong>.</p>
<p>Dal <strong>peso leggero (5 KB)</strong>, supporta immagini, iframe, HTML e richieste AJAX native. Le finestre modali realizzabili sono <strong>molto personalizzabili</strong> nelle animazioni, livello di opacit&agrave;, auto-hide, posizione personalizzate e molto altro. Come gi&agrave; ci hanno insegnato altri tipo di plugin con la stessa funzionalit&agrave;, &egrave; possibile chiudere le finestre cliccando sul pulsante di chiusura, cliccando ovunque al di fuori dell&#8217;area della finestra o tramite il tasto ESC della tastiera.</p>
<p>Inoltre possiamo implementare <strong>funzioni di callback</strong> per gli eventi di apertura o chiusura, e le finestre possono essere impostate con dimensioni fisse in larghezza e lunghezza o automatiche in base al loro contenuto.</p>
<p>E&#8217; semplice utilizzare TinyBox2, ecco una semplice chiamata di una pagina HTML in una finestra modale:</p>
<pre class="brush: jscript; title: ; notranslate">
TINY.box.show ({url: 'page-example.html' , larghezza: 300, altezza: 150});
</pre>
</p>
<p>Le opzioni disponibili sono:</p>
<ul>
<li><strong>html</strong>: contenuto HTML [false]</li>
<li><strong>iframe</strong>: URL for embedded iframe [false]</li>
<li><strong>url</strong>: path per chiamata AJAX [false]</li>
<li><strong>post</strong>: variabile post, usata in congiunzione con url [false]</li>
<li><strong>image</strong>: path immagine [false]</li>
<li><strong>width</strong>: larghezza finestra [false]</li>
<li><strong>height</strong>: altezza finestra [false]</li>
<li><strong>animate</strong>: attiva/disattiva animazione [true]</li>
<li><strong>close</strong>: visualizza bottone chiudi [true]</li>
<li><strong>openjs</strong>: generica funzione eseguita su evento apertura [null]</li>
<li><strong>closejs</strong>: generica funzione eseguita su evento chiusura [null]</li>
<li><strong>autohide</strong>: numero di secondi di attesa per l&#8217;auto-chiusura della finestra[false]</li>
<li><strong>fixed</strong>: imposta posizione della finestra fixed/static (css) [true]</li>
<li><strong>opacity</strong>: imposta opacit&agrave; della finestra da 0-100 [70]</li>
<li><strong>top</strong>: per la posizione assoluta della finestra, pixels di distanza dal&#8217;alto [null]</li>
<li><strong> left </strong>: per la posizione assoluta della finestra, pixels di distanza da sinistra [null]</li>
</ul>
<p>Questo script &egrave; testato in IE7+, Firefox, Chrome, Opera e Safari ed &egrave; disponibile gratuitamente sul sito dell&#8217;autore con per ulteriori <a href="http://www.scriptiny.com/2011/03/javascript-modal-windows/" title="javascript window modali" target="_blank">informazioni e demo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/tinybox2-window-modali-standalone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZEN: l&#8217;audio player in HTML5 &amp; CSS3</title>
		<link>http://www.mainickweb.com/zen-laudio-player-in-html5-css3/</link>
		<comments>http://www.mainickweb.com/zen-laudio-player-in-html5-css3/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 06:30:00 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HMTL5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[audio player]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 audio player]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=572</guid>
		<description><![CDATA[ZEN è HTML5 Audio Player, un lettore audio realizzato con HTML5 e le animazioni di CSS3, alimentato da jPlayer. Si presenta con un&#8217;interfaccia molto semplificata, stile anteprima di iTunes, con pulsante di riproduzione, che si trasforma in pausa una volta cliccato, visualizzato in un cerchio che mostra il progresso del brano ascoltato. Al momento è sviluppato [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; margin-left: auto; margin-right: auto;" src="http://www.mainickweb.com/wp-content/2011/02/zen-html5-audio-player.jpg" border="0" alt="ZEN HTML5 Audio Player" width="500" height="309" /></p>
<p><a title="ZEN - HTML5 Audio Player" href="http://lab.simurai.com/ui/zen-player/" target="_blank">ZEN</a> è <strong>HTML5 Audio Player</strong>, un lettore audio realizzato con <strong>HTML5</strong> e le animazioni di <strong>CSS3</strong>, alimentato da <a title="HTML5 Audio &amp; Video for jQuery" href="http://jplayer.org/" target="_blank">jPlayer</a>.</p>
<p>Si presenta con un&#8217;interfaccia molto semplificata, <strong>stile anteprima di iTunes</strong>, con pulsante di riproduzione, che si trasforma in pausa una volta cliccato, visualizzato in un cerchio che mostra il <strong>progresso del brano ascoltato</strong>.</p>
<p>Al momento è sviluppato in modo da eseguire un singolo brano, ma sarà migliorato per supportare anche più file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/zen-laudio-player-in-html5-css3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Iterazione foreach degli array in JavaScript</title>
		<link>http://www.mainickweb.com/iterazione-foreach-degli-array-in-javascript/</link>
		<comments>http://www.mainickweb.com/iterazione-foreach-degli-array-in-javascript/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 06:00:25 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[array javascript]]></category>
		<category><![CDATA[foreach]]></category>
		<category><![CDATA[iteratore array]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=495</guid>
		<description><![CDATA[Iterare gli array associativi in PHP &#232; molto pi&#249; semplice, ma proprio in questi giorni ho avuto l&#8217;esigenza di ottenere la stessa funzionalit&#224; in JavaScript, e mi sono reso conto di non saper come recuperare i dati da un array associativo con un ciclo nel linguaggio JavaScript. L&#8217;utilit&#224; nell&#8217;utilizzare un array associativo &#232; dato dal [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:center;"><img src="http://www.mainickweb.com/wp-content/2010/08/snippet-javascript.jpg" alt="snippet-javascript.jpg" border="0" width="500" height="167" /></div>
<p>Iterare gli <strong>array associativi</strong> in PHP &egrave; molto pi&ugrave; semplice, ma proprio in questi giorni ho avuto l&#8217;esigenza di ottenere la <strong>stessa funzionalit&agrave; in JavaScript</strong>, e mi sono reso conto di non saper come recuperare i dati da un array associativo con un ciclo nel linguaggio JavaScript.</p>
<p>L&#8217;utilit&agrave; nell&#8217;utilizzare un array associativo &egrave; dato dal fatto che posso selezionare tutti i valori relativi ad una determinata chiave, (<em>indice dell&#8217;array</em>), senza dover sapere in quale posizione dell&#8217;array &egrave; presente il dato.</p>
<p>In PHP per elencare in maniera ciclica tutti i dati occorre fare ricorso ad una struttura logica conosciuta come <strong>Foreach</strong>. Volendola applicare avremmo un codice simile al seguente:</p>
<pre class="brush: php; title: ; notranslate">
$array_associativo = array(
  'gen' =&gt; 'Gennaio',
  'feb' =&gt; 'Febbraio',
  'mar' =&gt; 'Marzo',
  'apr' =&gt; 'Aprile',
  'mag' =&gt; 'Maggio',
  'giu' =&gt; 'Giugno',
  'lug' =&gt; 'Luglio',
  'ago' =&gt; 'Agosto',
  'set' =&gt; 'Settembre',
  'ott' =&gt; 'Ottobre',
  'nov' =&gt; 'Novembre',
  'dic' =&gt; 'Dicembre'
);
foreach ($array_associativo as $key =&gt; $value) {
  echo '[' . $key . '] =&gt; ' . $modello . ',&amp;lt;br /&amp;gt;';
}
</pre>
</p>
<p>In JavaScript lo stessa variabile la si potrebbe creare in questo modo:</p>
<pre class="brush: jscript; title: ; notranslate">
var array_associativo = new Array();
array_associativo['gen'] = 'Gennaio';
array_associativo['feb'] = 'Febbraio';
array_associativo['mar'] = 'Marzo';
array_associativo['apr'] = 'Aprile';
array_associativo['mag'] = 'Maggio';
array_associativo['giu'] = 'Giugno';
array_associativo['lug'] = 'Luglio';
array_associativo['ago'] = 'Agosto';
array_associativo['set'] = 'Settembre';
array_associativo['ott'] = 'Ottobre';
array_associativo['nov'] = 'Novembre';
array_associativo['dic'] = 'Dicembre';
);
</pre>
</p>
<p>Anche in JavaScript esiste una struttura logica che esegue questa funzione, ma non si chiama <strong>Foreach</strong>:</p>
<pre class="brush: jscript; title: ; notranslate">
for (var key in array_associativo) {
  document.write('[' key + '] =&gt; ' + array_associativo[key] + ',&amp;lt;br /&amp;gt; ');
}
</pre>
</p>
<p>In effetti &egrave; sempre il solito for, ma con una condizione differente che permette di <strong>analizzare un array associativo</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/iterazione-foreach-degli-array-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Semplice menu verticale scorrevole con jQuery</title>
		<link>http://www.mainickweb.com/semplice-menu-verticale-scorrevole-con-jquery/</link>
		<comments>http://www.mainickweb.com/semplice-menu-verticale-scorrevole-con-jquery/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 07:00:43 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[liste verticali]]></category>
		<category><![CDATA[menu]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=240</guid>
		<description><![CDATA[  In questo articolo vi mostrerò come creare un semplice menu scorrevole utilizzando jQuery.  Al passaggio del mouse su una delle voci di menu principale viene fuori il rispettivo sub-menu, quando il mouse passa su un&#8217;altra voce del menu principale si apre il suo sub-menu chiudendo quello precedente.  La prima cosa da fare è quella [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-247" title="menu verticale scorrevole" src="http://www.mainickweb.com/wp-content/2009/06/menu-verticale-scorrevole.png" alt="menu verticale scorrevole" width="660" height="171" /></p>
<p> </p>
<p>In questo articolo vi mostrerò come creare un semplice menu scorrevole utilizzando jQuery. </p>
<p>Al passaggio del mouse su una delle voci di menu principale viene fuori il rispettivo sub-menu, quando il mouse passa su un&#8217;altra voce del menu principale si apre il suo sub-menu chiudendo quello precedente. </p>
<p>La prima cosa da fare è quella di inserire il seguente codice all&#8217;interno della sezione <em>&lt;head&gt;</em>: </p>
<pre class="brush: xml; title: ; notranslate">
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot; type=&quot;text/css&quot; media=&quot;screen, projection&quot; /&gt;
&lt;script src=&quot;js/jquery-1.3.2.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/menu.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p>Si può notare che ci sono 3 file <strong>style.css</strong>, <strong>jquery-1.3.4.min.js</strong> e <strong>menu.js</strong>: il primo file rappresenta lo stile del menu che tratterò dopo; il secondo file è la libreria <strong>jQuery 1.3.2</strong> che potete scaricare dal sito <a title="jQuery: The Write Less, Do More, JavaScript Library" href="http://www.jquery.com" target="_blank">jquery.com</a> o caricarla direttamente dai server di <a title="Libreria jQuery dai server di Google" href="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" target="_blank">Google</a>; il terzo file contiene il codice delle funzioni ed è il seguente: </p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function(){
    //
    // Nascondo tutti i menu principali
    $(&quot;#menu1 &gt; ul&quot;)
        .animate({bottom:&quot;0px&quot;},{queue:false,duration:350})
        .css(&quot;display&quot;,&quot;none&quot;);
    $(&quot;#menu2 &gt; ul&quot;)
        .animate({bottom:&quot;0px&quot;},{queue:false,duration:350})
        .css(&quot;display&quot;,&quot;none&quot;);
    $(&quot;#menu3 &gt; ul&quot;)
        .animate({bottom:&quot;0px&quot;},{queue:false,duration:350})
        .css(&quot;display&quot;,&quot;none&quot;);

    $(&quot;#menu1&quot;).hover(function(){
        //
        // effetto uscita altri menu
        $(&quot;#menu2 &gt; ul&quot;)
            .animate({top:&quot;-200px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;none&quot;);
        $(&quot;#menu3 &gt; ul&quot;)
            .animate({top:&quot;-200px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;none&quot;);
        //
        // effetto entrata menu
        $(&quot;#menu1 &gt; ul&quot;)
            .animate({top:&quot;33px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;block&quot;);
    });

    $(&quot;#menu2&quot;).hover(function(){
        //
        // effetto uscita altri menu
        $(&quot;#menu1 &gt; ul&quot;)
            .animate({top:&quot;-200px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;none&quot;);
        $(&quot;#menu3 &gt; ul&quot;)
            .animate({top:&quot;-200px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;none&quot;);
        //
        // effetto entrata menu
        $(&quot;#menu2 &gt; ul&quot;)
            .animate({top:&quot;33px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;block&quot;);
    });

    $(&quot;#menu3&quot;).hover(function(){
        //
        // effetto uscita altri menu
        $(&quot;#menu1 &gt; ul&quot;)
            .animate({top:&quot;-200px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;none&quot;);
        $(&quot;#menu2 &gt; ul&quot;)
            .animate({top:&quot;-200px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;none&quot;);
        //
        // effetto entrata menu
        $(&quot;#menu3 &gt; ul&quot;)
            .animate({top:&quot;33px&quot;},{queue:false,duration:350})
            .css(&quot;display&quot;,&quot;block&quot;);
    });
});
</pre>
<p>La prima riga del codice precedente significa che quando viene caricato il documento vengono eseguite le funzioni al suo interno.</p>
<p>La prima parte del codice permette di nascondere le voci dei sub-menu, in modo che se javascript non è attivo vengono lo stesso visualizzati.</p>
<p>Bisogna poi creare le altri parti del codice per ogni voce di menu principale: il metodo <em>hover</em> di jQuery permette di catturare l&#8217;evento di passaggio del mouse sulla voce di menu e eseguire il codice al suo interno, che contemporaneamente all&#8217;apertura del rispettivo sub-menu chiude tutti gli altri sub-menu. <br />
Il metodo <em>animate</em> permette di eseguire un&#8217;animazione sull&#8217;oggetto dalla posizione iniziale alla posizione <em>top</em> scritta con una velocità descritta dalla durata in millesecondi dell&#8217;animazione, visualizzando o nascondendo l&#8217;oggetto impostando con il metodo <em>css</em> la proprietà <em>display</em>.</p>
<p>Il codice html della pagina non è altro che un insieme di elenchi non ordinati di cui ad ogni voce dell&#8217;elenco principale è creato un nuovo elenco con le voci del sub-menu: </p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;menu-wrapper&quot;&gt;
    &lt;ul&gt;
        &lt;li id=&quot;menu1&quot; class=&quot;menu&quot;&gt;
            &lt;div class=&quot;menu-title&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;return false;&quot;&gt;Menu 1&lt;/a&gt;&lt;/div&gt;
            &lt;ul class=&quot;submenu&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 1.1&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 1.2&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 1.3&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 1.4&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 1.5&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li id=&quot;menu2&quot; class=&quot;menu&quot;&gt;
            &lt;div class=&quot;menu-title&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;return false;&quot;&gt;Menu 2&lt;/a&gt;&lt;/div&gt;
            &lt;ul class=&quot;submenu&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 2.1&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 2.2&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 2.3&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 2.4&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 2.5&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li id=&quot;menu3&quot; class=&quot;menu&quot;&gt;
            &lt;div class=&quot;menu-title&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;return false;&quot;&gt;Menu 3&lt;/a&gt;&lt;/div&gt;
            &lt;ul class=&quot;submenu&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 3.1&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 3.2&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 3.3&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 3.4&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sub-menu 3.5&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
</pre>
<p>Ad ogni voce di elenco principale assegniamo un <em>id</em> a cui applicare il metodo <em>hover</em> per eseguire l&#8217;effetto desiderato, mentre le classi assegnato le utilizzeremo per specificare le proprietà dello stile css:</p>
<pre class="brush: css; title: ; notranslate">
#menu-wrapper {
    position: absolute;
    height: 300px;
    overflow: hidden;
}
#menu-wrapper ul {
    margin: 0;
    padding: 0;
}
li.menu {
    position: relative;
    float: left;
    margin: 0;
    padding: 0;
    list-style: none;
}
div.menu-title {
    width: 200px;
    height: 33px;
    margin-right: 20px;
    background-color: #00689b;
}
div.menu-title a {
    padding-left: 15px;
    color: #fff;
    font-size: 24px;
    font-weight: bolder;
    text-transform: uppercase;
    text-decoration: none;
    line-height: 33px;
}
ul.submenu {
    position: absolute;
    width: 200px;
}
ul.submenu li {
    height: 22px;
    margin-bottom: 1px;
    background-color: #00689b;
    line-height: 22px;
    list-style: none;
}
ul.submenu li a {
    color: #fff;
    font-size: 14px;
    text-decoration: none;
}
</pre>
<p>Il selettore <em>menu-wrapper</em> raggruppiamo tutto il menu dandogli un&#8217;altezza massima e specificando la proprietà <em>overflow</em> per nascondere tutto ciò che è al di fuori di esso.</p>
<p>La classe <em>menu-title</em> specifichiamo le proprietà da assegnare alle voci del menu principale; la classe <em>submenu</em> per le voci dei sub-menu. </p>
<p align="center"><a href="http://www.mainickweb.com/esempi/menu_jquery/index.html" title="Demo menu verticale scorrevole con jQuery" class="codice minimal" target="_blank"><span>Demo</span></a> <a href="http://www.mainickweb.com/esempi/menu_jquery/menu_jquery.zip" title="Codice menu verticale scorrevole con jQuery" class="codice minimal"><span>Codice</span></a></p>
<p>Spero che ti sia utile, grazie per la lettura non dimenticarti di iscriverti via RSS per tutte le novità sperando di avere più tempo libero e scrivere altri nuovi articoli.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/semplice-menu-verticale-scorrevole-con-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fissare il problema dell&#8217;overflow orizzontale IE</title>
		<link>http://www.mainickweb.com/fissare-il-problema-delloverflow-orizzontale-ie/</link>
		<comments>http://www.mainickweb.com/fissare-il-problema-delloverflow-orizzontale-ie/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 05:30:53 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[overflow]]></category>
		<category><![CDATA[overflow orizzontale]]></category>
		<category><![CDATA[plugin jquery]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=143</guid>
		<description><![CDATA[Internet Explorer ha una diversa impostazione dell&#8217;overflow rispetto a Firefox o Safari. Ho trovato questo plugin per jQuery che permette di fissare il problema dell&#8217;overflow orizzontale sullo stesso browser. E&#8217; possibile seguire il progetto alla pagina dell&#8217;autore. In particolare , Firefox e altri, se si ha un overflow orizzontale dell&#8217;elemento pone la barra di scorrimento [...]]]></description>
			<content:encoded><![CDATA[<p>Internet Explorer ha una diversa impostazione dell&#8217;<strong>overflow</strong> rispetto a Firefox o Safari.</p>
<p>Ho trovato questo plugin per jQuery che permette di fissare il <strong>problema dell&#8217;overflow orizzontale</strong> sullo stesso browser. E&#8217; possibile seguire il <a href="http://remysharp.com/2008/01/21/fixing-ie-overflow-problem/" title="fissare il problema dell'overflow orizzontale in Internet Explorer">progetto</a> alla pagina dell&#8217;autore.</p>
<p>In particolare , Firefox e altri, se si ha un overflow orizzontale dell&#8217;elemento pone la barra di scorrimento sul lato esterno dell&#8217;elemento. In Internet Explorer, se non possiamo vedere tutto il contenuto in verticale, genera la barra di scorrimento verticale, insieme alla barra di scorrimento orizzontale.</p>
<p>Ma il caso peggiore si ha quando abbiamo una <strong>sola riga overflowed</strong>: la barra di scorrimento orizzontale non è estesa su tutto l&#8217;elemento, rimane comunque un piccolo spazio laterale per la barra di scorrimento verticale anche non visualizzandola.</p>
<p>Seguendo l&#8217;autore, una soluzione al problema è di applicare i seguenti passi, solo per Internet Explorer:</p>
<ol>
<li>trovare tutti gli elementi il cui contenuto è visualizzato con barra di scorrimento orizzontale</li>
<li>aggiungere 20 pixel di padding-bottom agli elementi</li>
<li>scostare la barra di scorrimento verticale</li>
</ol>
<p>E&#8217; possibile applicare questi tre punti tramite JavaScript:</p>
<pre class="brush: jscript; title: ; notranslate">
window.onload = function () {
  // solo IE
  if (!/*@cc_on!@*/0) return;

  // trova gli element di prova
  var all = document.getElementsByTagName('*');
  var i = all.length;

  while (i--) {
    // se scrollWidth (la reale larghezza) è superiore alla
    // alla larghezza visibile, applicare le modifiche di stile
    if (all[i].scrollWidth &gt; all[i].offsetWidth) {
      all[i].style['paddingBottom'] = '20px';
      all[i].style['overflowY'] = 'hidden';
    }
  }
};
</pre>
<p>o creare un <strong>plugin per jQuery</strong> con tale codice: </p>
<pre class="brush: jscript; title: ; notranslate">
(function ($) {
  $.fn.fixOverflow = function () {
    if ($.browser.msie) {
      return this.each(function () {
        if (this.scrollWidth &gt; this.offsetWidth) {
          $(this).css({ 'padding-bottom' : '20px', 'overflow-y' : 'hidden' });
        }
      });
    } else {
      return this;
    }
  };
})(jQuery);

// uso
$('pre').fixOverflow().doOtherPlugin();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/fissare-il-problema-delloverflow-orizzontale-ie/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Validare form con LiveValidation</title>
		<link>http://www.mainickweb.com/validare-form-con-livevalidation/</link>
		<comments>http://www.mainickweb.com/validare-form-con-livevalidation/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 13:17:49 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[validare input]]></category>
		<category><![CDATA[validazione]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=131</guid>
		<description><![CDATA[I form sono molto utili per un iterazione con gli utenti visitatori del sito, ma nella compilazione non c’è situazione più noiosa di essere avvisati, riguardo un errore di compilazione, dopo averlo inviato. Ci occupiamo in questo articolo di LiveValidation, una libreria in javascript che sto studiando in questi giorni, che risulta (tra quelle provate) [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><a href="http://www.livevalidation.com/" target="_blank"><img class="aligncenter size-full wp-image-132" style="border: 0pt none; padding: 0px 20px;" title="livevalidation" src="http://www.mainickweb.com/wp-content/2008/10/livevalidation.jpg" alt="" width="400" height="132" /></a></div>
<p>I form sono molto utili per un iterazione con gli utenti visitatori del sito, ma nella compilazione non c’è situazione più noiosa di essere avvisati, riguardo un errore di compilazione, dopo averlo inviato.</p>
<p>Ci occupiamo in questo articolo di <a title="LiveValidation - Validare durante la digitazione" href="http://www.livevalidation.com" target="_blank"><strong>LiveValidation</strong></a>, una libreria in javascript che sto studiando in questi giorni, che risulta (tra quelle provate) la più semplice nell&#8217;utilizzo ed efficace.</p>
<p>Il sito ufficiale della libreria presenta oltre al <a title="download libreria di validazione" href="http://www.livevalidation.com/download" target="_blank">download</a>, una completa <a title="documentazione LiveValidation" href="http://www.livevalidation.com/documentation" target="_blank">documentazione</a> e una pagina ricca di <a title="regole input validati" href="http://www.livevalidation.com/examples" target="_blank">esempi</a>. Sono previste due versioni: una versione basata su Prototype e quella standalone (per utilizzarla con qualsiasi altro javascript framework), e per ciascuna è disponibile una versione compressa.</p>
<h2>Validare input</h2>
<p>Per utilizzare la libreria bisogna inserirla nella sezione head del documento, in questo modo:</p>
<pre class="brush: xml; title: ; notranslate">&lt;script type=&quot;text/javascript&quot; src=&quot;js/livevalidation_standalone.js&quot;&gt;&lt;/script&gt;</pre>
<p>Tutti i campi da validare nel form della pagina devono essere associati ad un <strong>ID identificativo univoco</strong>. Subito dopo la form, bisogna inserire il codice javascript che richiama la <strong>funzione di validazione</strong> della libreria:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;input type=&quot;text&quot; id=&quot;campo&quot; /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo');
    valCampo.add(funzione della libreria);
&lt;/script&gt;
</pre>
<p>Nella prima riga del codice abbiamo creato un nuovo oggetto LiveValidation che ha come argomento l&#8217;ID dell&#8217;input, andiamo poi ad aggiungere all&#8217;oggetto il metodo della libreria che vogliamo utilizzare per la convalida dell&#8217;input.</p>
<p>Il primo esempio prodotto, aggiungendo il metodo Presence, esso effettua la verifica sull&#8217;<strong>avvenuta compilazione del campo</strong>. Provando l&#8217;<a title="Campo obbligatorio" href="http://www.mainickweb.com/esempi/validare-form/campo-obbligatorio.html" target="_blank">esempio</a> noterete la presenza degli avvisi in inglese, impostati di default incorporati nel codice della libreria.</p>
<p>Per poterli personalizzare, senza mettere mani al codice della libreria, LiveValidation consente di definire una serie di parametri per ogni modulo, tra cui dei messaggi che andranno a sovrascrivere quelli di default.</p>
<p>Modifichiamo il primo esempio, <strong>personalizzando i messaggi di avviso</strong> (<a title="Campo obbligatorio - avviso" href="http://www.mainickweb.com/esempi/validare-form/campo-obbligatorio2.html" target="_blank">esempio</a>):</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add(Validate.Presence, { failureMessage: &quot;Il campo deve essere compilato&quot; });
&lt;/script&gt;
</pre>
<p>Il metodo Format consente di validare il contenuto inserito nel campo rispetto ad un&#8217;<strong>espressione regolare</strong> definita come parametro (<a title="Campo validato rispetto una espressione regolare" href="http://www.mainickweb.com/esempi/validare-form/espressione-regolare.html" target="_blank">esempio</a>):</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add(Validate.Format, { pattern: /stringa/i, failureMessage: &quot;Devi inserire la parola stringa&quot; });
&lt;/script&gt;
[/js&gt;
Il campo sarà validato solo se al suo interno viene inserita la stringa '&lt;em&gt;stringa&lt;/em&gt;'.

Per &lt;strong&gt;validare valori numerici&lt;/strong&gt; si utilizza il metodo Numericality (&lt;a title=&quot;Valore numerico&quot; href=&quot;http://www.mainickweb.com/esempi/validare-form/campo-numerico.html&quot; target=&quot;_blank&quot;&gt;esempio&lt;/a&gt;):
1
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add(Validate.Numericality, { notANumberMessage: &quot;Devi inserire un valore numerico&quot; });
&lt;/script&gt;
</pre>
<p>In questo caso, per impostare il messaggio di non validità, il parametro da usare è notANumberMessage.</p>
<p>Al metodo Numericality è possibile passare ulteriori parametri:</p>
<ul>
<li>onlyInteger = true &#8211; validare solo numeri interi (non decimali)</li>
<li> is: 15 &#8211; verifica che il valore inserito sia 15</li>
<li>minimum: 12 &#8211; verifica che il valore inserito sia maggiore o uguale a 12</li>
<li>maximum: 22 &#8211; verifica che il valore inserito sia minore o uguale a 22</li>
</ul>
<p>I parametri sopra possono essere combinati, l&#8217;unica espressione che non è possibile combinare è &#8216;is&#8217; con &#8216;minimum&#8217; o &#8216;maximum&#8217;, dove &#8216;is&#8217; avrà la precedenza. Questo <a title="Valore numerico intero compreso tra 12 e 22" href="http://www.mainickweb.com/esempi/validare-form/campo-numerico-in-range.html" target="_blank">esempio</a> verifica che il valore inserito rientri in un range e sia intero:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add(Validate.Numericality, { minimum: 12, maximum: 22, onlyInteger: true, notANumberMessage: &quot;Devi inserire un valore numerico&quot;, notAnIntegerMessage: &quot;Deve essere un numero intero&quot;, tooLowMessage: &quot;Non deve essere inferiore a 12&quot;, tooHighMessage: &quot;Non deve essere superiore a 22&quot; });
&lt;/script&gt;
</pre>
<h2>Altri tipi di validazione</h2>
<h3>Lunghezza</h3>
<p>E&#8217; possibile utilizzare gli stessi parametri descritti sopra per il metodo Length, con il quale è possibile validare un campo rispetto al <strong>numero dei caratteri</strong> inseriti.</p>
<h3>Inclusione ed esclusione</h3>
<p>E&#8217; possibile impostare una serie di valori rispetto alla quale verificare la <strong>corrispondenza esatta o parziale</strong> del contenuto inserito nel campo. Attraverso il metodo Inclusion il campo sarà validato solo se contiene i valori passati:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add( Validate.Inclusion, { within: [ 'mainick' , 'blog', 'javascript' ] } );
&lt;/script&gt;
</pre>
<p>Al contrario, usando il metodo Exclusion il campo non sarà validato se contiene i valori passati:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add( Validate.Exclusion, { within: [ 'mainick' , 'blog', 'javascript' ] } );
&lt;/script&gt;
</pre>
<p>Passando il parametro &#8216;partialMatch: true&#8217; è possibile controllare anche solo su una parte della stringa.</p>
<h3>Checkbox</h3>
<p>Attraverso il metodo Acceptance è possibile verificare che un <strong>checkbox sia stato o meno spuntato</strong> (esempio):</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add(Validate.Acceptance, { failureMessage: &quot;Devi spuntarla&quot; });
&lt;/script&gt;
</pre>
<h3>Conferma</h3>
<p>Il metodo Confirmation verifica l&#8217;<strong>uguaglianza tra due input</strong>, molto utile per la <strong>verifica della password</strong>:</p>
<pre class="brush: xml; title: ; notranslate">
Inserisci password: &lt;input type=&quot;password&quot; id=&quot;password&quot; /&gt;&lt;br /&gt;
Conferma password: &lt;input type=&quot;password&quot; id=&quot;confPass&quot; /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    var valConfPass = new LiveValidation('confPass', { validMessage = &quot;OK&quot; });
    valConfPass.add(Validate.Confirmation, { match: 'password', failureMessage: &quot;Le password non coincidono&quot; });
&lt;/script&gt;
</pre>
<h3>E-mail</h3>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var valCampo = new LiveValidation('campo', { validMessage: &quot;OK&quot; });
    valCampo.add(Validate.Email, { failureMessage: &quot;Devi inserire un indirizzo e-mail valido&quot; });
&lt;/script&gt;
</pre>
<h2>Validare form</h2>
<p>E&#8217; possibile combinare i diversi metodi descritti sopra su un solo campo.</p>
<p>Il costruttore della libreria consente di istituire il campo del form come un oggetto LiveValidation a cui è possibile passare alcuni parametri facoltativi:</p>
<ul>
<li>validMessage &#8211; messaggio visualizzato alla validazione del campo</li>
<li>onlyOnBlur: true &#8211; consente di effettuare la validazione solo quando l&#8217;input perde il focus</li>
<li>wait: 500 &#8211; tempo desiderato prima di validare l&#8217;input dall&#8217;ultima volta che si è premuto un tasto</li>
<li>onlyOnSubmit: true &#8211; consente di effettuare la validazione sol quando il modulo sarà inviato</li>
</ul>
<h2>Personalizzare lo stile degli avvisi</h2>
<p>Tramite un foglio di stile possiamo <strong>personalizzare lo stile e la formattazione degli avvisi</strong>. E&#8217; possibile definire appena cinque regole con classi che si applicano ai messaggi di avviso e ai campi:</p>
<pre class="brush: css; title: ; notranslate">
/* classe che si applica a tutti i messaggi di validazione */
.LV_validation_message {
    font-weight: bold;
    margin: 0 0 0 5px;
}
/* classe che si applica ai messaggi di validità */
.LV_valid {
    color: #00CC00;
}
/* classe che si applica ai messaggi di non validità */
.LV_invalid {
    color: #CC0000;
}
/* stili applicati ai campi validi */
.LV_valid_field,
input.LV_valid_field:hover,
input.LV_valid_field:active,
textarea.LV_valid_field:hover,
textarea.LV_valid_field:active {
    border: 1px solid #00CC00;
}
/* stili applicati ai campi non validi */
.LV_invalid_field,
input.LV_invalid_field:hover,
input.LV_invalid_field:active,
textarea.LV_invalid_field:hover,
textarea.LV_invalid_field:active {
    border: 1px solid #CC0000;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/validare-form-con-livevalidation/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Semplice menu verticale con effetto fisarmonica via JavaScript!</title>
		<link>http://www.mainickweb.com/semplice-menu-verticale-con-effetto-fisarmonica-via-javascript/</link>
		<comments>http://www.mainickweb.com/semplice-menu-verticale-con-effetto-fisarmonica-via-javascript/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 15:50:50 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[accordions]]></category>
		<category><![CDATA[effetto fisarmonica]]></category>
		<category><![CDATA[effetto javascript]]></category>
		<category><![CDATA[script javascript veloce]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=12</guid>
		<description><![CDATA[Di effetti a fisarmonica in JavaScript ne sono stati creati moltissimi, ma quello che oggi vi voglio presentare ha una caratteristica molto importante per gli sviluppatori, è leggerissimo. Uno JavaScript che vi permette di avere un effetto fisarmonica sul menu o qualsiasi altro box dei vostri siti internet. La caratteristica fondamentale, come dicevo prima, è [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-13" style="border: none;padding:0 20px;" title="simpleAccordions" src="http://www.mainickweb.com/wp-content/2008/07/simpleaccordions.jpg" alt="Simple Accordions" width="381" height="236" /></p>
<p>Di effetti a fisarmonica in JavaScript ne sono stati creati moltissimi, ma quello che oggi vi voglio presentare ha una caratteristica molto importante per gli sviluppatori, è <strong>leggerissimo</strong>.</p>
<p>Uno JavaScript che vi permette di avere un <strong>effetto fisarmonica sul menu o qualsiasi altro box dei vostri siti internet</strong>. <strong>La caratteristica fondamentale, come dicevo prima, è che pesa poco più di 1Kb</strong>, questo rende lo script <strong>più funzionale e veloce nel caricamento</strong>.</p>
<p>Uno degli <strong>accordion script più piccoli</strong> ed estremamente semplice e facile da integrare. Non richiede alcun <a title="Framework - Wikipedia" href="http://it.wikipedia.org/wiki/Framework" target="_blank">framework</a> ed è completamente cross-browser compatibile.</p>
<p>La prima cosa da fare è quella di inserire il seguente codice JavaScript, all&#8217;interno della sezione &lt;head&gt; del vostro sito:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;js/accordian.pack.js&quot;&gt;&lt;/script&gt;
</pre>
<p>e inserire all&#8217;interno del tag &lt;body&gt; il seguente codice JavaScript per il controllo della fisarmonica e per caricare all&#8217;apertura della pagina lo script:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;body onload=&quot;new Accordian('basic-accordian',5,'header_highlight');&quot;&gt;
&lt;/body&gt;
</pre>
<p>che è nella forma:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;body onload=&quot;new Accordian('id DIV container',velocità,'classe voce di fisarmonica');&quot;&gt;
&lt;/body&gt;
</pre>
<p>Una volta inserito questo andremo a creare il nostro menu o box con il seguente codice:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;basic-accordian&quot;&gt;&lt;!--DIV Container Accordion--&gt;
    &lt;div&gt;Simple Accordions&lt;/div&gt;
    &lt;!--Inizio voce di fisarmonica--&gt;
    &lt;div id=&quot;test-header&quot; class=&quot;accordion_headings header_highlight&quot;&gt;Home&lt;/div&gt;
    &lt;!--Voce della fisarmonica (clic per mostrare) --&gt;
    &lt;!--Prefisso della voce (il DIV di sopra) e del contenuto (il DIV al di sotto di questa) devono essere lo stesso ... ad es. foo-header &amp;#038; foo-content--&gt;
    &lt;div id=&quot;test-content&quot;&gt;&lt;!--DIV che viene mostrato / nascosto facendo clic su voce di intestazione--&gt;
        &lt;div class=&quot;accordion_child&quot;&gt;&lt;!--Questo DIV è utilizzato come padding...--&gt;
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc ligula nisl, egestas non, pharetra vel, scelerisque accumsan, lacus. Proin nibh. Aenean dapibus. Quisque facilisis, ligula ut blandit hendrerit, purus neque rhoncus ipsum, sit amet ultrices mauris augue non arcu. Donec et sem nec libero viverra accumsan.
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--Fine voce di fisarmonica--&gt;
    &lt;!--Inizio voce di fisarmonica--&gt;
    &lt;div id=&quot;test1-header&quot; class=&quot;accordion_headings&quot; &gt;
    &lt;div id=&quot;test1-content&quot;&gt;
        &lt;div class=&quot;accordion_child&quot;&gt;
        Quisque facilisis, ligula ut blandit hendrerit, purus neque rhoncus ipsum, sit amet ultrices mauris augue non arcu. Donec et sem nec libero viverra accumsan.
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--Fine voce di fisarmonica--&gt;
    &lt;!--Inizio voce di fisarmonica--&gt;
    &lt;div id=&quot;test1-header&quot; class=&quot;accordion_headings&quot;&gt;About Us&lt;/div&gt;
    &lt;div id=&quot;test1-content&quot;&gt;
        &lt;div class=&quot;accordion_child&quot;&gt;
        Quisque facilisis, ligula ut blandit hendrerit, purus neque rhoncus ipsum, sit amet ultrices mauris augue non arcu. Donec et sem nec libero viverra accumsan.
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--Fine voce di fisarmonica--&gt;
    &lt;!--Iniziovoce di fisarmonica--&gt;
    &lt;div id=&quot;test2-header&quot; class=&quot;accordion_headings&quot;&gt;Downloads&lt;/div&gt;
    &lt;div id=&quot;test2-content&quot;&gt;
        &lt;div class=&quot;accordion_child&quot;&gt;
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc ligula nisl, egestas non, pharetra vel, scelerisque accumsan, lacus. Proin nibh. Aenean dapibus. Quisque facilisis, ligula ut blandit hendrerit, purus neque rhoncus ipsum, sit amet ultrices mauris augue non arcu. Donec et sem nec libero viverra accumsan.
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--Fine voce di fisarmonica--&gt;
&lt;/div&gt;
&lt;!--Fine DIV Container Accordion--&gt;
&lt;/div&gt;
</pre>
<p>Terminate queste tre operazioni avremo un menu con effetto fisarmonica <strong>leggero e funzionante al 100%</strong>. Lo script è veramente comodo, un altro <strong>effetto 2.0 da inserire sul nostro sito personale</strong>.</p>
<p>Maggiori informazioni sullo script li troverete nel <a title="Simple Javascript Accordions" href="http://www.dezinerfolio.com/2007/07/19/simple-javascript-accordions/" target="_blank"><strong>sito</strong></a> dell&#8217;autore; è possibile vedere anche cosa fa lo script stesso andando alla pagina dedicata alle <a title="Simple Javascript Accordions - demo" href="http://www.dezinerfolio.com/wp-content/uploads/accordemo/01.html" target="_blank"><strong>demo</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/semplice-menu-verticale-con-effetto-fisarmonica-via-javascript/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

