<?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>Gleenk Webdesign</title>
	<atom:link href="https://www.gleenk.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.gleenk.com/</link>
	<description>Davide De Maestri - Webdesigner</description>
	<lastBuildDate>Mon, 19 Feb 2018 17:32:28 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.gleenk.com/wp-content/uploads/2014/02/cropped-logo-con-ditta-individuale-32x32.png</url>
	<title>Gleenk Webdesign</title>
	<link>https://www.gleenk.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Vue.js #03 – Tutorial &#8211; Computed Properties e Watch</title>
		<link>https://www.gleenk.com/vue-js-03-tutorial-computed-properties-watch/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Tue, 20 Feb 2018 08:30:08 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vuejs]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=4029</guid>

					<description><![CDATA[<p>Dopo aver visto come funzionano i metodi, vediamo cosa sono ed in che cosa si distinguono, in Vue.js, le computed properties e i watcher. Le computed properties sono funzioni che vengono eseguite soltanto quando necessario, ovvero quando &#8220;cambia&#8221; qualcosa che le riguarda. I metodi invece vengono eseguiti ogni volta che si esegue un&#8217;azione con Vue....</p>
<p>L'articolo <a href="https://www.gleenk.com/vue-js-03-tutorial-computed-properties-watch/">Vue.js #03 – Tutorial &#8211; Computed Properties e Watch</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Dopo aver visto come funzionano i metodi, vediamo cosa sono ed in che cosa si distinguono, in Vue.js, le <em>computed properties</em> e i <em>watcher</em>.</p>
<p><strong>Le computed properties sono funzioni che vengono eseguite soltanto quando necessario</strong>, ovvero quando &#8220;cambia&#8221; qualcosa che le riguarda. I metodi invece vengono eseguiti ogni volta che si esegue un&#8217;azione con Vue. <strong>I watcher sono invece funzioni che vengono eseguite quando cambia uno specifico <em>data</em></strong>. Watch nel senso proprio di &#8220;osservare&#8221; il cambiamento del valore di un dato. Nell&#8217;esempio seguente vediamo come funziona una computed property ed una funzione watch.</p>
<p>Nello specifico&#8230;</p>
<ol>
<li>Tramite le direttiva v-on:click (abbreviata in @click) andiamo ad aumentare o diminuire il valore del <em>data</em> chiamato &#8220;value&#8221;.</li>
<li>La computed property chiamata result() di default restituisce la scritta &#8220;Not there yet&#8221;, quindi non fa nulla finchè, come descritto sopra, questo valore non cambia.</li>
<li>Quando result() cambia (ovvero quando il valore che impostiamo è 16) allora si attiva il watch che, in questo caso, resetta value a 0. E così il circolo ricomincia.</li>
</ol>
<p class='codepen'  data-height='300' data-theme-id='13441' data-slug-hash='qxxLjM' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen qxxLjM by Davide De Maestri (@gleenk) on CodePen.</p>

<p>L'articolo <a href="https://www.gleenk.com/vue-js-03-tutorial-computed-properties-watch/">Vue.js #03 – Tutorial &#8211; Computed Properties e Watch</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/vue-js-01-tutorial-interazioni-col-dom/" rel="bookmark" title="Vue.js #01 &#8211; Tutorial &#8211; Interazioni col DOM">Vue.js #01 &#8211; Tutorial &#8211; Interazioni col DOM</a></li>
<li><a href="https://www.gleenk.com/css-grid-layout-tutorial-iniziare/" rel="bookmark" title="CSS Grid Layout &#8211; Tutorial per iniziare">CSS Grid Layout &#8211; Tutorial per iniziare</a></li>
<li><a href="https://www.gleenk.com/jquery-load-azioni-nella-stessa-pagina/" rel="bookmark" title="jQuery Load, importare pagine dentro altre pagine">jQuery Load, importare pagine dentro altre pagine</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Vue.js #02 – Tutorial – v-once, v-bind e v-html</title>
		<link>https://www.gleenk.com/vue-js-02-tutorial-v-once-v-bind-v-html/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Tue, 13 Feb 2018 15:54:38 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[vuejs]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=4023</guid>

					<description><![CDATA[<p>Vediamo brevemente 3 delle principali direttive di Vue.js per imparare a conoscerle meglio. Innanzitutto, che cos&#8217;è una direttiva (directive)? Una directive è un&#8217;istruzione che inserisco nel codice, e fa il binding (in italiano &#8220;legame&#8221;) tra l&#8217;html ed i dati che si trovano nell&#8217;istanza di Vue.js. La directive v-once In Vue.js quando andiamo a stampare una variabile/funzione...</p>
<p>L'articolo <a href="https://www.gleenk.com/vue-js-02-tutorial-v-once-v-bind-v-html/">Vue.js #02 – Tutorial – v-once, v-bind e v-html</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vediamo brevemente <strong>3 delle principali direttive di Vue.js</strong> per imparare a conoscerle meglio.</p>
<p>Innanzitutto, che cos&#8217;è una direttiva (<em>directive</em>)? Una directive è un&#8217;istruzione che inserisco nel codice, e fa il <em>binding</em> (in italiano &#8220;legame&#8221;) tra l&#8217;html ed i dati che si trovano nell&#8217;istanza di Vue.js.</p>
<h2>La directive v-once</h2>
<p>In Vue.js quando andiamo a stampare una variabile/funzione tra graffe, il suo valore viene sovrascritto se esso viene modificato dalla variabile/funzione stessa in altre parti, eseguite successivamente, del codice. Quindi se per esempio inizialmente diamo a {{ title }} il valore di &#8220;Hello World!&#8221; e successivamente quel valore viene cambiato, ovunque {{ title }} assumerà l&#8217;ultimo valore attribuitogli. Per evitare questo, e tenere traccia dei valori iniziali è possibile usare la <em>directive v-once, </em>come nell&#8217;esempio seguente:</p>
<p class='codepen'  data-height='300' data-theme-id='13441' data-slug-hash='rJzBZz' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen rJzBZz by Davide De Maestri (@gleenk) on CodePen.</p>

<h2>La directive v-bind</h2>
<p>La <em>directive v-bind</em> permette di  stampare un link dentro ad un attributo html in modo dinamico (ovvero generato da Vue). Quindi, per poter stampare un link o un valore dinamico, dentro ad un attributo html, non si dovrà scrivere semplicemente {{ link }} ma occorrerà usare v-bind. Come? Vediamolo nell&#8217;esempio:</p>
<p class='codepen'  data-height='300' data-theme-id='13441' data-slug-hash='rJzVRY' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen rJzVRY by Davide De Maestri (@gleenk) on CodePen.</p>

<h2>La directive v-html</h2>
<p>Ultima della nostra terna, è la <em>directive v-html</em> che permette di renderizzare codice html dentro alle nostre stringhe. Tuttavia bisogna prestare molta attenzione nell&#8217;utilizzo di v-html, infatti tramite questa direttiva è possibile iniettare codice malevole, è importante quindi fare in modo che venga utilizzato soltanto laddove si è sicuri che quell&#8217;output generato sia conosciuto e sicuro.</p>
<p class='codepen'  data-height='300' data-theme-id='13441' data-slug-hash='zRdGVW' data-default-tab='html,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen zRdGVW by Davide De Maestri (@gleenk) on CodePen.</p>

<p>L'articolo <a href="https://www.gleenk.com/vue-js-02-tutorial-v-once-v-bind-v-html/">Vue.js #02 – Tutorial – v-once, v-bind e v-html</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/vue-js-01-tutorial-interazioni-col-dom/" rel="bookmark" title="Vue.js #01 &#8211; Tutorial &#8211; Interazioni col DOM">Vue.js #01 &#8211; Tutorial &#8211; Interazioni col DOM</a></li>
<li><a href="https://www.gleenk.com/jquery-bind-unbind-prevenire-click-multipli/" rel="bookmark" title="jQuery bind e unbind, come prevenire click multipli">jQuery bind e unbind, come prevenire click multipli</a></li>
<li><a href="https://www.gleenk.com/css-grid-layout-tutorial-iniziare/" rel="bookmark" title="CSS Grid Layout &#8211; Tutorial per iniziare">CSS Grid Layout &#8211; Tutorial per iniziare</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Vue.js #01 &#8211; Tutorial &#8211; Interazioni col DOM</title>
		<link>https://www.gleenk.com/vue-js-01-tutorial-interazioni-col-dom/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Tue, 06 Feb 2018 17:10:12 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vuejs]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=4015</guid>

					<description><![CDATA[<p>Vue.js è un framework javascript leggero e versatile, che permette di interagire facilmente con il DOM. Sul sito ufficiale: https://vuejs.org/ è possibile trovare informazioni utili, documentazione e quant&#8217;altro. Quello che vediamo di seguito saranno semplici e basilari esercizi per entrare in confidenza con la sintassi e la logica di questo strumento, senza lo scopo o la...</p>
<p>L'articolo <a href="https://www.gleenk.com/vue-js-01-tutorial-interazioni-col-dom/">Vue.js #01 &#8211; Tutorial &#8211; Interazioni col DOM</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>Vue.js è un framework javascript leggero e versatile</strong>, che permette di interagire facilmente con il DOM. Sul sito ufficiale: <a href="https://vuejs.org/">https://vuejs.org/</a> è possibile trovare informazioni utili, documentazione e quant&#8217;altro. Quello che vediamo di seguito saranno <strong>semplici e basilari esercizi per entrare in confidenza con la sintassi</strong> e la logica di questo strumento, senza lo scopo o la presunzione di essere esaustivi o completi.</p>
<p>Una volta implementato nel nostro codice HTML il richiamo a Vue.js tramite CDN: <code>https://cdn.jsdelivr.net/npm/vue/dist/vue.js</code>, avremo a disposizione tutto ciò che è necessario per iniziare a divertirci. Vediamo quindi 3 semplici modi per interagire/renderizzare del codice sfruttando Vue.</p>
<p class='codepen'  data-height='400' data-theme-id='13441' data-slug-hash='RQGKYv' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen RQGKYv by Davide De Maestri (@gleenk) on CodePen.</p>

<p>Alcune brevi  note preliminari per comprendere l&#8217;esempio:</p>
<ul>
<li>L&#8217;interpolazione dei dati avviene tramite <strong>doppie parentesi graffe</strong> (in soldoni, viene interpretato e quindi &#8220;letto&#8221; da Vue.js)</li>
<li>L&#8217;oggetto Vue (new Vue) in questo esempio ha 3 proprietà ovvero:
<ul>
<li><em>el</em> (che definisce l&#8217;elemento del DOM dentro cui agisce Vue)</li>
<li><em>data</em> (che contiene le proprietà, in questo caso &#8220;title&#8221;)</li>
<li><em>methods</em> (che contiene i metodi/funzioni che eseguono le azioni)</li>
</ul>
</li>
<li>L&#8217;attributo <strong>v-on</strong>: che abbiamo assegnato all&#8217;input <strong>si chiama &#8220;direttiva&#8221; e si occupa di <em>ascoltare</em> gli eventi</strong> che arrivano dal DOM ed attivarsi all&#8217;occorrenza. In questo caso abbiamo detto di attivarsi quando viene effettuata qualsiasi attività sull&#8217;input stesso (keyup ecc&#8230;)</li>
</ul>
<p>Tornando invece all&#8217;esempio, sono presenti 3 modi diversi di interagire col DOM, rappresentati dai 3 metodi diversi utilizzati.</p>
<h2>Esempio 1: data-binding</h2>
<p>Nel primo caso, attraverso la direttiva v-on:input attiviamo il metodo changeTitle() che, come indicato nei commenti al codice, cambia il contenuto di title in base al <em>value</em> dell&#8217;elemento target. Quindi, in parole povere, ciò che viene digitato nell&#8217;input diventa il valore di title.</p>
<h2>Esempio 2</h2>
<p>Nel secondo esempio invece viene semplicemente mostrata la possibilità di inserire direttamente la funzione tra parentesi graffe e veder stampato il contenuto che viene ritornato dalla funzione. Questo è possibile soltanto se return restituisce una stringa.</p>
<h2>Esempio 3</h2>
<p>Questo esempio è stato fatto solo ed esclusivamente per far vedere una proprietà interessante di Vue. Ovvero che il framework ci permette di avere sempre a disposizione tutte le proprietà dell&#8217;oggetto, in questo caso &#8220;title&#8221; anche se si trovano al di fuori del nostro metodo.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>L'articolo <a href="https://www.gleenk.com/vue-js-01-tutorial-interazioni-col-dom/">Vue.js #01 &#8211; Tutorial &#8211; Interazioni col DOM</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/css-grid-layout-tutorial-iniziare/" rel="bookmark" title="CSS Grid Layout &#8211; Tutorial per iniziare">CSS Grid Layout &#8211; Tutorial per iniziare</a></li>
<li><a href="https://www.gleenk.com/jquery-tutorial-filtrare-un-set-di-risultati/" rel="bookmark" title="jQuery Tutorial: Filtrare un set di risultati">jQuery Tutorial: Filtrare un set di risultati</a></li>
<li><a href="https://www.gleenk.com/riordinare-elementi-con-jquery-sortable-e-salvarli-con-php/" rel="bookmark" title="Riordinare elementi con jQuery sortable e salvarli con PHP">Riordinare elementi con jQuery sortable e salvarli con PHP</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS Grid Layout &#8211; Tutorial per iniziare</title>
		<link>https://www.gleenk.com/css-grid-layout-tutorial-iniziare/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Mon, 08 May 2017 11:34:50 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[layout]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=3835</guid>

					<description><![CDATA[<p>È arrivato il momento di prendere contatto con il nuovo CSS Grid Layout!</p>
<p>L'articolo <a href="https://www.gleenk.com/css-grid-layout-tutorial-iniziare/">CSS Grid Layout &#8211; Tutorial per iniziare</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>È arrivato il momento di prendere contatto con il nuovo <strong>CSS Grid Layout</strong> (d&#8217;ora in poi <em>Grid</em>), il nuovo box model che permette di distribuire gli elementi di una pagina all&#8217;interno di un sistema di griglie. Grid nasce dopo l&#8217;avvento di <a href="https://www.gleenk.com/css-flexbox-quando-ha-realmente-senso-usarlo/">Flexbox </a>al quale va ad affiancarsi per ampliare le possibilità creative; Grid quindi non è un sostituto di Flexbox nè si vale il contrario. Come tutte le regole CSS, spesso sono complementari. (verifica <a href="http://caniuse.com/#feat=css-grid">qui </a>il supporto attuale dei browser)</p>
<h2>Linee di griglia, colonne, righe e celle.</h2>
<p><a href="https://www.gleenk.com/wp-content/uploads/2017/05/grid-terms-lines-rows-columns-cells-.svg"><img decoding="async" class="aligncenter size-full wp-image-3946" src="https://www.gleenk.com/wp-content/uploads/2017/05/grid-terms-lines-rows-columns-cells-.svg" alt="" /></a></p>
<p>Come viene ben mostrato nell&#8217;immagine soprastante ci sono 4 elementi che entrano in gioco quando usi Grid:</p>
<ol>
<li>Le linee di griglia (grid lines) colorate in grigio</li>
<li>Le colonne in azzurro</li>
<li>Le righe in verde</li>
<li>Le celle in arancione</li>
</ol>
<h2>Come creare una griglia?</h2>
<p>Immagina di voler creare una griglia con 6 elementi figli. Il primo passo da compiere è quello di impostare come sarà la griglia, definendo quindi righe e colonne tramite le proprietà <code>grid-template-columns</code> e <code>grid-template-rows</code>.</p>
<p>Prendi il seguente codice html e css come esempio:<br />
<strong>HTML</strong></p>
<pre class="brush: html; gutter: true">&lt;section class=&quot;grid-layout&quot;&gt;
  &lt;div class=&quot;item-1&quot;&gt;1&lt;/div&gt;
  &lt;div class=&quot;item-2&quot;&gt;2&lt;/div&gt;
  &lt;div class=&quot;item-3&quot;&gt;3&lt;/div&gt;
  &lt;div class=&quot;item-4&quot;&gt;4&lt;/div&gt;
  &lt;div class=&quot;item-5&quot;&gt;5&lt;/div&gt;
  &lt;div class=&quot;item-6&quot;&gt;6&lt;/div&gt;
&lt;/section&gt;</pre>
<p><strong>CSS</strong></p>
<pre class="brush: css; gutter: true">.grid-layout {
  display:grid;
  font-family: Arial, sans-serif;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 80px 80px;
}</pre>
<p><strong>Otterrai il seguente risultato:</strong></p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3947" src="https://www.gleenk.com/wp-content/uploads/2017/05/grid-01.png" alt="" width="319" height="177" srcset="https://www.gleenk.com/wp-content/uploads/2017/05/grid-01.png 319w, https://www.gleenk.com/wp-content/uploads/2017/05/grid-01-300x166.png 300w" sizes="(max-width: 319px) 100vw, 319px" /></p>
<ul>
<li>grid-template-columns: definisce il numero di colonne e la loro larghezza. Nel caso sopra abbiamo scritto 3 volte 100px, quindi 3 è il numero di colonne, 100px è la larghezza di ognunca delle colonne.</li>
<li>grid-template-rows: definisce il numero di righe (ovviamente devono esserci elementi sufficienti per riempirle) e l&#8217;altezza di ogni riga. Nel caso sopra abbiamo 2 righe, alte entrambe 80px.</li>
</ul>
<h2>Disporre gli elementi</h2>
<p>Nell&#8217;esempio soprastante hai visto come disporre righe e colonne. Immagina di voler cambiare la posizione di alcuni elementi. Come si può fare? Grazie alle proprietà grid-column e grid-row assegnate agli elementi figli è possibile. Per esempio assegnando le seguenti proprietà css:</p>
<pre class="brush: css; gutter: true">.grid-layout .item-1 {
  grid-column: 1;
  grid-row: 1;
}
.grid-layout .item-2 {
  grid-column: 3;
  grid-row: 1;
}
.grid-layout .item-3 {
  grid-column: 2;
  grid-row: 2;
}</pre>
<p><img decoding="async" class="aligncenter size-full wp-image-3948" src="https://www.gleenk.com/wp-content/uploads/2017/05/grid-02.png" alt="" width="310" height="168" srcset="https://www.gleenk.com/wp-content/uploads/2017/05/grid-02.png 310w, https://www.gleenk.com/wp-content/uploads/2017/05/grid-02-300x163.png 300w" sizes="(max-width: 310px) 100vw, 310px" /></p>
<p>Otterrai la stessa griglia ma avrai spostato gli elementi 1, 2, 3 in posizioni differenti molto rapidamente.</p>
<p>A questo punto puoi provare a fare un esperimento&#8230; Provando a rimuovere gli elementi 4,5,6 dal layout, otterrai il tuo primo layout a forma di griglia. Come? Così:</p>
<p><p class='codepen'  data-height='300' data-theme-id='13441' data-slug-hash='oWordG' data-default-tab='css,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen oWordG by Davide De Maestri (@gleenk) on CodePen.</p>
<br />
<span style="font-size: 0.875em;">Immagini tratte da <a href="https://webdesign.tutsplus.com/tutorials/css-grid-layout-quick-start-guide--cms-27238">CSS Grid Layout: A Quick Start Guide</a></span></p>
<p>L'articolo <a href="https://www.gleenk.com/css-grid-layout-tutorial-iniziare/">CSS Grid Layout &#8211; Tutorial per iniziare</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/layout-flessibile-css3/" rel="bookmark" title="Modello di Layout flessibile &#8211; il futuro del CSS3">Modello di Layout flessibile &#8211; il futuro del CSS3</a></li>
<li><a href="https://www.gleenk.com/layout-risoluzioni-diverse-css-media-queries/" rel="bookmark" title="Realizzare un layout per risoluzioni diverse con le Media Queries">Realizzare un layout per risoluzioni diverse con le Media Queries</a></li>
<li><a href="https://www.gleenk.com/css-tecniche-flexbox/" rel="bookmark" title="CSS &#8211; 5 Tecniche Flexbox pronte all&#8217;uso">CSS &#8211; 5 Tecniche Flexbox pronte all&#8217;uso</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>In che modo temi e plugin rallentano il tuo sito in WordPress</title>
		<link>https://www.gleenk.com/temi-e-plugin-rallentano-il-tuo-sito-wordpress/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Thu, 20 Apr 2017 10:09:33 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=3922</guid>

					<description><![CDATA[<p>Temi e plugin, croce e delizia di chi sviluppa siti web. Il loro impatto sui tempi di caricamento è un fattore rilevante su cui è bene informare ed essere informati.</p>
<p>L'articolo <a href="https://www.gleenk.com/temi-e-plugin-rallentano-il-tuo-sito-wordpress/">In che modo temi e plugin rallentano il tuo sito in WordPress</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Temi e plugin, croce e delizia di chi sviluppa siti web. In questo post analizzo il motivo per cui il loro impatto sui tempi di caricamento può essere un fattore molto molto rilevante su cui è bene essere informati. Per quanto riguarda i temi le possibilità di intervento sono ridotte all&#8217;osso, per soddisfare un pubblico variegato vengono infatti realizzati includendo e &#8220;caricando&#8221; <strong>una mole impressionante di files di cui l&#8217;utente finale ne utilizzerà una percentuale minima</strong>.</p>
<p>Il problema cruciale è che questa mole viene comunque in parte caricata dal sito impattando pesantemente sui tempi di caricamento. Se a questo aggiungi che normalmente un sito di piccole dimensioni viene ospitato su server condivisi&#8230; Il danno è fatto. Quindi, che fare?</p>
<p>Io, da web designer, <strong>sconsiglio da sempre l&#8217;utilizzo di temi laddove si è in presenza di un investimento ragionevole in termini di soldi da spendere per la propria immagine online</strong>, nei casi in cui fosse una scelta obbligata, dettata da esigenze che esulano dal discorso più strettamente creativo (anche su questo nutro comunque sempre perplessità :D) sarebbe fondamentale <strong>investire nell&#8217;ottimizzazione del sito stesso</strong> (per quanto possibile) e nella <strong>scelta di un piano hosting che possa migliorare i tempi di caricamento</strong>.</p>
<p>Chiusa la parentesi che riguarda i temi, passiamo ad analizzare invece l&#8217;impatto che hanno i plugin, sui quali, come accennavo prima, possiamo intervenire, anche solo per il semplice fatto che spesso è possibile cercare alternative o valutare di implementare soluzioni customizzate che non richiedano l&#8217;uso di plugin.</p>
<h2>Come funzionano i plugin per WordPress?</h2>
<p>I plugin per WordPress sono delle estensioni che aumentano le funzionalità di base del tuo sito WordPress aggiungendo per esempio Form di contatto, gallerie, funzionalità di vendita ecc&#8230; Ogni volta che un utente visita il tuo sito web, <strong>WordPress carica in ordine prima tutte le funzionalità presenti nel &#8220;core&#8221; e poi carica tutti i plugin che hai attivato</strong>. Per fare ciò vengono fatte delle <strong>richieste al server che ospita il tuo sito web</strong>, richieste che devono essere elaborate e restituite al tuo browser. Tutto questo richiede tempo.</p>
<h3>Come i plugin impattano sui tempi di caricamento?</h3>
<p>Ogni plugin di WordPress offre funzionalità differenti che possono necessitare di chiamate al database MySQL a livello di back-end e/o di front-end, così come di fogli di stile CSS, JavaScript, immagini ecc&#8230; Tutto questo, come dicevo prima, necessita che vengano effettuate delle richieste HTTP (per la parte front-end) al server, e <strong>ogni richiesta corrisponde ad una porzione di tempo richiesta per il caricamento complessivo</strong>.</p>
<p>Quando tutto questo avviene in modo ottimale, l&#8217;impatto sulle performance è minimo, tuttavia l&#8217;utilizzo di troppe risorse impatterà sull&#8217;esperienza dell&#8217;utente (UX) che visiterà il tuo sito web.</p>
<h3>Come controllare quali files vengono caricati dai plugin di WordPress?</h3>
<p>Per scoprire quali files vengono caricati insieme al tuo sito ed ai tuoi plugin, puoi servirti degli strumenti di sviluppo presenti nel browser (Ispeziona elemento per Chrome e Firefox) o di software dedicati (scelta consigliata). Nel caso volessi utilizzare il browser, apri la tab &#8220;Network&#8221; del tool, visita la pagina che ti interessa e sarai in grado di vedere l&#8217;elenco a cascata dei files richiesti ed i relativi tempi di caricamento. Alternativamente, i tools più utili per fare questo test sono:</p>
<ul>
<li>Pingdom: <a href="https://tools.pingdom.com/">https://tools.pingdom.com/</a> (imposta la località più vicina al tuo paese di residenza)</li>
<li>GTmetrix: <a href="https://gtmetrix.com/">https://gtmetrix.com/</a></li>
</ul>
<div id="attachment_3938" style="width: 854px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-3938" class="wp-image-3938 size-large" src="https://www.gleenk.com/wp-content/uploads/2017/04/pingdom-wh-844x562.png" alt="Pingdom tool - Tempi di caricamento" width="844" height="562" srcset="https://www.gleenk.com/wp-content/uploads/2017/04/pingdom-wh-844x562.png 844w, https://www.gleenk.com/wp-content/uploads/2017/04/pingdom-wh-300x200.png 300w, https://www.gleenk.com/wp-content/uploads/2017/04/pingdom-wh-400x267.png 400w, https://www.gleenk.com/wp-content/uploads/2017/04/pingdom-wh-768x512.png 768w, https://www.gleenk.com/wp-content/uploads/2017/04/pingdom-wh.png 983w" sizes="(max-width: 844px) 100vw, 844px" /><p id="caption-attachment-3938" class="wp-caption-text">Schermata files caricati dal server &#8211; Pingdom Tools</p></div>
<h3>Quando i plugin sono considerati troppi?</h3>
<p>Diventa quindi spontaneo chiedersi quando i plugin sono troppi. In realtà non esiste una risposta, <strong>tutto dipende da quali plugin stai utilizzando e come sono fatti</strong>. Un pessimo plugin potrebbe caricare 12 files contemporaneamente, mentre diversi plugin scritti bene ne potrebbero caricare meno.</p>
<p>Un plugin ben fatto cerca di ridurre al minimo il numero di richieste da fare al server, tuttavia non sempre vengono prese le giuste accortezze e <strong>l&#8217;impatto sui tempi di caricamento può diventare importante</strong>. Sicuramente un numero molto alto di plugin può comunque comportare rallentamenti su macchine non performanti. Per questo, se non è possibile fare a meno di numeri elevati, è necessario, dopo aver preso tutti gli accorgimenti possibili sul sito, <strong>affidarsi a server VPS, Cloud o dedicati per migliorare le performance</strong>. La combinazione ottimale di cache e server performante infatti permette di gestire al meglio la maggior parte delle situazioni che rallentano il tuo sito in WordPress.</p>
<h3>Per addetti ai lavori, come ottimizzare gli assets dei plugin manualmente</h3>
<p>Se sei un <strong>professionista che si occupa di WordPress</strong> puoi cercare di controllare come vengono caricati i files dei plugin, per farlo occorrono competenze di codice e capacità di debug.</p>
<p>Il modo corretto di caricare script e css in WordPress è tramite le funzioni <code>wp_enqueue_style</code> e <code>wp_enqueue_script</code> . WordPress offre anche funzioni per <strong>deregistrare questi script e css</strong>. Farlo tuttavia significherebbe rompere i plugin o causarne malfunzionamenti. Per risolvere questo problema dovresti copiare e incollare questi stili e script dentro al tuo file css e js per caricarli tutti insieme una volta sola riducendo le richieste http.</p>
<h3>Disabilitare fogli stile in WordPress</h3>
<p>Innanzitutto occorre<strong> trovare il nome del css che ti interessa</strong> tramite l&#8217;ispeziona elemento o, meglio, visualizzando il sorgente della pagina di riferimento. Il nome utile è quello che si trova nell&#8217;ID della proprietà <code>&lt;link rel="stylesheet"</code> . Una volta segnato il nome (per esempio &#8220;font-awesome-css&#8221;, puoi deregistrarlo dentro al file function in questo modo:</p>
<pre class="brush: php; gutter: true">add_action( &#039;wp_print_styles&#039;, &#039;my_deregister_styles&#039;, 100 );
function my_deregister_styles() {
wp_deregister_style( &#039;font-awesome-css&#039; );
}</pre>
<p>In questo modo ricordati che stai rimuovendo di fatto questo css da tutto il sito senza alcun criterio di esclusione. Lo stesso può essere fatto con i file .js dei plugin. Vediamo come.</p>
<h3>Disabilitare il js dei plugin WordPress</h3>
<p>Come per i CSS, <strong>puoi disabilitare il file js</strong> dei plugin deregistrandoli. A differenza di quanto visto prima, il nome del file che ti interessa non si vedrà utilizzando l&#8217;ispeziona elemento, sarà infatti necessario esplorando i files del plugin&#8230; Esiste però un modo più rapido per elencare tutte le chiamate fatte dai plugin. Occorre inserire questa funzione dentro il file functions.php in modo da creare uno shortcode che elencherà tutti gli script generati dai plugin.</p>
<pre class="brush: php; gutter: true">function wpb_display_pluginhandles() { 
$wp_scripts = wp_scripts(); 
$handlename .= &quot;&lt;ul&gt;&quot;; 
    foreach( $wp_scripts-&gt;queue as $handle ) :
      $handlename .=  &#039;&lt;li&gt;&#039; . $handle .&#039;&lt;/li&gt;&#039;;
    endforeach;
$handlename .= &quot;&lt;/ul&gt;&quot;;
return $handlename; 
}
add_shortcode( &#039;pluginhandles&#039;, &#039;wpb_display_pluginhandles&#039;);</pre>
<p>Andando ad inserire quindi lo shortcode <code>[pluginhandles]</code> dentro ad una pagina qualsiasi otterrai il fatidico elenco puntato con i nomi che ti interessano.</p>
<p>È ora possibile deregistrarli come fatto in precedenza. Ipotizzando di aver trovato lo script denominato &#8220;contact-form-7&#8221;, potrai deregistrarlo così:</p>
<pre class="brush: php; gutter: true">add_action( &#039;wp_print_scripts&#039;, &#039;my_deregister_javascript&#039;, 100 );

function my_deregister_javascript() {
wp_deregister_script( &#039;contact-form-7&#039; );
}</pre>
<p>Ricordati che così facendo impedirai ai plugin di funzionare correttamente&#8230; A cosa serve quindi tutto ciò? Il senso sta nell&#8217;<strong>utilizzare queste regole aggiungendo delle esclusioni in modo che siano limitate solo ad alcune pagine</strong> e non impattino sui tempi di caricamento dove non sono presenti.</p>
<p>Vediamo quindi come caricare gli script solo in pagine specifiche.</p>
<h3>Caricare gli script in pagine specifiche</h3>
<p>Ipotizziamo che tu abbia sul tuo sito la form di contatto, generata usando Contact Form 7, solo nella pagina contatti. Non sarà necessario caricare i files richiesti dal plugin in tutto il sito. Potrai quindi, sempre tramite il file functions.php decidere di deregistrare completamente il plugin ad eccezione della pagina contatti:</p>
<pre class="brush: php; gutter: true">add_action( &#039;wp_print_scripts&#039;, &#039;my_deregister_javascript&#039;, 100 );

function my_deregister_javascript() {
if ( !is_page(&#039;Contatti&#039;) ) {
wp_deregister_script( &#039;contact-form-7&#039; );
}
}</pre>
<p>Et voilà, il gioco è fatto.</p>
<p><span style="font-size: 0.75em;">Ispirato a <a href="http://www.wpbeginner.com/wp-tutorials/how-wordpress-plugins-affect-your-sites-load-time/">How WordPress Plugins Affect Your Site’s Load Time</a></span></p>
<p>L'articolo <a href="https://www.gleenk.com/temi-e-plugin-rallentano-il-tuo-sito-wordpress/">In che modo temi e plugin rallentano il tuo sito in WordPress</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/aggiungere-la-traduzione-ad-un-plugin-o-tema-wordpress/" rel="bookmark" title="Aggiungere la Traduzione ad un Plugin o Tema WordPress">Aggiungere la Traduzione ad un Plugin o Tema WordPress</a></li>
<li><a href="https://www.gleenk.com/aumentare-la-velocita-di-un-sito/" rel="bookmark" title="Aumentare la velocità di un sito">Aumentare la velocità di un sito</a></li>
<li><a href="https://www.gleenk.com/elencare-gli-utenti-del-tuo-sito-con-wordpress/" rel="bookmark" title="Elencare gli utenti del tuo sito con WordPress">Elencare gli utenti del tuo sito con WordPress</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS Flexbox, è ora di usarlo! Ma quando ha realmente senso?</title>
		<link>https://www.gleenk.com/css-flexbox-quando-ha-realmente-senso-usarlo/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Wed, 26 Oct 2016 13:47:41 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[flexbox]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=3837</guid>

					<description><![CDATA[<p>Vediamo brevemente 3 situazioni in cui è diventato indispensabile usare il Flexbox. Statistiche alla mano, è ora di iniziare.</p>
<p>L'articolo <a href="https://www.gleenk.com/css-flexbox-quando-ha-realmente-senso-usarlo/">CSS Flexbox, è ora di usarlo! Ma quando ha realmente senso?</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Flexbox o non flexbox? Sono diversi anni che molti di noi si chiedono quando sia arrivato il momento di utilizzarlo in produzione, e non c&#8217;è ombra di dubbio che quel tempo sia finalmente giunto. <a href="http://caniuse.com/#feat=flexbox"><em>Caniuse</em> ci dice</a> infatti che il <strong>97% dell&#8217;utenza internet</strong> ha un dispositivo (desktop o mobile) che <strong>lo supporta</strong>.</p>
<p>Se nel corso degli anni la sintassi ha subito diversi cambiamenti, oggi, grazie anche all&#8217;uso più diffuso di sistemi di compilazione automatizzata (nello specifico autoprefixer) è possibile garantire un <strong>supporto quasi totale</strong>. Tuttavia, come ogni nuova tecnica offerta dai CSS, <strong>è bene non abusarne</strong>. Vediamo quindi ora le <strong>3 funzionalità per cui flexbox è indispensabile</strong> e risolve facilmente problemi &#8220;storici&#8221; che ogni webdesigner si è trovato a fronteggiare.</p>
<p>Per una guida completa su flexbox vi consiglio di leggere questa ottima guida di <a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/">CSS Tricks: A Complete Guide to Flexbox</a>.</p>
<h2>Altezze uguali degli elementi</h2>
<p>Uno dei casi storici in cui è sorta la necessità di avere la stessa altezza tra due elementi, riguarda la combinazione sidebar+contenuto. Nell&#8217;esempio sottostante infatti, per poter ottenere la medesima altezza tra le due parti, era necessario avvalersi di javascript. Attraverso flexbox è sufficiente dichiarare <strong><em>display:flex</em></strong> all&#8217;elemento contenitore (per esempio il main che contiene sidebar e contenuto) ed i due elementi figli avranno automaticamente la medesima altezza.</p>
<p><img decoding="async" class="aligncenter size-large wp-image-3840" src="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-1-844x563.png" alt="Flexbox esempio stessa altezza" width="844" height="563" srcset="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-1-844x563.png 844w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-1-300x200.png 300w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-1-400x267.png 400w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-1-768x512.png 768w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-1.png 900w" sizes="(max-width: 844px) 100vw, 844px" /></p>
<p>Questo esempio ci porta immediatamente ad analizzare un&#8217;altra situazione di uso comune.</p>
<p>Prendete una serie di elementi ripetuti (con float o inline-block abitualmente) che, pur presentando contenuti con lunghezza differente, abbiamo la stessa altezza. Anche in questo caso era necessario dichiarare un&#8217;altezza fissa comune, oppure una min-height o trovare l&#8217;elemento più alto in javascript ed assegnare a tutti la sua altezza. Questo presentava la necessità di dover gestire i vari casi responsive cambiando le altezze.</p>
<p>Tutto ciò non è più necessario, infatti, come abbiamo visto nell&#8217;esempio sopra, la stessa proprietà può essere applicata al nuovo caso.<br />
<img decoding="async" class="aligncenter size-large wp-image-3842" src="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-2-844x510.png" alt="Flexbox su liste di elementi" width="844" height="510" srcset="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-2-844x510.png 844w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-2-300x181.png 300w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-2-400x242.png 400w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-2-768x464.png 768w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-2.png 900w" sizes="(max-width: 844px) 100vw, 844px" /><img decoding="async" class="aligncenter size-large wp-image-3841" src="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-844x470.png" alt="quando-usare-flexbox-3" width="844" height="470" srcset="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-844x470.png 844w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-300x167.png 300w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-400x223.png 400w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-768x428.png 768w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3.png 900w" sizes="(max-width: 844px) 100vw, 844px" /></p>
<p>Tuttavia, come si vede dall&#8217;esempio, occorre sistemare qualcosa. Dovremo introdurre una nuova proprietà, chiamata flex-wrap, e dovremo assegnarle l&#8217;attributo wrap. Di default infatti <strong>flexbox mette tutti gli elementi su di una linea</strong>. Attraverso <strong><em>flex-wrap:wrap</em></strong> diciamo invece di <strong>andare a capo</strong> su più righe in modo che i contenuti occupino lo spazio necessario richiesto:</p>
<p><img decoding="async" class="aligncenter size-large wp-image-3841" src="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-844x470.png" alt="Flex-wrap per andare a capo" width="844" height="470" srcset="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-844x470.png 844w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-300x167.png 300w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-400x223.png 400w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3-768x428.png 768w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-3.png 900w" sizes="(max-width: 844px) 100vw, 844px" /></p>
<h2>Riordinamento degli elementi</h2>
<p>Ci sono due casi in cui abitualmente occorre poter cambiare l&#8217;ordine degli elementi rapidamente.</p>
<ol>
<li>Per finalità SEO, quando si vuole che un testo venga letto &#8220;prima&#8221; dallo spider</li>
<li>Quando su mobile si vuole che un&#8217;elemento che a codice viene &#8220;prima&#8221;, venga spostato visivamente dopo o viceversa</li>
</ol>
<p>Flexbox offre una comodissima soluzione. Attraverso la <strong>proprietà order</strong>, dichiarata ad un elemento figlio, si definisce il <strong>numero di posizione</strong> in cui dovrà apparire.</p>
<p><img decoding="async" class="aligncenter size-large wp-image-3843" src="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-4-844x470.png" alt="Riordinamento con flexbox" width="844" height="470" srcset="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-4-844x470.png 844w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-4-300x167.png 300w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-4-400x223.png 400w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-4-768x428.png 768w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-4.png 900w" sizes="(max-width: 844px) 100vw, 844px" /></p>
<p>Nel caso sopra potremo quindi, per esempio, decidere di cambiare l&#8217;ordine visivo su mobile. Nello specifico vediamo anche come sia possibile passare da un ordine orizzontale ad uno verticale, utilizzando la proprietà flex-direction.</p>
<h2>Allineamenti nel &#8220;vuoto&#8221;</h2>
<p>Per concludere, flexbox diventa <strong>irrinunciabile quando vogliamo allineare rapidamente un elemento sia verticalmente che orizzontalmente rispetto al contenitore</strong> (NB: il contenitore deve avere delle dimensioni o comunque occupare uno spazio fisico per poter contenere elementi allineati). Per farlo occorre assegnare al contenitore le proprietà <em><strong>align-items: center</strong></em> e <em><strong>justify-content:center</strong></em> che allineano gli elementi figli rispettivamente in orizzontale e verticale. All&#8217;elemento figlio potrete assegnare una larghezza massima a piacere.</p>
<p><img decoding="async" class="aligncenter size-large wp-image-3846" src="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-5b-844x470.png" alt="quando-usare-flexbox-5b" width="844" height="470" srcset="https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-5b-844x470.png 844w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-5b-300x167.png 300w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-5b-400x223.png 400w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-5b-768x428.png 768w, https://www.gleenk.com/wp-content/uploads/2016/10/quando-usare-flexbox-5b.png 900w" sizes="(max-width: 844px) 100vw, 844px" /></p>
<p>&nbsp;</p>
<p>Queste sono le 3 situazioni principali in cui mi è capitato di imbattermi quotidianamente e che hanno trovato beneficio dall&#8217;arrivo di flexbox.</p>
<p>L'articolo <a href="https://www.gleenk.com/css-flexbox-quando-ha-realmente-senso-usarlo/">CSS Flexbox, è ora di usarlo! Ma quando ha realmente senso?</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/css-tecniche-flexbox/" rel="bookmark" title="CSS &#8211; 5 Tecniche Flexbox pronte all&#8217;uso">CSS &#8211; 5 Tecniche Flexbox pronte all&#8217;uso</a></li>
<li><a href="https://www.gleenk.com/clear-di-elementi-float-la-soluzione/" rel="bookmark" title="Clear di elementi float: la soluzione cross-browser!">Clear di elementi float: la soluzione cross-browser!</a></li>
<li><a href="https://www.gleenk.com/layout-flessibile-css3/" rel="bookmark" title="Modello di Layout flessibile &#8211; il futuro del CSS3">Modello di Layout flessibile &#8211; il futuro del CSS3</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>HTML5 attributo required e fallback</title>
		<link>https://www.gleenk.com/html5-attributo-required-fallback/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Mon, 23 May 2016 06:00:21 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[fallback]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[required]]></category>
		<category><![CDATA[validazione]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=3577</guid>

					<description><![CDATA[<p>Da quando è uscito HTML5 lo standard vuole che si usi l’attributo required per rendere obbligatorio un campo. Tuttora però, come evidenzia caniuse.com, abbiamo un supporto parziale soprattutto per browser dei dispositivi mobile.</p>
<p>L'articolo <a href="https://www.gleenk.com/html5-attributo-required-fallback/">HTML5 attributo required e fallback</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I campi obbligatori nelle form ti danno noie?</p>
<p>Da quando è uscito <strong>HTML5</strong> lo standard vuole che si usi l&#8217;attributo <em>required</em> per rendere obbligatorio un campo. Tuttora però, come evidenzia <a href="http://caniuse.com/#feat=form-validation">caniuse.com</a>, abbiamo un supporto parziale soprattutto per browser dei dispositivi mobile.</p>
<p>Diventa così indispensabile mettere a disposizione delle fallback per ovviare ogni tipo di problema.</p>
<p>Vediamo quindi, in questo tutorial, <strong>come inserire campi obbligatori tramite l&#8217;attributo required su tutti i dispositivi desktop e mobile</strong>.</p>
<h2>jQuery, Validation, Modernizr e si comincia</h2>
<p>Procuriamoci <a href="http://jquery.com/">jQuery</a>, <a href="https://jqueryvalidation.org/">jQuery Validation</a> e <a href="http://www.modernizr.com/">Modernizr</a> ed incominciamo a scrivere&#8230;</p>
<h3>HTML</h3>
<pre class="brush: html; gutter: true">&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
&lt;label for=&quot;nome&quot;&gt;Nome&lt;/label&gt;
&lt;input type=&quot;text&quot; name=&quot;nome&quot; id=&quot;nome&quot; required&gt;

&lt;label for=&quot;email&quot;&gt;Email&lt;/label&gt;
&lt;input type=&quot;email&quot; name=&quot;email&quot; id=&quot;email&quot; required&gt;

&lt;button type=&quot;submit&quot;&gt;Invia&lt;/button&gt;
&lt;/form&gt;</pre>
<h3>Javascript</h3>
<p>Tramite Modernizr verifichiamo il supporto per &#8220;required&#8221; usando <code>if (!Modernizr.input.required) {</code> se non troveremo il supporto aggiungeremo una classe chiamata required che permetterà di attivare la fallback.</p>
<pre class="brush: javascript; gutter: true">(function ($) {

	// controlla il supporto per &quot;required&quot;
	if (Modernizr.input.required) {

		// non fare nulla se è supportato

	} else {

		// se no attraversa tutti i campi input
		$(&#039;form&#039;).find(&#039;input[required]&#039;).each(function () {

			// e aggiungi una classe required
			$(this).attr(&#039;class&#039;, &#039;required &#039; + this.getAttribute(&#039;type&#039;)).removeAttr(&#039;required&#039;);

		});

		// e inizializza il plugin di validazione
		$(&#039;form&#039;).each(function () {
			$(this).validate();
		});

	}

}(jQuery));</pre>
<p>Et voilà. Il gioco è fatto.</p>
<p>PS: Per customizzare le opzioni di validazione vi invito a leggere la <a href="https://jqueryvalidation.org/documentation/">documentazione di jQuery validation</a>!</p>
<p>L'articolo <a href="https://www.gleenk.com/html5-attributo-required-fallback/">HTML5 attributo required e fallback</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/placeholder-html5-in-ie8-e-ie7-jquery/" rel="bookmark" title="Placeholder HTML5 in ie8 e ie7 con jQuery">Placeholder HTML5 in ie8 e ie7 con jQuery</a></li>
<li><a href="https://www.gleenk.com/5-tag-html-poco-utilizzati-come-usarli/" rel="bookmark" title="5 tag HTML poco utilizzati &#8211; Come usarli">5 tag HTML poco utilizzati &#8211; Come usarli</a></li>
<li><a href="https://www.gleenk.com/estrazione-numeri-casuali-compresi-tra-due-valori-jquery-javascript/" rel="bookmark" title="Estrazione di numeri casuali compresi tra due valori in jQuery/Javascript">Estrazione di numeri casuali compresi tra due valori in jQuery/Javascript</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS &#8211; 5 Tecniche Flexbox pronte all&#8217;uso</title>
		<link>https://www.gleenk.com/css-tecniche-flexbox/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Mon, 16 May 2016 10:21:56 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[flexbox]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=3784</guid>

					<description><![CDATA[<p>Vediamo come ottenere rapidamente 5 risultati con FlexBox che richiederebbero diversi Hack se utilizzassimo gli approcci del passato.</p>
<p>L'articolo <a href="https://www.gleenk.com/css-tecniche-flexbox/">CSS &#8211; 5 Tecniche Flexbox pronte all&#8217;uso</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Giusto il tempo che anche i browser più datati finiscano nel dimenticatoio del web (<a href="http://caniuse.com/#feat=flexbox">qualcuno ha detto IE9?</a>), ed il <strong>modello flexbox</strong> dei CSS potrà diventare standard. Fioccano in rete tips e consigli per iniziare ad usarlo in modo efficace, in questo tutorial vediamo come <strong>ottenere rapidamente 5 risultati</strong> che richiederebbero diversi Hack se utilizzassimo gli approcci del passato.</p>
<h2>Colonne con la stessa altezza</h2>
<p>Personalmente, ad oggi, per realizzare elementi con la stessa altezza in modo &#8220;dinamico&#8221; mi avvalevo dell&#8217;ottimo script <a href="http://brm.io/jquery-match-height/">matcHeight.js</a>, laddove min-height non veniva in soccorso in modo efficace. Attraverso il <em>flex-model</em> non c&#8217;è niente di più semplice in quanto le colonne create vengono istanziate con altezze uguali di default. Come? Così:</p>
<pre class="brush: css; gutter: true">.container {
  /* Inizializza il flex model */
	display: flex;
  /* Valori di default che impostiamo a scopo didattico */
	flex-direction: row; /* Disponi orizzontalmente gli elementi dentro container */
  align-items: stretch; /* Gli elementi dentro container prendono l&#039;altezza massima consentita */
}</pre>
<p>Per vedere un esempio concreto di applicazione vi invito a vedere <a href="http://demo.tutorialzine.com/2014/10/easiest-way-equal-height-sidebar/">questa pagina d&#8217;esempio</a> (dove main e aside se ispezionate il sorgente hanno la stessa altezza).</p>
<h2>Elementi riordinati</h2>
<p>Una delle potenzialità del Flexbox è la possibilità di <em>cambiare al volo l&#8217;ordinamento degli elementi</em>. Questo può risultare utile, per esempio in ambito SEO, per decidere di mostrare visivamente prima alcuni elementi che a livello di codice si trovano dopo. Oppure possiamo finalmente &#8220;spostare&#8221; gli elementi quando facciamo uso delle <a href="https://www.gleenk.com/css-per-dimensioni-di-schermo-diverse-con-le-media-queries/">media-queries</a> per elementi responsive.</p>
<p>Ad oggi infatti si era costretti a mantenere la stessa sequenza visiva su Desktop e su Mobile andando ad incolonnare gli elementi.</p>
<p>Grazie a questa potenzialità non saremo più vincolati:</p>
<pre class="brush: css; gutter: true">.container{
   display: flex;
}

/* Visivamente fa fede l&#039;ordinamento impostato dai CSS */

.blue{
   order: 3;
}
.red{
   order: 2;
}
.green{
   order: 1;
}</pre>
<h2>Centrare elementi orizzontalmente e verticalmente</h2>
<p>Una delle operazioni per cui chiunque ha perso tempo nel corso della sua carriera di web designer trova finalmente LA soluzione tramite il modello flexbox. Stop a display table, a pseudoelementi al 100% ecc&#8230; Justify-content e Align-items saranno da oggi le vostre migliori amiche!</p>
<pre class="brush: css; gutter: true">.container{
	display: flex;

	/*Centra sull&#039;asse primario */
	justify-content: center;

	/* Centra sull&#039;asse secondario */
        align-items: center;
}</pre>
<h2>Responsive, da orizzontale a verticale</h2>
<p>Tramite l&#8217;utilizzo delle proprietà flex-direction e di flex possiamo passare rapidamente da un layout che si sviluppa in orizzontale ad uno che si sviluppa in verticale:</p>
<pre class="brush: css; gutter: true">.container{
	display: flex;
}

/* impostiamo quanto spazio sul totale occupano le colonne */

.col-1{
	flex: 1;
}

.col-2{
	flex: 2;
}

@media (max-width: 800px){
	.container{
		/* Trasformiamo le righe in colonne */
		flex-direction: column;		
	}
}</pre>
<p>Sticky footer delle mie brame!</p>
<p>Come ti blocco in fondo alla pagina senza impazzire? L&#8217;operazione da svolgere qui è più complessa, infatti dobbiamo impostare al body e all&#8217;html un&#8217;altezza del 100%, dopodichè dobbiamo dire, tramite la proprietà flex, &#8220;quanto spazio deve occupare&#8221; il corpo della pagina e quanto il footer. Come? Così (descrizione nel codice):</p>
<pre class="brush: css; gutter: true">html{
    height: 100%;
}

body{
    display: flex;
    flex-direction: column;
    height: 100%;
}

.main{
   /* La sezione principale del sito prenderà tutto lo spazio disponibile nella pagina che non è occupato dal footer */
   flex: 1 0 auto;
}

footer{
   /* Il footer prendereà tutto lo spazio verticale che server e non un pixel di più. */
   flex: 0 0 auto;
}</pre>
<p><img decoding="async" class="aligncenter size-large wp-image-3792" src="https://www.gleenk.com/wp-content/uploads/2016/05/sticky-footer-844x580.png" alt="sticky-footer" width="844" height="580" srcset="https://www.gleenk.com/wp-content/uploads/2016/05/sticky-footer-844x580.png 844w, https://www.gleenk.com/wp-content/uploads/2016/05/sticky-footer-300x206.png 300w, https://www.gleenk.com/wp-content/uploads/2016/05/sticky-footer-400x275.png 400w, https://www.gleenk.com/wp-content/uploads/2016/05/sticky-footer-768x527.png 768w, https://www.gleenk.com/wp-content/uploads/2016/05/sticky-footer.png 1401w" sizes="(max-width: 844px) 100vw, 844px" /></p>
<p>Se qualche proprietà ti fosse poco chiara ti invito a leggere questo post per approfondire: <a href="https://css-tricks.com/almanac/properties/f/flex/">Flex &#8211; CSS Tricks</a></p>
<p><span style="font-size: 0.875em;">Articolo ispirato a <a href="http://tutorialzine.com/2016/04/5-flexbox-techniques-you-need-to-know-about/">5 Flexbox Techniques You Need to Know About</a></span></p>
<p>L'articolo <a href="https://www.gleenk.com/css-tecniche-flexbox/">CSS &#8211; 5 Tecniche Flexbox pronte all&#8217;uso</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/layout-flessibile-css3/" rel="bookmark" title="Modello di Layout flessibile &#8211; il futuro del CSS3">Modello di Layout flessibile &#8211; il futuro del CSS3</a></li>
<li><a href="https://www.gleenk.com/tecniche-seo-per-il-2011-e-non-solo/" rel="bookmark" title="Tecniche SEO per il 2011 e non solo">Tecniche SEO per il 2011 e non solo</a></li>
<li><a href="https://www.gleenk.com/svelare-footer-7-linee-css/" rel="bookmark" title="Effetto rivela Footer con 7 linee di CSS">Effetto rivela Footer con 7 linee di CSS</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Memorizzare e stampare i valori di una sessione WordPress</title>
		<link>https://www.gleenk.com/come-memorizzare-e-stampare-i-valori-di-una-sessione-in-wordpress/</link>
		
		<dc:creator><![CDATA[gleenk]]></dc:creator>
		<pubDate>Thu, 18 Feb 2016 11:41:05 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[sessioni]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.gleenk.com/?p=3727</guid>

					<description><![CDATA[<p>Vediamo rapidamente come fare per memorizzare e stampare i valori di una sessione in WordPress</p>
<p>L'articolo <a href="https://www.gleenk.com/come-memorizzare-e-stampare-i-valori-di-una-sessione-in-wordpress/">Memorizzare e stampare i valori di una sessione WordPress</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Oggi vediamo rapidamente come fare per <strong>memorizzare e stampare i valori di una sessione in WordPress</strong>. Un esempio di applicazione pratica è quello di voler <strong>mostrare un popup sul sito solamente la prima volta</strong> che si apre ed evitare, durante la navigazione in sessione, che ad ogni cambio pagina ricompaia.</p>
<p>Come risolviamo questo <strong>semplice problema</strong>? Tramite l&#8217;utilizzo delle sessioni.</p>
<p>Piccola premessa: WordPress non permette di utilizzare le funzioni salvo diverse indicazioni. Per permettergli di farlo dobbiamo inserire questa porzione di codice, in cima al file functions.php</p>
<pre class="brush: php; gutter: true">if (!session_id()) {
    session_start();
}</pre>
<p>A questo punto possiamo <strong>impostare la nostra sessione</strong> all&#8217;interno del nostro tema WordPress. Per esempio, apriamo header.php ed inseriamo quanto segue:</p>
<pre class="brush: php; gutter: true">&lt;?php
	session_start();
	
	if (!$_SESSION[&#039;splashscreen&#039;]){

		echo &quot;Mostra Popup&quot;;
		$_SESSION[&#039;splashscreen&#039;] = true;

	} else {
		
		echo &quot;Non Mostrare Popup&quot;;
	}
?&gt;</pre>
<p>In questo modo, la prima porzione di codice verrà mostrata solamente al primo caricamento della pagina/sito, mentre successivamente i tuoi utenti saranno liberi di navigare senza distrazioni! Fanne buon uso!</p>
<p>L'articolo <a href="https://www.gleenk.com/come-memorizzare-e-stampare-i-valori-di-una-sessione-in-wordpress/">Memorizzare e stampare i valori di una sessione WordPress</a> proviene da <a href="https://www.gleenk.com">Gleenk Webdesign</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Articoli correlati:<ol>
<li><a href="https://www.gleenk.com/aggiungere-una-pagina-splash-al-tuo-sito-in-wordpress/" rel="bookmark" title="Aggiungere una pagina splash al tuo sito in WordPress">Aggiungere una pagina splash al tuo sito in WordPress</a></li>
<li><a href="https://www.gleenk.com/elencare-gli-utenti-del-tuo-sito-con-wordpress/" rel="bookmark" title="Elencare gli utenti del tuo sito con WordPress">Elencare gli utenti del tuo sito con WordPress</a></li>
<li><a href="https://www.gleenk.com/come-creare-widget-personalizzato-per-wordpress/" rel="bookmark" title="Come creare un widget personalizzato per WordPress">Come creare un widget personalizzato per WordPress</a></li>
</ol></p>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
