<?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>paniko &#187; CSS</title>
	<atom:link href="http://www.paniko.org/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paniko.org</link>
	<description>Un blog dedicato alla programmazione...</description>
	<lastBuildDate>Thu, 05 Jan 2012 13:51:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>10 utili trucchi con il CSS</title>
		<link>http://www.paniko.org/2007/11/14/10-utili-trucchi-con-il-css/</link>
		<comments>http://www.paniko.org/2007/11/14/10-utili-trucchi-con-il-css/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 12:52:09 +0000</pubDate>
		<dc:creator>nicola</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.paniko.org/?p=3</guid>
		<description><![CDATA[Oggi volevo segnalarvi questo interessante articolo che ho trovato tempo fa sulla rete. Spero sia utile come lo è statoper me. In questo articolo esaminiamo alcuni trucchi per rendere più efficienti i nostri fogli di stile CSS. 1. Scorciatoie per l&#8217;elemento font Spesso per definire lo stile di un testo si fa così: font-size: 1em; [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi volevo segnalarvi questo interessante articolo che ho trovato tempo fa sulla rete. Spero sia utile come lo è statoper me.</p>
<p>In questo articolo esaminiamo alcuni trucchi per rendere più efficienti i nostri fogli di stile CSS.</p>
<h2><span id="more-3"></span>1. Scorciatoie per l&#8217;elemento font</h2>
<p>Spesso per definire lo stile di un testo si fa così:</p>
<p class="css"> <span style="color: #000000; font-weight: bold">font-size</span>: 1em;<br />
line-<span style="color: #000000; font-weight: bold">height</span>: <span style="color: #cc66cc">1</span>.5em;<br />
<span style="color: #000000; font-weight: bold">font-weight</span>: <span style="color: #993333">bold</span>;<br />
<span style="color: #000000; font-weight: bold">font-style</span>: <span style="color: #993333">italic</span>;<br />
<span style="color: #000000; font-weight: bold">font-variant</span>: <span style="color: #993333">small-caps</span>;<br />
<span style="color: #000000; font-weight: bold">font-family</span>: verdana,<span style="color: #993333">serif</span>;</p>
<p>Lo stesso effetto si ottiene la scorciatoia:
</p>
<p class="css"> <span style="color: #000000; font-weight: bold">font</span>: 1em/<span style="color: #cc66cc">1</span><span style="color: #6666ff">.5em </span>bold <span style="color: #993333">italic</span> <span style="color: #993333">small-caps</span> verdana,<span style="color: #993333">serif</span></p>
<p>Attenzione però: questa versione accorciata funziona solo se vengono specificate entrambe le proprietà <code>font-size</code> e <code>the font-family</code>. Allo stesso modo, se non si indicano espressamente <code>font-weight</code>, <code>font-style</code>, o <code>font-variant</code>, queste assumono il valore predefinito.</p>
<h2>2. Due classi insieme</h2>
<p>E&#8217; possibile assegnarne più di una classe a ciascun tag HTML. L&#8217;importante è che le classi siano separate da uno spazio. Ad esempio:</p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold">&lt;p</span></a> <span style="color: #000066">class</span>=<span style="color: #ff0000">&#8220;text side&#8221;</span><span style="color: #000000; font-weight: bold">&gt;</span></span> &#8230; <span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/p&gt;</span></span></p>
<p>In questo caso al paragrafo vengono assegnate <strong>entrambe</strong> le classi <code>text</code> e <code>side</code>.</p>
<h2>3. Il valore predefinito del bordo</h2>
<p>Quando si definisce una regola per i bordi, di solito si indica il colore, lo spessore e lo stile (in qualsiasi ordine). Ad esempio <code>border: 3px solid #000</code> visualizza un bordo continuo, nero e spesso 3 pixel. In questo esempio il solo valore obbligatorio è lo stile del bordo (<code>solid</code>).<br />
Se si scrive solamente <code>border: solid</code> vengono usati i valori predefiniti, lo spessore sarà quindi <code>medium</code> (circa 4 pixel) e il colore sarà uguale a quello del testo contenuto all&#8217;interno del bordo.<br />
Se si ha bisogno proprio di uno di questi stili, allora si può tranquillamente non specificarli all&#8217;interno della regola.</p>
<h2>4. !important viene ignorato da IE su Windows</h2>
<p>Di solito nei CSS le regole specificate per ultime hanno la precedenza. Ma se si usa <code>!important</code> dopo una qualsiasi regola, la regola a cui viene applicato <code>!important</code> ha la precedenza su tutto quello che viene dopo.<br />
Questo vale per tutti i browser, tranne Internet Explorer su piattaforma Windows. Ad esempio:</p>
<p class="css"><span style="color: #000000; font-weight: bold">margin-top</span>: <span style="color: #cc66cc">3</span><span style="color: #6666ff">.5em </span>!important;<br />
<span style="color: #000000; font-weight: bold">margin-top</span>: 2em</p>
<p>In questo modo, il margine superiore viene settato a 3.5em per tutti i browser, tranne IE che mostra un margine superiore di 2 em. In realtà, questo &#8220;problema&#8221; non dipende da <code>!important</code>, ma dal processamento di dichiarazioni multiple della stessa proprietà (<code>margin-top</code>) nella stessa regola.<br />
Questo trucco a volte può tornare utile quando si usano i margini relativi (come in questo esempio), dal momento che questi possono visualizzare im maniera diversa la pagina a seconda del browser e della piattaforma.</p>
<h2>5. Sostituire immagini</h2>
<p>Per visualizzare il testo è sempre preferibile usare codice HTML piuttosto che una o più immagini, perché la pagina viene caricata più velocemente e si hanno dei benefici anche in termini di accessibilità. Se però si ha la necessità di applicare al testo un determinato font che non è installato di default nei sistemi dei nostri lettori, allora bisogna ricorrere ad una immagine.</p>
<p>Diciamo che sei un venditore di computer e vuoi che il tuo sito venga trovato nei motori di ricerca quando le persone cercano &#8220;Vendita computer&#8221;. Però hai anche deciso di visualizzare questa frase con un carattere che non è molto diffuso. La prima soluzione è questa:
</p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold">&lt;h1&gt;</span></a></span><span style="color: #009900"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold">&lt;img</span></a> <span style="color: #000066">src</span>=<span style="color: #ff0000">&#8220;computer.gif&#8221;</span> <span style="color: #000066">alt</span>=<span style="color: #ff0000">&#8220;Vendita computer&#8221;</span> /<span style="color: #000000; font-weight: bold">&gt;</span></span><span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/h1&gt;</span></span></p>
<p>Formalmente questo codice è corretto, ma i motori di ricerca non daranno molta importanza al testo indicato nel tag <code>alt</code> perché preferiscono sempre il <strong>testo vero</strong>. Così una buona alternativa è scrivere:</p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold">&lt;h1&gt;</span></a></span><span style="color: #009900"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold">&lt;span&gt;</span></a></span>Vendita computer<span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/span&gt;</span></span><span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/h1&gt;</span></span></p>
<p>alternativa che però non usa il font che abbiamo deciso di visualizzare.<br />
Il &#8220;problema&#8221; si risolve aggiungendo nel nostro foglio di stile questa regola:</p>
<p class="css"> h1 <span style="color: #66cc66">{</span><br />
<span style="color: #000000; font-weight: bold">background</span>: <span style="color: #993333">url</span><span style="color: #66cc66">(</span>computer.gif<span style="color: #66cc66">)</span> <span style="color: #993333">no-repeat</span>;<br />
<span style="color: #000000; font-weight: bold">height</span>: 30px;<br />
<span style="color: #66cc66">}</span>h1 span <span style="color: #66cc66">{</span><br />
<span style="color: #000000; font-weight: bold">position</span>: <span style="color: #993333">absolute</span>;<br />
<span style="color: #000000; font-weight: bold">text-indent</span>:-2000px;<br />
<span style="color: #66cc66">}</span></p>
<p>In questo modo verrà visualizzata l&#8217;immagine, mentre il testo sarà posizionato a 2000 pixel a sinistra rispetto allo schermo e quindi non visibile. Attenzione alla proprietà <code>height</code> che deve essere uguale all&#8217;altezza dell&#8217;immagine da visualizzare.</p>
<h2>6. Il box model hack</h2>
<p>Questo trucco viene usato per risolvere un problema di visualizzazione quando si usano browser precedenti a IE 6 che invece di sommare, includono la distanza dal bordo e il bordo stesso nella larghezza di un elemento.<br />
Ad esempio, per specificare le dimensioni di un contenitore, si può usare questa regola</p>
<p class="css"> <span style="color: #cc00cc">#box <span style="color: #66cc66">{</span></span><br />
<span style="color: #000000; font-weight: bold">width</span>: 100px;<br />
<span style="color: #000000; font-weight: bold">border</span>: 5px;<br />
<span style="color: #000000; font-weight: bold">padding</span>: 20px;<br />
<span style="color: #66cc66">}</span></p>
<p>regola che viene applicata a:
</p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">&lt;div</span></a> <span style="color: #000066">id</span>=<span style="color: #ff0000">&#8220;box&#8221;</span><span style="color: #000000; font-weight: bold">&gt;</span></span>&#8230;<span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/div&gt;</span></span></p>
<p>In questo modo in tutti i browser &#8211; tranne le versioni di IE precedenti alla 6 &#8211; la larghezza complessiva dell&#8217;elemento <code>box</code> è di 150 pixel (larghezza di 100px + due bordi da 5px + due distanze dal bordo da 20px ciascuna).<br />
Nelle versioni di IE precedenti alla 6, la larghezza totale è di soli 100 pixel, con le distanze dal bordo e i bordi inclusi nella larghezza. Per ovviare a questo inconveniente si può usare il <a href="http://tantek.com/CSS/Examples/boxmodelhack.html">box model hack</a>, ma la tecnica può confondere non poco il codice. Una semplice alternativa è questa:</p>
<p class="css"> <span style="color: #cc00cc">#box <span style="color: #66cc66">{</span></span><br />
<span style="color: #000000; font-weight: bold">width</span>: 150px;<br />
<span style="color: #66cc66">}</span>#box div <span style="color: #66cc66">{</span><br />
<span style="color: #000000; font-weight: bold">border</span>: 5px;<br />
<span style="color: #000000; font-weight: bold">padding</span>: 20px;<br />
<span style="color: #66cc66">}</span></p>
<p>e il nuovo codice HTML sarà:</p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">&lt;div</span></a> <span style="color: #000066">id</span>=<span style="color: #ff0000">&#8220;box&#8221;</span><span style="color: #000000; font-weight: bold">&gt;</span></span><br />
<span style="color: #009900"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">&lt;div&gt;</span></a></span>&#8230;<span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/div&gt;</span></span><br />
<span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/div&gt;</span></span></p>
<p>Con queste regole l&#8217;elemento <code>box</code> misurerà sempre 150 pixel, qualsiasi browser venga usato.</p>
<h2>7. Centrare un elemento</h2>
<p>Se si vuole avere un sito con una larghezza fissa con il contenuto al centro dello schermo, si può usare questo comando:</p>
<p class="css"> <span style="color: #cc00cc">#content <span style="color: #66cc66">{</span></span><br />
<span style="color: #000000; font-weight: bold">width</span>: 700px;<br />
<span style="color: #000000; font-weight: bold">margin</span>: <span style="color: #cc66cc">0</span> <span style="color: #993333">auto</span>;<br />
<span style="color: #66cc66">}</span></p>
<p>Si può quindi inserire all&#8217;interno dell&#8217;elemento
</p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">&lt;div</span></a> <span style="color: #000066">id</span>=<span style="color: #ff0000">&#8220;content&#8221;</span><span style="color: #000000; font-weight: bold">&gt;</span></span><span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/div&gt;</span></span></p>
<p>tutti gli altri elementi del nostro template che così avranno un margine automatico da destra e da sinistra risultando infine al centro dello schermo. Una cosa semplice, se non fosse per le versioni di IE precedenti alla 6 che ignorano questa regola, che perciò va modificata così:</p>
<p class="css">body <span style="color: #66cc66">{</span><br />
<span style="color: #000000; font-weight: bold">text-align</span>: <span style="color: #993333">center</span>;<br />
<span style="color: #66cc66">}</span><span style="color: #cc00cc">#content <span style="color: #66cc66">{</span></span><br />
<span style="color: #000000; font-weight: bold">text-align</span>: <span style="color: #000000; font-weight: bold">left</span>;<br />
<span style="color: #000000; font-weight: bold">width</span>: 700px;<br />
<span style="color: #000000; font-weight: bold">margin</span>: <span style="color: #cc66cc">0</span> <span style="color: #993333">auto</span>;<br />
<span style="color: #66cc66">}</span></p>
<p>La prima regola allinea tutti gli elementi al centro, compreso il testo della nostra pagina. Per evitare questo effetto indesiderato, si può aggiungere <code>text-align: left</code> alla regola che gestisce l&#8217;elemento:
</p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">&lt;div</span></a> <span style="color: #000066">id</span>=<span style="color: #ff0000">&#8220;content&#8221;</span><span style="color: #000000; font-weight: bold">&gt;</span></span><span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/div&gt;</span></span></p>
<p>Alcuni browser hanno problemi nell&#8217;applicare la regola <code>margin: 0 auto;</code>, che può essere sostituita con</p>
<p class="css"><span style="color: #000000; font-weight: bold">margin-left</span>:<span style="color: #993333">auto</span>;<br />
<span style="color: #000000; font-weight: bold">margin-right</span>:<span style="color: #993333">auto</span>;</p>
<h2>8. Allineamento verticale con i CSS</h2>
<p>L&#8217;allineamento in verticale degli elementi contenuti nelle celle di una tabella è problematico. Se vogliamo visualizzare del testo in mezzo ad una cella e usiamo <code>vertical-align: middle</code>, non funziona: il testo viene posizionato sempre in alto nella cella. La soluzione consiste nello specificare l&#8217;interlinea uguale all&#8217;altezza della cella, quindi se la cella ha un&#8217;altezza di <code>2em</code>, basterà inserire nel CSS questa regola:</p>
<p class="css"><span style="color: #6666ff">.cella </span><span style="color: #66cc66">{</span><br />
line-<span style="color: #000000; font-weight: bold">height</span>: 2em;<br />
<span style="color: #66cc66">}</span></p>
<h2>9. Posizionamento all&#8217;interno di un contenitore</h2>
<p>Con i CSS è possibile posizionare gli oggetti nel documento in maniera assoluta, ed è possibile anche posizionare uno o più oggetti all&#8217;interno di un altro oggetto-contenitore. Per farlo basta assegnare ad un contenitore (di solito un <code>div</code>) questa regola:</p>
<p><span style="color: #cc00cc">#contenitore <span style="color: #66cc66">{</span></span></p>
<p class="css"> <span style="color: #000000; font-weight: bold">position</span>: <span style="color: #993333">relative</span>;<br />
<span style="color: #66cc66">}</span></p>
<p>Ora tutti gli elementi all&#8217;interno di questo contenitoresaranno posizionati in maniera relativa ad esso. Quindi avendo una struttura HTML del genere:</p>
<p><span style="color: #009900"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">&lt;div</span></a> <span style="color: #000066">id</span>=<span style="color: #ff0000">&#8220;contenitore&#8221;</span><span style="color: #000000; font-weight: bold">&gt;</span></span></p>
<p class="html"> <span style="color: #009900"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">&lt;div</span></a> <span style="color: #000066">id</span>=<span style="color: #ff0000">&#8220;menu&#8221;</span><span style="color: #000000; font-weight: bold">&gt;</span></span>&#8230;<span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/div&gt;</span></span><br />
<span style="color: #009900"><span style="color: #000000; font-weight: bold">&lt;/div&gt;</span></span></p>
<p>possiamo posizionare il menu a 30 pixel esatti da sinistra e a 5 pixel dal margine superiore del contenitore, usando queste regole:</p>
<p><span style="color: #cc00cc">#menu <span style="color: #66cc66">{</span></span></p>
<p class="css"> <span style="color: #000000; font-weight: bold">position</span>: <span style="color: #993333">absolute</span>;<br />
<span style="color: #000000; font-weight: bold">left</span>: 30px;<br />
<span style="color: #000000; font-weight: bold">top</span>: 5px;<br />
<span style="color: #66cc66">}</span></p>
<h2>10. Colore di sfondo fino alla fine dello schermo</h2>
<p>Uno degli svantaggi dei CSS rispetto ai layout basati su tabelle è la difficoltà a gestire l&#8217;altezza delle colonne. Facciamo un esempio: abbiamo una pagina con sfondo bianco ed un layout a due colonne (una a sinistra per il menu e una a destra, più larga, per il contenuto). Vogliamo che la colonna con il menu abbia lo sfondo blu. Possiamo assegnare una regola nel nostro foglio di stile:</p>
<p>#menu<span style="color: #66cc66">{</span></p>
<p class="css"> <span style="color: #000000; font-weight: bold">background</span>: <span style="color: #000000; font-weight: bold">blue</span>;<br />
<span style="color: #000000; font-weight: bold">width</span>: 150px;<br />
<span style="color: #66cc66">}</span></p>
<p>Il problema ora è che il menu non ha un&#8217;altezza che gli permette di toccare la fine della pagina, e così lo sfondo blu. Ad un certo punto il menu finisce, non ha la stessa altezza della colonna di destra.<br />
Sfortunatamente l&#8217;unica soluzione è quella di &#8220;imbrogliare&#8221;, assegnando al <code>body</code> del documento un&#8217;immagine che abbia esattamente lo stesso colore e la stessa larghezza della colonna di sinistra e che simuli la divisione in colonne.</p>
<p>body <span style="color: #66cc66">{</span></p>
<p class="css"> <span style="color: #000000; font-weight: bold">background</span>: <span style="color: #993333">url</span><span style="color: #66cc66">(</span>sfondo-blu.gif<span style="color: #66cc66">)</span> <span style="color: #cc66cc">0</span> <span style="color: #cc66cc">0</span> <span style="color: #993333">repeat-y</span>;<br />
<span style="color: #66cc66">}</span></p>
<p>L&#8217;immagine <code>sfondo-blu.gif</code> ovviamente deve essere larga esattamente 150 pixel ed avere lo stesso colore dello sfondo del menu. Lo svantaggio di questo sistema è che non si possono specificare le dimensioni del testo in <code>em</code>, cioè di non permettere all&#8217;utente di ingrandire o ridurre le dimensioni dei caratteri.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paniko.org/2007/11/14/10-utili-trucchi-con-il-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

