<?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>A fronteira final &#187; Caineli</title>
	<atom:link href="http://afronteirafinal.com/category/webmaster/leonardo-caineli/feed/" rel="self" type="application/rss+xml" />
	<link>http://afronteirafinal.com</link>
	<description>Audaciosamente indo onde nenhum dev jamais esteve</description>
	<lastBuildDate>Tue, 17 Aug 2010 17:03:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>@font-face &#8211; Tipografia livre</title>
		<link>http://afronteirafinal.com/font-face-tipografia-livre/</link>
		<comments>http://afronteirafinal.com/font-face-tipografia-livre/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 21:23:24 +0000</pubDate>
		<dc:creator>Leonardo Caineli</dc:creator>
				<category><![CDATA[Caineli]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[fontes]]></category>
		<category><![CDATA[tipografia]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=346</guid>
		<description><![CDATA[A propriedade @font-face do CSS possibilita aos browsers renderizar fontes que não estão instaladas no computador do usuário. Exemplo: @font-face{ font-family:&#039;Comic Book&#039;; src:local(&#039;Comic Book&#039;),url(&#039;Comic Book.ttf&#039;) format(&#039;TrueType&#039;); } p{font-family:&#039;Comic Book&#039;,arial,helvetica,sans-serif} Valores: O valor &#8220;local&#8221; informa se a fonte já existe no sistema operacional do usuário antes de ser instalada O valor &#8220;url&#8221; informa o caminho da [...]]]></description>
			<content:encoded><![CDATA[<p>A propriedade @font-face do CSS possibilita aos browsers renderizar fontes que não estão instaladas no computador do usuário. Exemplo:</p>
<pre class="brush: css">
@font-face{
	font-family:&#039;Comic Book&#039;;
	src:local(&#039;Comic Book&#039;),url(&#039;Comic Book.ttf&#039;) format(&#039;TrueType&#039;);
}
p{font-family:&#039;Comic Book&#039;,arial,helvetica,sans-serif}
</pre>
<h2>Valores:</h2>
<ul style="margin-bottom:20px">
<li>O valor <strong>&#8220;local&#8221;</strong> informa se a fonte já existe no sistema operacional do usuário antes de ser instalada</li>
<li>O valor <strong>&#8220;url&#8221;</strong> informa o caminho da fonte que será instalada</li>
<li>O valor <strong>&#8220;format&#8221;</strong> informa qual é o formato da fonte que será instalada</li>
</ul>
<h2>Formatos:</h2>
<p>Os formatos aceitos pelos browsers são:</p>
<ul style="margin-bottom:20px">
<li><strong>Embedded OpenType</strong> &#8211; .eot</li>
<li><strong>OpenType</strong> &#8211; .otf</li>
<li><strong>Scalable Vector Graphics</strong> &#8211; .svg e .svgz (formato .svg &#8220;gzipado&#8221;)</li>
<li><strong>TrueType</strong> &#8211; .ttf</li>
</ul>
<p>O Internet Explorer suporta apenas o formato Embedded OpenType (.eot), portanto deverão ser declarados dois formatos, sendo um exclusivo para as versões do Internet Explorer (.eot) e/ou outro(s) para os demais browsers (.otf, .svg, .svgz e .ttf). Exemplo:</p>
<pre class="brush: css">
@font-face{
	font-family:&#039;Comic Book&#039;;
	src:url(&#039;Comic Book.eot&#039;); /* IE */
	src:local(&#039;Comic Book&#039;),url(&#039;Comic Book.ttf&#039;) format(&#039;TrueType&#039;); /* DEMAIS BROWSERS */
}
p{font-family:&#039;Comic Book&#039;,arial,helvetica,sans-serif}
</pre>
<p>Exemplo declarando outros formatos:</p>
<pre class="brush: css">
@font-face{
	font-family:&#039;Comic Book&#039;;
	src:url(&#039;Comic Book.eot&#039;); /* IE */
	src:local(&#039;Comic Book&#039;),
	    url(&#039;Comic Book.otf&#039;) format(&#039;OpenType&#039;);
	    url(&#039;Comic Book.svg&#039;) format(&#039;Scalable Vector Graphics&#039;);
	    url(&#039;Comic Book.svgz&#039;) format(&#039;Scalable Vector Graphics&#039;);
	    url(&#039;Comic Book.ttf&#039;) format(&#039;TrueType&#039;)
}
p{font-family:&#039;Comic Book&#039;,arial,helvetica,sans-serif}
</pre>
<h2>Compatibilidade:</h2>
<p>A propriedade @font-face é compatível com os principais sistemas operacionais e browsers (inclusive o Internet Explorer 6):</p>
<ul style="margin-bottom:20px">
<li><strong>Linux</strong> &#8211; Chrome e Firefox</li>
<li><strong>Mac OS</strong> &#8211; Chrome, Firefox, Opera e Safari</li>
<li><strong>Windows</strong> &#8211; Internet Explorer 6, 7, 8 e 9, Chrome, Firefox, Opera e Safari</li>
</ul>
<h2>Talvez ajude&#8230;</h2>
<ul style="margin-bottom:20px">
<li><a href="http://www.fontsquirrel.com/fontface/generator/" title="@font-face Generator" rel="external"><strong>@font-face Generator</strong></a> &#8211; Gerar fontes para outros formatos</li>
<li><a href="http://www.freefontconverter.com/" title="Free Font Converter" rel="external"><strong>Free Font Converter</strong></a> &#8211; Converter fontes para outros formatos</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/font-face-tipografia-livre/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Otimizando seu CSS</title>
		<link>http://afronteirafinal.com/otimizando-seu-css/</link>
		<comments>http://afronteirafinal.com/otimizando-seu-css/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 09:00:30 +0000</pubDate>
		<dc:creator>Leonardo Caineli</dc:creator>
				<category><![CDATA[Caineli]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[semântica web]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=118</guid>
		<description><![CDATA[CSS Sprites CSS Sprites consiste em unirmos imagens em apenas um arquivo, utilizando CSS para posicioná-las e mostrá-las em seu HTML. O principal objetivo da utilização desta técnica é a economia de requisições HTTP, fazendo com que seu site ganhe performance e economize banda. Imagem Para começar, unimos todas as imagens utilizadas em apenas uma: [...]]]></description>
			<content:encoded><![CDATA[<h2>CSS Sprites</h2>
<p>CSS Sprites consiste em unirmos imagens em apenas um arquivo, utilizando CSS para posicioná-las e mostrá-las em seu HTML.</p>
<p>O principal objetivo da utilização desta técnica é a economia de requisições HTTP, fazendo com que seu site ganhe performance e economize banda.</p>
<h3>Imagem</h3>
<p>Para começar, unimos todas as imagens utilizadas em apenas uma:</p>
<p><img class="alignnone size-full" src="http://afronteirafinal.com/wp-content/uploads/2010/02/otimizando-seu-css-css-sprites-01.gif" alt="CSS Sprites" width="400" height="200" /></p>
<p><span id="more-118"></span></p>
<h3>HTML</h3>
<p>Montamos uma lista inserindo uma classe para cada “a”, desta forma conseguiremos manipular cada imagem separadamente:</p>
<pre class="brush: html">
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Aspira Soldier&quot; class=&quot;aspira_soldier&quot;&gt;Aspira Soldier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Elite Soldier&quot; class=&quot;elite_soldier&quot;&gt;Elite Soldier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Sniper Soldier&quot; class=&quot;sniper_soldier&quot;&gt;Sniper Soldier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Gas Soldier&quot; class=&quot;gas_soldier&quot;&gt;Gas Soldier&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<h3>CSS</h3>
<p>Definimos no “a” o background com a imagem e nas classes criadas manipulamos onde serão buscados os trechos desejados da imagem através da propriedade “background-position”.</p>
<p>Seguindo esta mesma linha, definimos o “a:hover” de cada classe:</p>
<pre class="brush: css">
/* CSS Reset */
*{margin:0;padding:0;border:0;outline:0;list-style:none;text-decoration:none}

/* Soldiers */
ul li{float:left}
ul li a{float:left;display:inline;margin-right:5px;border:1px solid #eee;width:100px;height:100px;text-indent:-15000px;background-image:url(soldiers.gif)}
ul li a:hover{border-color:#999}

/* Aspira Soldier */
ul li a.aspira_soldier{background-position:0 0}
ul li a.aspira_soldier:hover{background-position:0 -100px}

/* Elite Soldier */
ul li a.elite_soldier{background-position:-100px 0}
ul li a.elite_soldier:hover{background-position:-100px -100px}

/* Sniper Soldier */
ul li a.sniper_soldier{background-position:-200px 0}
ul li a.sniper_soldier:hover{background-position:-200px -100px}

/* Gas Soldier */
ul li a.gas_soldier{background-position:-300px 0}
ul li a.gas_soldier:hover{background-position:-300px -100px}
</pre>
<h3>Resultado</h3>
<p>Neste caso temos o efeito rollover, onde passando o mouse sobre cada imagem ela é trocada por outra:</p>
<p><img class="alignnone size-full" src="http://afronteirafinal.com/wp-content/uploads/2010/02/otimizando-seu-css-css-sprites-02.gif" alt="CSS Sprites" width="423" height="102" /></p>
<div style="clear: both; margin-bottom: 20px; border-bottom: 1px dotted #bbb; font-size: 0;">
<hr /></div>
<h2>Declaração única</h2>
<p>A declaração única consiste em compactar diversas propriedades com a mesma finalidade em apenas uma.</p>
<p>Aqui veremos quais são essas propriedades e como utilizar a declaração única corretamente.</p>
<h3>Margin e padding</h3>
<p>Se todos os valores forem iguais:</p>
<pre class="brush: css">
/* Declaração normal */
seletor {
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
margin-left: 10px;
}

/* Declaração única */
seletor{margin:10px}
</pre>
<p>Se os valores top/bottom e right/left forem iguais:</p>
<pre class="brush: css">
/* Declaração normal */
seletor {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;
}

/* Declaração única */
seletor{margin:10px 20px}
</pre>
<p>Se os valores right/left forem iguais:</p>
<pre class="brush: css">
/* Declaração normal */
seletor {
padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 20px;
}

/* Declaração única */
seletor{padding:10px 20px 30px}
</pre>
<p>Se nenhum valor for igual:</p>
<pre class="brush: css">
/* Declaração normal */
seletor {
padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;
}

/* Declaração única */
seletor{padding:10px 20px 30px 40px}
</pre>
<h3>Border</h3>
<pre class="brush: css">
/* Declaração normal */
seletor {
border-width: 1px;
border-style: solid;
border-color: #666666;
}

/* Declaração única */
seletor{border:1px solid #666}
</pre>
<h3>Font</h3>
<pre class="brush: css">
/* Declaração normal */
seletor {
font-style: italic;
font-variant: small-caps;
font-weight: bold;
font-size: 12px;
line-height: 18px;
font-family: arial;
}

/* Declaração única */
seletor{font:italic small-caps bold 12px/18px arial}
</pre>
<h3>Background</h3>
<pre class="brush: css">
/* Declaração normal */
seletor {
background-color: #666666;
background-image: url(imagem.gif);
background-repeat: repeat-x;
background-position: top;
}

/* Declaração única */
seletor{background:#666 url(imagem.gif) repeat-x top}
</pre>
<h3>List-style</h3>
<pre class="brush: css">
/* Declaração normal */
seletor {
list-style-type: disc;
list-style-position: inside;
list-style-image: url(imagem.gif);
}

/* Declaração única */
seletor{list-style:disc inside url(imagem.gif)}
</pre>
<h3>Color</h3>
<p>Se todos os hexadecimais forem iguais:</p>
<pre class="brush: css">
/* Declaração normal */
seletor {
color: #666666;
}

/* Declaração única */
seletor{color:#666}
</pre>
<p>Se todos os pares de hexadecimais forem iguais:</p>
<pre class="brush: css">
/* Declaração normal */
seletor {
color: #6699cc;
}

/* Declaração única */
seletor{color:#69c}
</pre>
<h3>Importante</h3>
<p>Na declaração única os valores sempre devem seguir o sentido horário (top/right/bottom/left) e a compactação dos hexadecimais pode ser aplicada em qualquer propriedade que contenha cor (border-color, background-color, etc).</p>
<div style="clear: both; margin-bottom: 20px; border-bottom: 1px dotted #bbb; font-size: 0;">
<hr /></div>
<h2>Método otimizado</h2>
<p>Diferente da identação convencional utilizada no HTML (com TAB’s) o CSS pode utilizar um método otimizado.</p>
<h3>Exemplo utilizando a identação convencional (355 bytes):</h3>
<pre class="brush: css">
/* CSS Reset */

* {
margin: 0;
padding: 0;
border: 0;
outline: 0;
list-style: none;
text-decoration: none;
}

/* Menu */

ul li {
float: left;
}

ul li a {
float: left;
display: inline;
margin-right: 5px;
padding: 10px;
border: 1px solid #eee;
font: bold 12px arial;
color: #666;
background: #fff;
}

ul li a:hover {
border-color: #999;
}
</pre>
<h3>Exemplo utilizando o método otimizado (291 bytes):</h3>
<pre class="brush: css">
/* CSS Reset */
*{margin:0;padding:0;border:0;outline:0;list-style:none;text-decoration:none}

/* Menu */
ul li{float:left}
ul li a{float:left;display:inline;margin-right:5px;padding:10px;border:1px solid #eee;font:bold 12px arial;color:#666;background:#fff}
ul li a:hover{border-color:#999}
</pre>
<p>Lembrando que cada TAB, quebra de linha ou espaço consumirá 1 byte, devemos eliminá-los mesclando todos os seletores, propriedades e valores, removendo sempre o último “;” (ponto e vírgula) antes do fechamento da “}” (chave).</p>
<p>A idéia é termos um documento leve afim de economizar R$ por conta da diminuição do consumo de banda, porém a organização é essencial para justificar a ausência da identação, para isso, procure adotar um padrão na ordem das propriedades e identifique cada bloco utilizando comentários.</p>
<h3>Parece pouco?</h3>
<p>Vamos supor que um grande portal tenha em média 1 milhão de acessos por dia:</p>
<p>355 bytes * 1.000.000 = 355.000.000 bytes (identação convencional)<br />
291 bytes * 1.000.000 = 291.000.000 bytes (método otimizado)<br />
355.000.000 bytes &#8211; 291.000.000 bytes = 64.000.000 bytes (economia)<br />
64.000.000 bytes = 62.500 megabytes = 61 gigabytes</p>
<p>Economia de 61 gigabytes por dia para um trechinho de CSS! Ainda parece pouco?</p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/otimizando-seu-css/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
