<?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>display: block</title>
	<atom:link href="http://www.dimensionedelta.net/block/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dimensionedelta.net/block</link>
	<description>HTML5, CSS3 e altri simpatici standard</description>
	<lastBuildDate>Tue, 12 Apr 2011 19:25:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Web font: nuova sintassi</title>
		<link>http://www.dimensionedelta.net/block/2011/04/web-font-nuova-sintassi/</link>
		<comments>http://www.dimensionedelta.net/block/2011/04/web-font-nuova-sintassi/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 14:32:46 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[font-face]]></category>
		<category><![CDATA[webfonts]]></category>

		<guid isPermaLink="false">http://www.dimensionedelta.net/block/?p=144</guid>
		<description><![CDATA[Uno dei problemi di cui si sente spesso molta gente lamentarsi è che &#8220;non passa giorno senza che cambi qualche sintassi&#8221;. Naturalmente non è vero, ma effettivamente ogni tanto qualcosa cambia e tenersi aggiornati è una buona idea&#8230; come in questo caso. La sintassi &#8220;a prova di proiettile&#8221; per l&#8217;inclusione dei web font che vi [...]]]></description>
			<content:encoded><![CDATA[<p>Uno dei problemi di cui si sente spesso molta gente lamentarsi è che &#8220;non passa giorno senza che cambi qualche sintassi&#8221;.</p>
<p>Naturalmente non è vero, ma effettivamente ogni tanto qualcosa cambia e tenersi aggiornati è una buona idea&#8230; come in questo caso. </p>
<p>La sintassi &#8220;a prova di proiettile&#8221; per l&#8217;inclusione dei <strong>web font</strong> che <a href="http://www.dimensionedelta.net/block/2010/11/web-fonts-ovvero-il-ritorno-di-font-face/">vi avevo riportato qualche tempo fa</a>&#8230; non ha resistito ai proiettili di Android e di Internet Explorer 9 in modalità compatibile 7 e 8, ecco quindi la nuova sintassi!<br />
<span id="more-144"></span></p>
<p>Questa volta dobbiamo ringraziare <strong>Fontspring</strong> che in una serie di <a href="http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax">due</a> <a href="http://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">articoli</a> ha aggiornato la sintassi di Paul Irish in una che a oggi funziona davvero ovunque. </p>
<pre class="brush: css; title: ;">
@font-face {
	font-family: 'MyFontFamily';
	src: url('myfont-webfont.eot');
	src: url('myfont-webfont.eot?iefix') format('eot'),
	     url('myfont-webfont.woff') format('woff'),
	     url('myfont-webfont.ttf')  format('truetype'),
	     url('myfont-webfont.svg#svgFontName') format('svg');
}
</pre>
<p>Vediamo in breve le modifiche.</p>
<p>IE cerca di leggere tutti i formati (fallendo) e a questo si rimedia aggiungendo un &#8220;?&#8221; nella dichiarazione del suo formato (.eot). La doppia dichiarazione .eot serve per la modalità compatibile 7 e 8 di Internet Explorer 9. Inoltre, il formato corretto dell&#8217;.eot sarebbe &#8220;embedded-opentype&#8221;, ma cambiandolo in qualsiasi altra cosa (per esempio proprio &#8220;eot&#8221;) Internet Explorer 9 lo salta&#8230; giungendo quindi al .woff che supporta (e che è indubbiamente migliore dell&#8217;.eot). Tutto sistemato per IE.</p>
<p>Per Android il problema era la &#8220;faccina&#8221; (o meglio, il &#8220;local&#8221;) che è quindi stato rimosso. Chi preferisse non far caricare i web-font ad Android (per motivi di banda) può tranquillamente reintrodurla.</p>
<p>Lo stesso discorso vale per iPhone/iPad/iPod: l&#8217;ultima riga, quella con l&#8217;svg, serve per i dispositivi Apple con vecchie versioni del software (l&#8217;ultima versione supporta .ttf) e molti preferiscono rimuoverla sia per motivi di banda, sia per la scarsezza dell&#8217;svg come formato di font.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensionedelta.net/block/2011/04/web-font-nuova-sintassi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menù con le linguette</title>
		<link>http://www.dimensionedelta.net/block/2011/02/menu-con-le-linguette/</link>
		<comments>http://www.dimensionedelta.net/block/2011/02/menu-con-le-linguette/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 19:26:59 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[absolute]]></category>
		<category><![CDATA[after]]></category>
		<category><![CDATA[menù]]></category>
		<category><![CDATA[triangoli]]></category>

		<guid isPermaLink="false">http://www.dimensionedelta.net/block/?p=124</guid>
		<description><![CDATA[Come realizzare quei triangolini che compaiono sotto i menù quando sono selezionati? Ci sono sicuramente diversi tutorial in rete, ma non sono riuscito a trovarne nemmeno uno quando mi serviva. Ecco quindi in poche righe la soluzione che ho trovato. L&#8217;ispirazione viene dall&#8217;unione di due tecniche molto comuni: la possibilità di creare delle forme geometriche [...]]]></description>
			<content:encoded><![CDATA[<p>Come realizzare quei triangolini che compaiono sotto i menù quando sono selezionati? Ci sono sicuramente diversi tutorial in rete, ma non sono riuscito a trovarne nemmeno uno quando mi serviva. Ecco quindi in poche righe la soluzione che ho trovato.</p>
<p>L&#8217;ispirazione viene dall&#8217;unione di due tecniche molto comuni: la possibilità di creare delle <a href="http://css-tricks.com/the-shapes-of-css/" rel="external">forme geometriche con le pseudoclassi CSS</a> e il metodo per centrare gli elementi posizionati in maniera assoluta.</p>
<p>Il tutto, ovviamente, senza introdurre immagini o elementi aggiuntivi senza alcun significato semantico.</p>
<p><span id="more-124"></span></p>
<p>Tipicamente abbiamo un menù fatto così:</p>
<pre class="brush: css; title: ;">
      ul {
         list-style-type: none;
         background-color: #339;
         height: 36px;
       }

      li {
         float: left;
      }

      li a {
         display: block;
         padding: 10px 20px;
         color: #fff;
         text-decoration: none;
      }

      li a:hover,
      li .current {
         background-color: #69c;
      }
</pre>
<p>Per aggiungere i triangolini sull&#8217;<code>:hover</code> e/o quando siamo nella sezione interessata, basta rendere <code>relative</code> la posizione del link:</p>
<pre class="brush: css; title: ;">
    li a {
         display: block;
         padding: 10px 20px;
         color: #fff;
         text-decoration: none;
         position: relative;
      }
</pre>
<p>e aggiungere una pseudo classe <code>:after</code> posizionata in maniera assoluta:</p>
<pre class="brush: css; title: ;">
      li a:hover:after,
      li .current:after {
         content: &quot;&quot;;
         position: absolute;
         bottom: -10px;
         left: 50%;
         margin-left: -10px;
         width: 0;
         height: 0;
         border-left: 10px solid transparent;
         border-right: 10px solid transparent;
         border-top: 10px solid #69c;
      }
</pre>
<p>Analizziamo quest&#8217;ultima voce.</p>
<p><code>:after</code> è appunto la pseudo classe che aggiunge del contenuto <em>dopo</em> l&#8217;elemento indicato.<br />
Non c&#8217;è <code>content</code> perché non abbiamo del reale contenuto aggiunto.<br />
La posizione è assoluta, come già detto, e centrata a metà del link. Qui sorge il problema principale: siccome le voci del menù sono di larghezza variabile, posizionando in maniera assoluta a metà elemento il triangolino, questo resterà sempre spostato verso destra, perché sarà <em>il suo vertice destro a partire esattamente a metà</em> dello spazio a sua disposizione. Diminuire leggermente il valore percentuale non aiuta, perché il triangolino ha dimensione fissa mentre il link che lo contiene varia. Viene in nostro soccorso il margine sinistro: fissandolo dello stesso valore della larghezza del triangolino, in negativo, quest&#8217;ultimo verrà &#8220;trascinato&#8221; a sinistra esattamente quando basta per centrarlo perfettamente a prescindere dalla larghezza del link.<br />
Le ultime righe di codice sono il solito trucchetto per creare i triangoli, giocando con le proprietà dei bordi.</p>
<p>(Se al posto di <code>:after</code> avessimo usato <code>:before</code> sarebbe stata la stessa cosa. Risulta più intuitivo usare <code>:after</code> visto che la linguetta viene&#8230; dopo!)</p>
<p>Qui potete trovare una <a target="_blank" href="http://www.dimensionedelta.net/block/demo/menu-con-triangoli.html">demo</a>.</p>
<p>Naturalmente su Internet Explorer 6 e 7 non si vedranno le linguette perché nessuno dei due supporta <code>:after</code>. Tutti gli altri browser (Internet Explorer 8 incluso) invece sì, quindi la cosa non è un problema, perché le linguette sono un semplice miglioramento estetico; siccome forniamo comunque all&#8217;utente un metodo per capire in quale sezione siamo e/o che stiamo passando sopra a un link con il mouse (con il colore di sfondo che cambia).</p>
<p>N.B.: In generale, visto che i <code>li</code> hanno un <code>float: left</code> per poter stare uno di fianco all&#8217;altro, il loro container (<code>ul</code>) tipicamente non ha altezza se non la si dichiara esplicitamente (come in questo caso). In alternativa si può dichiarare anch&#8217;esso come <code>float</code>, oppure assegnargli una classe <code>clearfix</code> (di cui riparleremo, si può trovare nel CSS del Boilerplate, intanto). Altra alternativa è aggiungere <code>overflow: hidden</code> o <code>overflow: auto</code> al container&#8230; ma in questo caso attenzione perché le linguette, siccome sforerebbero, potrebbero essere troncate (se <code>hidden</code>) o far comparire una barra di scorrimento (se <code>auto</code>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensionedelta.net/block/2011/02/menu-con-le-linguette/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L’HTML5Boilerplate – parte 2 – Reset CSS</title>
		<link>http://www.dimensionedelta.net/block/2010/12/l-html5boilerplate-parte-2-reset-css/</link>
		<comments>http://www.dimensionedelta.net/block/2010/12/l-html5boilerplate-parte-2-reset-css/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 15:35:12 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[boilerplate]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[reset]]></category>

		<guid isPermaLink="false">http://www.dimensionedelta.net/html5/?p=93</guid>
		<description><![CDATA[Torniamo a parlare del Boilerplate HTML5. L&#8217;altra volta avevo parlato delle dichiarazioni condizionali del tag &#60;html&#62; per poter capire se stiamo usando Internet Explorer, oggi invece parliamo di un argomento di cui si è discusso parecchio ultimamente grazie a un articolo che ne racconta la storia: Il reset CSS. Il Boilerplate include un reset CSS [...]]]></description>
			<content:encoded><![CDATA[<p>Torniamo a parlare del <a rel="external" title="Sito ufficiale del Boilerplate HTML5" hreflang="en" href="http://html5boilerplate.com">Boilerplate HTML5</a>. L&#8217;<a href="http://www.dimensionedelta.net/html5/2010/10/25/html5boilerplate-spiegato-parte-1/">altra volta</a> avevo parlato delle dichiarazioni condizionali del tag <code>&lt;html&gt;</code> per poter capire se stiamo usando Internet Explorer, oggi invece parliamo di un argomento di cui si è discusso parecchio ultimamente grazie a un <a href="http://sixrevisions.com/css/the-history-of-css-resets/" rel="external" hreflang="en">articolo che ne racconta la storia</a>: Il <strong>reset CSS</strong>. Il Boilerplate include un reset CSS come prima parte del suo foglio di stile e, come giustamente ricordato nei commenti all&#8217;inizio del CSS, il codice in questione è comunque un aggiornamento della versione &#8220;storica&#8221; di Eric Meyer. Se vi interessa sapere come si è giunti al reset attuale vi consiglio l&#8217;articolo di cui sopra.<br />
<span id="more-93"></span><br />
Un reset CSS serve ad azzerare tutti i valori che i vari browser applicano di default ai vari tag. Questo perché ogni browser applica valori differenti e rimane quindi più comodo azzerare tutto per poter decidere poi noi questi valori. In alternativa si può sempre ridefinire questi valori ogni singola volta che si aggiunge una regola a un tag, un id o una classe, ma personalmente (e come me molti altri) lo ritengo più scomodo e fonte di errori.</p>
<p>Principalmente nel reset si parla di margini, padding, bordi e allineamenti. Di questo si occupa la prima delle voci, azzerandoli in tutti i tag che fanno attualmente parte dell&#8217;HTML5:</p>
<pre class="brush: css; title: ;">
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
   margin: 0;
   padding: 0;
   border: 0;
   outline: 0;
   font-size: 100%;
   vertical-align: baseline;
   background: transparent
}
</pre>
<p>Essendo poi questo un reset per una pagina in HTML5, bisogna forzare a &#8220;block&#8221; i nuovi elementi semantici che devono essere block per definizione (non tutti, naturalmente&#8230; per esempio <code>&lt;time&gt;</code> no):</p>
<pre class="brush: css; title: ;">
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
   display: block
}
</pre>
<p>Si procede poi ad azzerare l&#8217;aspetto delle liste. Tenendo conto che la maggior parte delle volte le liste vengono utilizzate per menù e altri elementi simili di navigazione, è naturale rimuovere il comportamento di default in questi casi (da cui la regola <code>nav ul</code>) e riaggiungerlo nei casi particolari in cui servissero davvero delle liste puntate/numerate. Allo stesso modo azzeriamo le eventuali decorazioni (virgolette) che alcuni browser aggiungono ai tag <code>&lt;blockquote&gt;</code> e <code>&lt;q&gt;</code>:</p>
<pre class="brush: css; title: ;">
nav ul { list-style:none }
blockquote, q { quotes:none }
blockquote:before, blockquote:after,
q:before, q:after {
   content: '';
   content: none
}
</pre>
<p>Nell&#8217;elenco generale di prima, non c&#8217;era il tag <code>&lt;a&gt;</code>. Questo perché è giusto, per motivi di usabilità, che non perda il suo <code>outline</code>. Dobbiamo però azzerare tutti gli altri valori, quindi:</p>
<pre class="brush: css; title: ;">
a {
   margin: 0;
   padding: 0;
   font-size: 100%;
   vertical-align: baseline;
   background: transparent
}
</pre>
<p>Ci sono poi tre tag (due vecchi, <code>&lt;ins&gt;</code> e <code>&lt;del&gt;</code> e uno nuovo, <code>&lt;mark&gt;</code>) che non hanno tanto bisogno di un azzeramento quanto di uno stile specifico. A <code>&lt;del&gt;</code> assegniamo normalmente una bella &#8220;riga sopra&#8221;, mentre per gli altri diamo colori e/o stili diversi di visualizzazione. Quelli indicati qui, in questo caso, sono solo degli esempi, ognuno li può personalizzare come crede!</p>
<pre class="brush: css; title: ;">
ins {
   background-color: #ff9;
   color: #000;
   text-decoration:none
}

mark {
   background-color: #ff9;
   color: #000;
   font-style: italic;
   font-weight: bold
}

del {
   text-decoration: line-through
}
</pre>
<p>E per far vedere ai nostri utenti che abbiamo una spiegazione per i valori degli <code>&lt;abbr&gt;</code> e dei <code>&lt;dfn&gt;</code> che usiamo, mettiamoci una sottolineatura a trattini (anche qui, si può mettere quello che ci pare) e un cursore con il punto di domanda. La regola si applica solo quando è presente l&#8217;attributo <code>title</code>:</p>
<pre class="brush: css; title: ;">
abbr[title], dfn[title] {
   border-bottom: 1px dotted;
   cursor: help
}
</pre>
<p>Se usiamo le tabelle (per dati tabulari, non per il layout del sito, non siamo nel 1820! <img src='http://www.dimensionedelta.net/block/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) e vogliamo liberarci del loro orribile aspetto di default, basta usare:</p>
<pre class="brush: css; title: ;">
table {
   border-collapse: collapse;
   border-spacing: 0
}
</pre>
<p>Infine, se vogliamo usare degli <code>&lt;hr&gt;</code>, diamo loro l&#8217;aspetto di &#8220;riga&#8221; e un minimo di spaziatura. E allineamo al testo circostante gli <code>&lt;input&gt;</code> e i le <code>&lt;select&gt;</code>:</p>
<pre class="brush: css; title: ;">
hr {
   display: block;
   height: 1px;
   border: 0;
   border-top: 1px solid #ccc;
   margin: 1em 0;
   padding: 0
}

input, select {
   vertical-align:middle
}
</pre>
<p>Ci sarebbe un&#8217;altra riga che il Boilerplate aggiunge più avanti, ma che forse fa più parte della sezione reset:</p>
<pre class="brush: css; title: ;">
.ie6 legend, .ie7 legend {
   margin-left: -7px
}
</pre>
<p>Sembra strano, ma in realtà Internet Exporer 6 e 7 (e quindi applichiamo la regola solo a loro, con le loro rispettive classi) spostano il tag <code>&lt;legend&gt;</code> di 7 pixel, pur mantenendo un margine uguale a zero! L&#8217;unico modo per resettarlo realmente (e farlo quindi apparire come in tutti gli altri browser) è quello di assegnarli un margine sinistro negativo di sette pixel. <code>&lt;legend&gt;</code> non è un tag molto usato, ma se vi capiterà di usarlo questo piccolo &#8220;trucchetto&#8221; vi eviterà di perdere un sacco di tempo per capire perché IE6 e 7 si comportano male.</p>
<p>Se volete saperne di più sui reset, oltre all&#8217;articolo con la loro storia vi consiglio di dare un&#8217;occhiata all&#8217;<a rel="external" hreflang="en" href="http://html5doctor.com/html-5-reset-stylesheet/">HTML5 Reset Stylesheet</a>, al classico <a rel="external" hreflang="en" href="http://meyerweb.com/eric/tools/css/reset/">Reset CSS di Eric Meyer</a> e al <a rel="external" hreflang="en" href="http://developer.yahoo.com/yui/3/cssreset/">Reset CSS di Yahoo</a>.</p>
<p>Infine, tenete presente che, come sempre, questa è una base da cui partire. Per esempio, difficilmente utilizzerete <en>tutti</en> i tag che qui vengono resettati&#8230; potete quindi levare tutti quelli che non vi servono (ma ricordatevi poi di riaggiungerli se in futuro vi serviranno!).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensionedelta.net/block/2010/12/l-html5boilerplate-parte-2-reset-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Border-radius per Safari e Chrome</title>
		<link>http://www.dimensionedelta.net/block/2010/11/border-radius-per-safari-e-chrome/</link>
		<comments>http://www.dimensionedelta.net/block/2010/11/border-radius-per-safari-e-chrome/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 10:25:15 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[border-radius]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[supporto]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.dimensionedelta.net/html5/?p=77</guid>
		<description><![CDATA[Veloce post, per segnalare un aggiornamento di Webkit (sia Safari che Chrome) di qualche mese fa, ma che ho notato non essere stato segnalato praticamente da nessuna parte, tanto da vedere usato il vecchio metodo come esempio in un paio di libri pubblicati questo mese. In realtà la cosa è già valida da marzo per [...]]]></description>
			<content:encoded><![CDATA[<p>Veloce post, per segnalare un aggiornamento di Webkit (sia Safari che Chrome) di qualche mese fa, ma che ho notato non essere stato segnalato praticamente da nessuna parte, tanto da vedere usato il vecchio metodo come esempio in un paio di libri pubblicati questo mese. In realtà la cosa è già valida <a href="http://csswizardry.com/2010/03/a-quick-note-on-border-radius/#comment-881" rel="external" title="Mio commento su CSS Wizardry sul supporto su Chrome 4">da marzo</a> per Chrome e <a href="http://csswizardry.com/2010/03/a-quick-note-on-border-radius/#comment-4018" rel="external" title="Mio commento su CSS Wizardry sul supporto su Safari 5">da luglio</a> per Safari.</p>
<p>Attualmente questi browser supportano la dichiarazione standard CSS3 per i bordi arrotondati, senza più bisogno di aggiungere il prefisso <code>-webkit-</code>. Il che significa che invece di dover usare per forza:<br />
<span id="more-77"></span></p>
<pre class="brush: css; title: ;">
div {
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
}
</pre>
<p>si può già usare:</p>
<pre class="brush: css; title: ;">
div {
    -moz-border-radius: 5px;
    border-radius: 5px;
}
</pre>
<p>Naturalmente, se vogliamo che anche le vecchie versioni di Safari e Chrome vedano i bordi arrotondati, possiamo continuare a includere anche la versione con il prefisso, ma teniamo presente che, a differenza di Internet Explorer, per gli altri browser (soprattutto Chrome), se si parla di questioni puramente decorative come in questo caso non è richiesto il supporto &#8220;al pixel&#8221; per le versioni vecchie, visto che gli utenti li aggiornano in tempi brevi. </p>
<p>Infine, Firefox continua a mantenere invece il prefisso <code>-moz-</code> (anche nella beta della versione 4) e a utilizzare la sintassi lievemente diversa rispetto a quella standard quando si vuole cambiare un solo angolo alla volta: <code>-moz-border-radius-topleft: 5px</code> contro <code>border-top-left-radius: 5px</code>. Potete comunque usare, in caso vi vada bene, la notazione ridotta con valori diversi, per esempio:</p>
<pre class="brush: css; title: ;">
div {
    -moz-border-radius: 5px 10px 30px 0;
    border-radius: 5px 10px 30px 0;
}
</pre>
<p>L&#8217;ordine dei valori è quello orario solito, alto-sinistra, alto-destra, basso-destra, basso-sinistra.</p>
<p><ins datetime="2011-04-12">Aggiornamento <time datetime="2011-04-12">12/04/2011</time>: A differenza dalla beta, Firefox 4 supporta la sintassi ufficiale senza prefisso! Quando avrà soppiantato ragionevolmente la 3.6 si potrà abbandonare anche il <code>-moz-</code>. E tenendo conto che Internet Explorer 9 già supporta la versione ufficiale possiamo dire che i bordi arrotondati sono ormai una realtà ufficiale per tutti.</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensionedelta.net/block/2010/11/border-radius-per-safari-e-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web font, ovvero il ritorno di @font-face</title>
		<link>http://www.dimensionedelta.net/block/2010/11/web-fonts-ovvero-il-ritorno-di-font-face/</link>
		<comments>http://www.dimensionedelta.net/block/2010/11/web-fonts-ovvero-il-ritorno-di-font-face/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 21:23:43 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[font-face]]></category>
		<category><![CDATA[typography]]></category>
		<category><![CDATA[webfonts]]></category>

		<guid isPermaLink="false">http://www.dimensionedelta.net/html5/?p=63</guid>
		<description><![CDATA[Ormai non passa giorno senza che qualcuno mi chieda come includere i font in una pagina web, cosa che un tempo risultava impossibile e costringeva controvoglia a usare delle immagini quando si doveva assolutamente usare un determinato font. Partendo dai due fondamentali post del solito Paul Irish, vediamo come funziona @font-face e perché funzioni così. [...]]]></description>
			<content:encoded><![CDATA[<p>Ormai non passa giorno senza che qualcuno mi chieda come includere i font in una pagina web, cosa che un tempo risultava impossibile e costringeva controvoglia a usare delle immagini quando si doveva assolutamente usare un determinato font.</p>
<p>Partendo dai <a rel="external" href="http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/">due fondamentali</a> <a rel="external" href="http://paulirish.com/2010/font-face-gotchas/#smiley">post del solito Paul Irish</a>, vediamo come funziona <code>@font-face</code> e perché funzioni così.<br />
<span id="more-63"></span></p>
<p><ins datetime="2011-04-11">Aggiornamento 11 aprile 2011: La sintassi che viene descritta in questo articolo è stata superata da una più nuova, ne parlo in <a href="http://www.dimensionedelta.net/block/2011/04/web-font-nuova-sintassi/">quest&#8217;altra pagina dedicata all&#8217;argomento</a>. Potete comunque leggere anche questa pagina per le motivazioni che stanno dietro alla sintassi.</ins></p>
<pre class="brush: css; title: ;">
@font-face {
     font-family: 'MioFont';
     src: url('MioFont.eot');
     src: local('☺'),
          url('MioFont.woff') format('woff'),
          url('MioFont.ttf') format('truetype'),
          url('MioFont.svg#webfonttGgFgCkX') format('svg');
     font-weight: normal;
     font-style: normal;
     font-variant: normal
}
</pre>
<p>La dichiarazione (da mettere nel file CSS) sembra complessa, ma in realtà è semplicissima.<br />
Innanzitutto si definisce come si chiamerà il font quando lo richiameremo con <code>font-family</code>.</p>
<p>Dopodiché si passa a definire i vari formati dei file:<br />
il file <b>.eot</b> serve per Internet Explorer, dal 4 (!) in poi;<br />
il file <b>.woff</b> serve per Safari, Chrome, IE dal 9 e Firefox dalla 3.6;<br />
il file <b>.ttf</b> (o <b>.otf</b>) serve per versioni la 3.5 di Firefox, per versioni vecchie di Safari e Chrome e per Opera dalla 10 <i>[EDIT, 24/11/2010: dalla versione 4.2 di iOS, uscita ieri, .ttf è supportato anche da iPhone, iPod e iPad.]</i>;<br />
il file <b>.svg</b> serve per iPhone/iPod/iPad.</p>
<p>Se volete più dettagli sul supporto li potete trovare su <a rel="external" href="http://webfonts.info/wiki/index.php?title=@font-face_browser_support">webfonts.info</a>.</p>
<p>Il .woff è il migliore tra tutti i formati, anche perché è già compresso. Uno degli aspetti da tenere in considerazione quando si parla di web font infatti è anche il peso. Tranne in casi eccezionali è meglio non includere 20 font diversi in una pagina (o un sito), perché peserebbe parecchio e, probabilmente, sarebbe anche brutta da vedere.</p>
<p>La faccina ☺ che vedete indicata in &#8220;local&#8221; serve per escludere che qualcuno possa avere un font che si chiama in quel modo. Infatti &#8220;local&#8221; servirebbe a indicare il nome di un file che un utente potrebbe avere già installato, per evitare lo scaricamento del file stesso. Risulta però una soluzione migliore evitare questo (remoto) caso, anche perché nessuno ci assicura che il suo file corrisponda davvero al font che noi vogliamo. Perché includere &#8220;local&#8221;, quindi? Perché Internet Explorer non lo capisce&#8230; e quindi si ferma (dopo aver scaricato il suo file .eot). Senza &#8220;local&#8221;, Internet Explorer continuerebbe e scaricherebbe anche gli altri file, per lui totalmente inutili! Inoltre cercherebbe di usare l&#8217;ultimo valore, da lui non supportato&#8230; e quindi niente web font.</p>
<p>Ma dove trovarli questi font utilizzabili sul web? Per fortuna, nell&#8217;ultimo anno, sono nati diversi siti che forniscono questi font&#8230; siti che seguono modalità di commercializzazione molto diverse. <a href="http://fffo.grahambird.co.uk/" rel="external">Font Face Face Off</a> riassume questi vari servizi in una semplice tabellina, ma vediamo brevemente i vari modelli:<br />
- <b>Gratuito, con download:</b> la cosa forse più semplice e che molti preferiscono. Una volta scaricati i font, li si possono mettere direttamente sul proprio sito e servirli direttamente da lì. I kit di download forniscono già tutti i formati e il codice CSS di esempio (es. <a href="http://www.fontsquirrel.com" rel="external">Font Squirrel</a>);<br />
- <b>Gratuito, con hosting sul sito del fornitore del servizio:</b> in genere con limitazioni al numero dei domini e delle visite. E con l&#8217;obbligo di mostrare un badge. (es. <a href="http://www.typekit.com/" rel="external">TypeKit</a>, <a href="http://webfonts.fonts.com/" rel="external">Fonts.com</a>);<br />
- <b>A pagamento, con download</b>: come sopra, con una cifra che si paga una sola volta all&#8217;atto dell&#8217;acquisto (es <a href="http://www.fontspring.com/" rel="external">Fontspring</a>);<br />
- <b>A pagamento, con hosting sul sito del fornitore del servizio:</b> come sopra, senza limitazioni (o limitazioni più larghe) e senza badge (es. <a href="http://www.typekit.com/" rel="external">TypeKit</a>, <a href="http://webfonts.fonts.com/" rel="external">Fonts.com</a>).</p>
<p>Se invece già avete un font la cui licenza permette l&#8217;utilizzo sul web, potete crearvi da soli il &#8220;kit&#8221; usando il <a href="http://www.fontsquirrel.com/fontface/generator" rel="external">generatore di Font Squirrel</a>.</p>
<p>Ricordate, se servite direttamente i file dal vostro server, di aggiungere al vostro web-server il supporto per i file .woff e .svg, perché potrebbero non essere supportati nativamente. Su Apache basta aggiungerli nel file .htaccess. Ecco la sezione completa del supporto font (dall&#8217;<a href="http://html5boilerplate.com" rel="external">HTML5 Boilerplate</a>, tanto per cambiare):</p>
<pre class="brush: bash; title: ;">
AddType     image/svg+xml              svg svgz
AddEncoding gzip                       svgz
AddType application/vnd.ms-fontobject  eot
AddType font/truetype                  ttf
AddType font/opentype                  otf
AddType font/woff                      woff
</pre>
<p>Su IIS invece, nel web.config in <code>&lt;system.webServer&gt; &lt;staticContent&gt;</code></p>
<pre class="brush: xml; title: ;">
&lt;mimeMap fileExtension=&quot;.svg&quot; mimeType=&quot;images/svg+xml&quot; /&gt;
&lt;mimeMap fileExtension=&quot;.svgz&quot; mimeType=&quot;images/svg+xml&quot; /&gt;
&lt;remove fileExtension=&quot;.eot&quot; /&gt;
&lt;mimeMap fileExtension=&quot;.eot&quot; mimeType=&quot;application/vnd.ms-fontobject&quot; /&gt;
&lt;mimeMap fileExtension=&quot;.otf&quot; mimeType=&quot;font/otf&quot; /&gt;
&lt;mimeMap fileExtension=&quot;.woff&quot; mimeType=&quot;font/x-woff&quot; /&gt;
</pre>
<p>Un &#8220;problema&#8221; (se lo si vuole considerare tale) che spesso sorge con i web font è il cosiddetto FOUT (Flash of Unstyled Text) su Firefox, quella frazione di secondo prima che Firefox riesca a caricare i font in cui mostra il testo nel suo font &#8220;normale&#8221;. Solo con Firefox succede e la soluzione più semplice è quella di utilizzare la libreria JavaScript <a href="http://modernizr.com" rel="external">Modernizr</a>. Che in realtà serve a mille altre cose (di cui parleremo un&#8217;altra volta), ma che nella sua recentissima versione 1.6 sistema anche questo problema.</p>
<p>Infine, brevemente, una curiosità. Tutto questo, in realtà, non ha assolutamente niente a che fare con l&#8217;HTML5. Infatti, non solo, ovviamente, si sta parlando di CSS (che non fanno parte dell&#8217;HTML), ma @font-face in realtà non è nemmeno una novità del CSS3, essendo già presente nella <a href="http://www.w3.org/TR/1998/REC-CSS2-19980512/fonts.html#font-descriptions" rel="external">CSS2 Recommendation</a> del 1998! Vero è che @font-face è stato poi rimosso nelle versioni successive (2.1, ma nella 3 è tornato), non essendo ancora pronto per il mondo. Internet Explorer comunque lo integrò subito &#8211; cosa più unica che rara &#8211; ma con il suo formato proprietario .eot, che per molti anni è stato difficile da ottenere. In realtà sarebbe stato comunque anche abbastanza inutile, non essendo supportato da nessun altro browser. Solo da poco più di un anno, con l&#8217;introduzione in Firefox 3.5 e in Chrome, i web font sono diventati realtà, una realtà che può &#8220;liberarci&#8221; dai soliti Arial, Tahoma e Verdana.</p>
<p><ins datetime="2011-04-11">Aggiornamento 11 aprile 2011: La sintassi più aggiornata la trovate in <a href="http://www.dimensionedelta.net/block/2011/04/web-font-nuova-sintassi/">quest&#8217;altra pagina dedicata all&#8217;argomento</a>.</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensionedelta.net/block/2010/11/web-fonts-ovvero-il-ritorno-di-font-face/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L&#8217;HTML5Boilerplate spiegato &#8211; parte 1</title>
		<link>http://www.dimensionedelta.net/block/2010/10/html5boilerplate-spiegato-parte-1/</link>
		<comments>http://www.dimensionedelta.net/block/2010/10/html5boilerplate-spiegato-parte-1/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 19:59:29 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[boilerplate]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.dimensionedelta.net/blog/?p=1</guid>
		<description><![CDATA[L&#8217;HTML5boilerplate è un &#8220;template&#8221; HTML5 con cui può essere comodo iniziare a progettare un sito. La parola &#8220;template&#8221; può però trarre in inganno, facendo magari pensare a un qualcosa di complesso e completo come potrebbe essere per esempio un template di WordPress. Niente di più fuorviante. In realtà sarebbe forse meglio definire il Boilerplate come [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;<a rel="external" href="http://html5boilerplate.com">HTML5boilerplate</a> è un &#8220;template&#8221; HTML5 con cui può essere comodo iniziare a progettare un sito. La parola &#8220;template&#8221; può però trarre in inganno, facendo magari pensare a un qualcosa di complesso e completo come potrebbe essere per esempio un template di WordPress. Niente di più fuorviante. In realtà sarebbe forse meglio definire il Boilerplate come una semplice raccolta di codice HTML (e non solo) dal quale andare a prendere le cose che servono e ignorare tranquillamente le altre.</p>
<p>Nello specifico il Boilerplate è composto blocchi di codice HTML e CSS, con in più alcuni suggerimenti su come configurare al meglio i file .htaccess sotto Apache e web.config sotto IIS e altri dettagli. In questo e in (diversi) futuri post cercherò di spiegare alcune tecniche all&#8217;apparenza strane, ma in realtà molto utili.<br />
<span id="more-1"></span><br />
Partiamo dall&#8217;HTML, e partiamo da una delle tecniche che potrebbe confondere di più:</p>
<pre class="brush: xml; title: ;">
&lt;!--[if lt IE 7 ]&gt; &lt;html class=&quot;ie6&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 7 ]&gt;    &lt;html class=&quot;ie7&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 8 ]&gt;    &lt;html class=&quot;ie8&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 9 ]&gt;    &lt;html class=&quot;ie9&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if (gt IE 9)|!(IE)]&gt;&lt;!--&gt; &lt;html&gt; &lt;!--&lt;![endif]--&gt;
</pre>
<p>&#8220;Cos&#8217;è tutta questa monnezza all&#8217;inizio della mia pagina?&#8221;, direte?</p>
<p>Intanto quello che fa è abbastanza semplice: a seconda della versione di Internet Explorer, assegna una classe al tag <code>html</code>. Casi limite: nella prima riga assegniamo alla versione 6 (o minore) la classe <code>ie6</code> e nell&#8217;ultima riga, alle future versioni superiori alla 9 (e &#8211; importante &#8211; a tutti gli altri browser), non assegniamo nulla.</p>
<p>In realtà è una cosa molto furba. Se è un po&#8217; che vi occupate di HTML e CSS conoscerete ormai benissimo i vari hack CSS per personalizzarli secondo le varie versioni dei browser, principalmente Internet Explorer. Da qualche anno ormai la soluzione più pratica è quella dei commenti condizionali che caricano file CSS esterni a seconda della versione del browser. Il Boilerplate porta i commenti condizionali a un livello superiore (letteralmente) utilizzandoli per assegnare una classe al tag <code>html</code> che si potrà poi usare per scrivere normalissime (e valide) regole CSS nel foglio di stile, come (esempio classico):</p>
<pre class="brush: css; title: ;">
#article {
    width: 40%;
    min-height: 300px;
}

.ie6 #article {
    height: 300px;
}
</pre>
<p>Il vantaggio principale è evidente: si evita lo scaricamento di un ulteriore file (o due, nel caso si servano file sia a Internet Explorer 6 che a Internet Explorer 7) e ormai si sa che una richiesta http in più è peggio di qualche byte in più nei file che già abbiamo. Inoltre si evita di avere diversi file CSS e ci si semplifica la vita nella scrittura del codice, potendo tenere tutte le regole che si riferiscono agli stessi oggetti nello stesso posto.</p>
<p>Se siete andati sul sito del Boilerplate, o magari già lo conoscevate, noterete che c&#8217;è una lieve differenza perché là i commenti sono applicati al tag <code>body</code>. L&#8217;idea è la stessa, ma applicarli al tag <code>html</code> evita di dover inserire il commento vuoto a inizio documento</p>
<pre class="brush: xml; title: ;">
&lt;!--[if IE]&gt;&lt;![endif]--&gt;
</pre>
<p>presente nel Boilerplate per ovviare a un bug di Internet Explorer 8 che, in breve, si ferma ad attendere che vengano scaricati anche i file che, grazie ai commenti, dovrebbe scaricare solo il 6 (come riportato su <a title="IE 6 slowing down IE 8" rel="external" href="http://webforscher.wordpress.com/2010/05/20/ie-6-slowing-down-ie-8/">Webforscher&#8217;s Blog</a> e su <a title="Conditional comments block downloads" rel="external" href="http://www.phpied.com/conditional-comments-block-downloads/">phpied.com</a>). Ovviamente questo non dovrebbe succedere, ma spostando il tutto a inizio pagina si risolve il problema.</p>
<p>Se siete patiti della validazione e state già dicendo &#8220;Ma questo HTML non è valido!&#8221;, tranquillizzatevi. Sarebbe stato vero se fosse stato HTML 4, ma in HTML5 è validissimo. Provate pure a validare le vostre pagine! <img src='http://www.dimensionedelta.net/block/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Questa modifica (<code>html</code> invece del <code>body</code>) è già programmata (come molte altre) per la prossima versione del Boilerplate<em> [EDIT: la 0.9.5 uscita il 26 ottobre e ora online sul sito ufficiale]</em>, e se siete curiosi su come si è giunti a quel punto, potete leggere i commenti in fondo alla pagina del Boilerplate, o andare sul blog di Paul Irish, uno degli autori, e leggervi in dettaglio <a title="Conditional stylesheets vs CSS hacks? Answer: Neither!" rel="external" href="http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/">il post in cui spiega questa tecnica</a>. E se non potete attendere, andate su <a href="http://github.com/paulirish/html5-boilerplate/blob/master/index.html">github</a> e curiosate in anteprima tutte le modifiche che usciranno nella prossima versione.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensionedelta.net/block/2010/10/html5boilerplate-spiegato-parte-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>L&#8217;HTML5, chi era costui?</title>
		<link>http://www.dimensionedelta.net/block/2010/10/lhtml5-chi-era-costui/</link>
		<comments>http://www.dimensionedelta.net/block/2010/10/lhtml5-chi-era-costui/#comments</comments>
		<pubDate>Sat, 23 Oct 2010 12:00:34 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[doctype]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[type]]></category>

		<guid isPermaLink="false">http://www.dimensionedelta.net/html5/?p=26</guid>
		<description><![CDATA[Apriamo questo blog con due parole sull&#8217;HTML5. Cos&#8217;è questa strana bestia di cui si parla tanto ultimamente? Non tutti lo sanno con precisione e soprattutto non tutti sanno che l&#8217;HTML5 si può e si deve usare fin da ora, senza aspettare il 2012 o il 2022 (2022?!? Seriously?). Il punto è che l&#8217;HTML5 è composto [...]]]></description>
			<content:encoded><![CDATA[<p>Apriamo questo blog con due parole sull&#8217;HTML5. Cos&#8217;è questa strana bestia di cui si parla tanto ultimamente? Non tutti lo sanno con precisione e soprattutto non tutti sanno che l&#8217;HTML5 si può e si <em>deve </em>usare fin da ora, senza aspettare il 2012 o il 2022 (2022?!? <em>Seriously?</em>).</p>
<p>Il punto è che l&#8217;HTML5 è composto da tantissimi moduli indipendenti fra loro e mentre alcuni di questi hanno ancora scarso supporto e non ha molto senso usarli (se non magari per web app dedicati a device specifici come l&#8217;iPad), altri sono ben supportati o quantomeno supportati da tutti i browser tranne IE e non è un problema se ci sono metodi vari per far fare giudizio anche a IE.<br />
<span id="more-26"></span><br />
Per esempio <strong>tutti</strong> possono con estrema tranquillità usare il <code>doctype</code> HTML5:</p>
<pre class="brush: xml; title: ;">
&lt;DOCTYPE html&gt;
</pre>
<p>e rimuovere dai tag <code>script</code> l&#8217;inutile <code>type="text/javascript"</code> (e che altro tipo potrebbe mai essere?) e dai tag <code>style</code> l&#8217;inutile <code>type="text/css"</code>. Queste sono robette formali, naturalmente, ma sono sicure al 100% su tutti i browser&#8230; sì, Internet Explorer 6 incluso! Quindi, perché no? Bastano per bullarsi al bar con gli amici dicendo che &#8220;voi usate l&#8217;HTML5, alla faccia dell&#8217;XHTML&#8221;. Ma noi vogliamo fare più di questo, quindi&#8230; restate sintonizzati!</p>
<p>Inoltre è incredibile come quasi la totalità dei siti recensiti dall&#8217;ottimo <a rel="external" href="http://html5gallery.com/">html5gallery</a> abbiano come consiglio dai gestori del sito quello di rimuovere quegli inutili <code>type</code>. Anche molte persone che usano l&#8217;HTML5 non hanno ben presenti le sue pur semplicissime basi!</p>
<p>Naturalmente nel blog parleremo anche di altri argomenti associati al calderone &#8220;HTML5&#8243;, come i CSS 3 (che naturalmente <em>non</em> fanno parte dell&#8217;HTML5), ma faceva figo chiamare il blog così. Inoltre <em>accaTiEmmeElle5ECSS3EAltriStandardAttuali</em> avrebbe fatto un po&#8217; schifo come nome. <ins>EDIT: Visti i recenti &#8220;tafferugli&#8221; tra sviluppatori, W3C, WHATWG e chi più ne ha più ne metta, ho pensato che fosse meglio cambiare nome al blog usando un nome più &#8220;pacifico&#8221;.</ins></p>
<p>Infine, scusate il semplice template base di WordPress, ma se mi fossi messo a giocarci troppo sarebbe finita che non avrei mai iniziato a postare! <img src='http://www.dimensionedelta.net/block/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensionedelta.net/block/2010/10/lhtml5-chi-era-costui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

