<?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>pixeladas aleatórias &#187; CSS Design</title>
	<atom:link href="http://s1mone.net/category/css-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://s1mone.net</link>
	<description>Pequenas doses de (des)informação sobre a Vida, a Web e Tudo Mais</description>
	<lastBuildDate>Mon, 01 Aug 2011 15:50:36 +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>Maturando o HTML</title>
		<link>http://s1mone.net/blog/2008/06/maturando-o-html/</link>
		<comments>http://s1mone.net/blog/2008/06/maturando-o-html/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 22:32:03 +0000</pubDate>
		<dc:creator>Simone Villas Boas</dc:creator>
				<category><![CDATA[CSS Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://s1mone.net/?p=286</guid>
		<description><![CDATA[Podemos considerar um bom HTML aquele que é construído logo no início do projeto prevendo todas as possibilidades sem ser detalhista ao extremo. E não é necessária nenhuma bola de cristal para isso.]]></description>
			<content:encoded><![CDATA[<p>Construir um bom código HTML garante um bom andamento de um projeto de desenvolvimento de interfaces. Muitos dos atributos e marcações que normalmente sentimos falta apenas na integração das camadas de apresentação e de comportamento podem ser antecipados em um código HTML maduro e eficiente, deixando apenas as particularidades de cada interface para ajustes pós-integração. <span id="more-286"></span>Para isso, deve-se seguir regras bem simples:</p>
<h3>Cada elemento-chave deve poder ser identificado</h3>
<p>Em nosso código de teste, vamos usar uma lista não-ordenada simples:</p>
<pre>&lt;ul&gt;
    &lt;li&gt;Primeiro item&lt;/li&gt;
    &lt;li&gt;Segundo item&lt;/li&gt;
    &lt;li&gt;Terceiro item&lt;/li&gt;
    &lt;li&gt;Quarto item&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Imaginando que haverá outras listas nesta tela, o ideal é identificá-la diretamente:</p>
<pre>&lt;ul id="lista-especial"&gt;
    &lt;li&gt;Primeiro item&lt;/li&gt;
    &lt;li&gt;Segundo item&lt;/li&gt;
    &lt;li&gt;Terceiro item&lt;/li&gt;
    &lt;li&gt;Quarto item&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Ou pelo seu pai, onde todas as listas-filhas terão a mesma apresentação e comportamento:</p>
<pre>&lt;div id="conteudo"&gt;
    &lt;ul&gt;
        &lt;li&gt;Primeiro item&lt;/li&gt;
        &lt;li&gt;Segundo item&lt;/li&gt;
        &lt;li&gt;Terceiro item&lt;/li&gt;
        &lt;li&gt;Quarto item&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;</pre>
<p>Se esta lista for um menu, certamente o designer irá escolher uma forma de realçar cada item ou pedir certo comportamento diferenciado como por exemplo alterar a cor com o passar de cursor ou com o item ativado. Prevendo isso, cada item dentro da lista deve ser identificado:</p>
<pre>&lt;ul id="menu-principal"&gt;
    &lt;li id="menu-item-1"&gt;&lt;a href="#1"&gt;Primeira página&lt;/a&gt;&lt;/li&gt;
    &lt;li id="menu-item-2"&gt;&lt;a href="#2"&gt;Segunda página&lt;/a&gt;&lt;/li&gt;
    &lt;li id="menu-item-3"&gt;&lt;a href="#3"&gt;Terceira página&lt;/a&gt;&lt;/li&gt;
    &lt;li id="menu-item-4"&gt;&lt;a href="#4"&gt;Quarta página&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Desta forma, seja qual for a implementação escolhida para o menu o desenvolvedor poderá manipular:</p>
<pre>#menu-item-1 {background:pink;}
#menu-item-1 a{background:blue;}
#menu-item-1 a:hover{background:red;}</pre>
<h3>Mais um pé nos frameworks CSS</h3>
<p>Seu designer favorito não consegue fazer outro tipo de layout que não seja de largura fixa, centralizado na tela? Então você já pode antecipar que o HTML terá um bloco logo abaixo da tag <em>body </em>somente para este fim. Não me lembro, inclusive, da última interface que montei que não precisei deste bloco. Nem todas as possibilidades de uma interface podem ser incluídas num HTML enxuto e puramente semântico. Algumas <em>divs</em> auxiliares sempre são necessárias.  Da mesma forma, vejo que sempre preciso dos blocos de cabeçalho, rodapé e barra lateral.</p>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Meu site&lt;/title&gt;
    &lt;link rel="stylesheet" type="text/css" href="styles.css"/&gt;
    &lt;script type="text/javascript" src="behavior.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
<span style="color: #ff0000;">&lt;div id="centralizando-layout"&gt;</span>
    <span style="color: #000088;">&lt;div id="cabecalho"&gt;</span>
        &lt;h1&gt;Olá mundo!&lt;/h1&gt;
    <span style="color: #000088;">&lt;/div&gt;</span>
    <span style="color: #008800;">&lt;div id="conteudo"&gt;</span>
        <strong>Este é um elemento solto</strong>
        &lt;p&gt;Lorem ipsum dolor sit amet, consectetur
           adipisicing elit, sed do eiusmod tempor
           incididunt ut labore et dolore magna
           aliqua.&lt;/p&gt;
    <span style="color: #008800;">&lt;/div&gt;</span>
    <span style="color: #880000;">&lt;ul id="lateral"&gt;</span>
        &lt;li id="mn-it-1"&gt;&lt;a href="#1"&gt;Primeira página&lt;/a&gt;&lt;/li&gt;
        &lt;li id="mn-it-2"&gt;&lt;a href="#2"&gt;Segunda página&lt;/a&gt;&lt;/li&gt;
        &lt;li id="mn-it-3"&gt;&lt;a href="#3"&gt;Terceira página&lt;/a&gt;&lt;/li&gt;
        &lt;li id="mn-it-4"&gt;&lt;a href="#4"&gt;Quarta página&lt;/a&gt;&lt;/li&gt;
    <span style="color: #880000;">&lt;/ul&gt;</span>
    <span style="color: #888800;">&lt;div id="rodape"&gt;</span>
        &lt;p&gt;© 2008 Meu site&lt;/p&gt;
<span style="color: #888800;">    &lt;/div&gt;</span>
<span style="color: #ff0000;">&lt;/div&gt;</span>
&lt;/body&gt;
&lt;/html&gt;</pre>
<h3>Evite expressões órfãs</h3>
<p>Veja no exemplo anterior a expressão &#8220;Este é um elemento solto&#8221; e tente manipulá-la via CSS ou JavaScript. É mais complicado, não? Tente sempre manter os elementos dentro de marcações específicas:</p>
<pre>    <span style="color: #008800;">&lt;div id="content"&gt;</span>
<strong>        &lt;h2&gt;Este não é um elemento sem pai&lt;/h2&gt;</strong>
        &lt;p&gt;Lorem ipsum dolor sit amet, consectetur
           adipisicing elit, sed do eiusmod tempor
           incididunt ut labore et dolore magna
           aliqua.&lt;/p&gt;
    <span style="color: #008800;">&lt;/div&gt;</span></pre>
<h3>Melhor antecipar do que alterar cinqüenta telas depois</h3>
<p>Muitas das decisões podem ser antecipadas mesmo sem olhar o layout ou o sistema, mas é melhor que não seja assim. Antes de começar a montar o código HTML, analise a interface previamente aprovada e conheça bem as limitações do sistema. Não é bola de cristal ou receita de bolo, e sim uma questão de saber reconhecer os padrões de código que se repetem projeto após projeto.</p>
<hr/>
<h3>Artigos relacionados:</h3>
<ul>
<li><a href="http://s1mone.net/blog/2008/05/ordenando-os-seletores-css/" rel="bookmark" title="14/05/2008">Ordenando os seletores CSS</a></li>
<li><a href="http://s1mone.net/blog/2008/01/css-livre-leve-e-solto/" rel="bookmark" title="15/01/2008">CSS livre, leve e solto</a></li>
<li><a href="http://s1mone.net/blog/2007/09/visie-code-show/" rel="bookmark" title="03/09/2007">Visie: Code Show</a></li>
<li><a href="http://s1mone.net/blog/2007/10/definindo-estrutura-apresentacao-e-comportamento/" rel="bookmark" title="23/10/2007">Definindo estrutura, apresentação e comportamento</a></li>
<li><a href="http://s1mone.net/blog/2008/03/uma-outra-visao-sobre-css-frameworks/" rel="bookmark" title="19/03/2008">Uma outra visão sobre CSS Frameworks</a></li>
</ul>
<p><!-- Similar Posts took 12.034 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://s1mone.net/blog/2008/06/maturando-o-html/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Ordenando os seletores CSS</title>
		<link>http://s1mone.net/blog/2008/05/ordenando-os-seletores-css/</link>
		<comments>http://s1mone.net/blog/2008/05/ordenando-os-seletores-css/#comments</comments>
		<pubDate>Wed, 14 May 2008 22:02:54 +0000</pubDate>
		<dc:creator>Simone Villas Boas</dc:creator>
				<category><![CDATA[CSS Design]]></category>
		<category><![CDATA[cheatsheet]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ordernação]]></category>
		<category><![CDATA[otimização]]></category>

		<guid isPermaLink="false">http://s1mone.net/?p=278</guid>
		<description><![CDATA[O artigo sobre organização do CSS era para ser dividido em duas partes. Desisti logo depois. Achei que estava indo longe demais na minha mania de código limpo. Mas a <em>Smashing Magazine</em> me provocou e tive que voltar atrás. Vamos listar alguns parâmetros para pôr uma ordem definitiva nos seletores CSS.]]></description>
			<content:encoded><![CDATA[<p>O artigo sobre organização do CSS era para ser dividido em duas partes. Desisti logo depois. Achei que estava indo longe demais na minha mania de código limpo. Mas a <a title="Improving Code Readability With CSS Styleguides" href="http://www.smashingmagazine.com/2008/05/02/improving-code-readability-with-css-styleguides/">Smashing Magazine me provocou</a> e tive que voltar atrás. Vamos listar alguns parâmetros para pôr uma ordem definitiva nos seletores CSS.<br />
<span id="more-278"></span><br />
De qualquer forma, não deveria estar me justificando! Já vi muito código como este:</p>
<pre>h3{
display:block; width:190px; height:40px;
margin-left:20px;padding:2px 4px 2px 4px;
background-image:url(/img/titulo.gif);
background-repeat:no-repeat;
background-position:left top;
width:188px;
height:40px;
border-top:2px solid #006666;
border-bottom:2px solid #006666;
display:block;
overflow:hidden;
text-indent:-999px;
margin:10px 10px 10px;
}</pre>
<p>Em qualquer um dos casos, não é só desperdício de bytes, é também um problema durante a manutenção do código e na solução de problemas. Também em CSS, menos é mais. Códigos mais simples são mais fáceis de ler e compreender.</p>
<p>Como já <a title="CSS livre, leve e solto" href="/blog/2008/01/css-livre-leve-e-solto/">vimos anteriormente a otimização de CSS</a>, vamos limpar o exemplo antes de ordená-lo:</p>
<pre>h3 a{
	display:block;
	width:190px;
	height:40px;
	margin-left:20px;
	<em>padding:2px 4px;</em>
	background:url(/img/titulo.gif) no-repeat 0 0;
	width:188px;
	height:40px;
	<em>border:0 solid #066;
	border-width:2px 0;</em>
	display:block;
	overflow:hidden;
	text-indent:-999px;
	<em>margin:10px</em>
}</pre>
<p>Agora podemos <strong><em>ordenar os seletores</em></strong> com alguns parâmetros pré-estabelecidos. O exemplo pode ficar assim, onde reparamos alguns seletores repetidos com valores conflitantes:</p>
<pre>h3 a{
	<span style="text-decoration: line-through;">display:block;</span>
	display:block;
	overflow:hidden;
	<span style="text-decoration: line-through;">width:190px;</span>
	width:188px;
	<span style="text-decoration: line-through;">height:40px;</span>
	height:40px;
	<span style="text-decoration: line-through;">margin-left:20px;</span>
	margin:10px;
	padding:2px 4px;
	background:url(/img/titulo.gif) no-repeat 0 0;
	border:0 solid #066;
	border-width:2px 0;
	text-indent:-999px
}</pre>
<p>O <em>debug </em>é automático assim mesmo. É só definir uma ordem que o desenvolvedor bate o olho e vê o que está errado ou sobrando no código. Tenha cuidado ao reordenar os seletores semelhantes para não alterar o resultado final.</p>
<p>Para ordernar os seletores basta <strong>definir uma ordem arbitrária</strong>: ordem alfabética, por tipo de seletor, pela melhor forma de memorização, não importa. Se não quiser pensar sobre isso, ofereço a minha <em>cola</em>.</p>
<p>A base desta lista foi a <a href="http://www.w3schools.com/css/css_reference.asp">referência de CSS do W3Schools</a> e está dividida e ordenada em grupos. Primeiro, lido com os fatores de dimensão e posicionamento dos boxes para depois tratar do formato e cores.</p>
<h3>Posição e classificação do elemento na tela</h3>
<h4>Posicionamento</h4>
<ul>
<li>position</li>
<li>top</li>
<li>right</li>
<li>bottom</li>
<li>left</li>
<li>z-index</li>
<li>overflow</li>
<li>clip</li>
<li>vertical-align</li>
</ul>
<h4>Classificação</h4>
<ul>
<li>clear</li>
<li>float</li>
<li>display</li>
<li>visibility</li>
<li>cursor</li>
</ul>
<h3>Tamanho do elemento e sua relação com outros</h3>
<h4>Dimensão</h4>
<ul>
<li> width</li>
<li>height</li>
<li>max-width</li>
<li>max-height</li>
<li>min-width</li>
<li>min-height</li>
<li>line-height</li>
</ul>
<h4>Margens</h4>
<ul>
<li>margin</li>
<li>padding</li>
</ul>
<h3>Formato do elemento</h3>
<h4>Fundo</h4>
<ul>
<li>background</li>
<li>background-color</li>
<li>background-image</li>
<li>background-repeat</li>
<li>background-attachment</li>
<li>background-position</li>
</ul>
<h4>Bordas</h4>
<ul>
<li>border</li>
<li>border-width</li>
<li>border-style</li>
<li>border-color</li>
</ul>
<p><em> </em></p>
<h4>Listas e marcadores</h4>
<ul>
<li>list-style</li>
<li>list-style-type</li>
<li>list-style-position</li>
<li>list-style-image</li>
</ul>
<h4>Tabela</h4>
<ul>
<li>border-collapse</li>
<li>border-spacing</li>
<li>caption-side</li>
<li>empty-cells</li>
<li>table-layout</li>
</ul>
<h3>Tipologia e conteúdo</h3>
<h4>Fontes</h4>
<ul>
<li>font</li>
<li>font-style</li>
<li>font-variant</li>
<li>font-weight</li>
<li>font-size</li>
<li>font-family</li>
</ul>
<h4>Texto</h4>
<ul>
<li>color</li>
<li>text-align</li>
<li>text-decoration</li>
<li>text-indent</li>
<li>text-transform</li>
<li>direction</li>
<li>letter-spacing</li>
<li>white-space</li>
<li>word-spacing</li>
</ul>
<h4>Conteúdo</h4>
<ul>
<li>content</li>
<li>quotes</li>
</ul>
<p>Estou usando esta lista já há alguns meses com sucesso. Nenhuma lista é perfeita e adoraria idéias para aperfeiçoá-la. Até a segunda semana de uso não tirei-a do meu lado. Depois, tudo ficou automático e só a consulto para propriedades que uso raramente. Quando pego um código antigo, é instantânea a vontade de reordernar tudo antes de revisá-lo.</p>
<h4>Referências:</h4>
<ul>
<li> <a href="http://www.w3schools.com/css/css_reference.asp">CSS2 Reference</a>, W3Schools;</li>
<li><a href="http://www.smashingmagazine.com/2008/05/02/improving-code-readability-with-css-styleguides/">Improving Code Readability With CSS Styleguides</a>, na Smashing Magazine;</li>
<li><a href="http://www.maujor.com/tutorial/dicascss.php">Dicas básicas para projetar Folhas de Estilos</a>, por Maurício Samy Silva.<a href="http://www.maujor.com/tutorial/dicascss.php"><br />
</a></li>
</ul>
<hr/>
<h3>Artigos relacionados:</h3>
<ul>
<li><a href="http://s1mone.net/blog/2008/01/css-livre-leve-e-solto/" rel="bookmark" title="15/01/2008">CSS livre, leve e solto</a></li>
<li><a href="http://s1mone.net/blog/2008/03/uma-outra-visao-sobre-css-frameworks/" rel="bookmark" title="19/03/2008">Uma outra visão sobre CSS Frameworks</a></li>
<li><a href="http://s1mone.net/blog/2007/10/definindo-estrutura-apresentacao-e-comportamento/" rel="bookmark" title="23/10/2007">Definindo estrutura, apresentação e comportamento</a></li>
<li><a href="http://s1mone.net/blog/2005/07/tornando-o-rss-mais-amigavel/" rel="bookmark" title="22/07/2005">Tornando o RSS mais amigável</a></li>
<li><a href="http://s1mone.net/blog/2008/06/maturando-o-html/" rel="bookmark" title="25/06/2008">Maturando o HTML</a></li>
</ul>
<p><!-- Similar Posts took 1465.750 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://s1mone.net/blog/2008/05/ordenando-os-seletores-css/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Uma outra visão sobre CSS Frameworks</title>
		<link>http://s1mone.net/blog/2008/03/uma-outra-visao-sobre-css-frameworks/</link>
		<comments>http://s1mone.net/blog/2008/03/uma-outra-visao-sobre-css-frameworks/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 21:57:23 +0000</pubDate>
		<dc:creator>Simone Villas Boas</dc:creator>
				<category><![CDATA[CSS Design]]></category>
		<category><![CDATA[css frameworks]]></category>

		<guid isPermaLink="false">http://s1mone.net/blog/2008/03/uma-outra-visao-sobre-css-frameworks/</guid>
		<description><![CDATA[Maníaco por organização? Tente pôr alguma ordem em sua folha de estilos CSS com estas dicas.]]></description>
			<content:encoded><![CDATA[<p>Existem várias formas de produzir com CSS frameworks. A visão que irei mostrar aqui consiste em mais <strong>uma forma de organizar e otimizar os estilos</strong> de um site, bem diferente do conceito de reutilização de código para outros sites futuros. É uma visão próxima do <a href="http://www.alistapart.com/articles/frameworksfordesigners">artigo original em <em>A List Apart</em></a>.</p>
<p><strong>Importante!</strong> Esta é apenas uma sugestão de trabalho com CSS e nenhum padrão de desenvolvimento. Cada empresa ou desenvolvedor deve procurar a sua própria forma de construir seu código.</p>
<p>Costumo dividir meus arquivos CSS em dois tipos de blocos de <em>tags</em>, identificadores e classes: um <a href="#midia">por mídia</a> e outro por <a href="#tipo-conteudo">tipo de conteúdo</a>.</p>
<h3 id="intro">Uma introdução</h3>
<p>Mas antes mesmo de começar a trabalhar o estilo, que tal um comentário sobre que projeto que estamos trabalhando? É a única chance que um desenvolvedor de interface tem que ter algum controle textual sobre seu trabalho.</p>
<pre>/*
Theme Name: Layout em curvas insanas
Theme URI: http://teste.sydi.net
Description: Desenvolvimento da nova versão do site
Version: 0.9
Author: Simone Villas Boas
Author URI: http://sydi.net/
*/</pre>
<p>É uma idéia descaradamente roubada do <a href="http://wordpress.org">WordPress</a> &#8211; que deve ter sido pega em outro lugar também &#8211; e que adotamos em todos os projetos.</p>
<h3 id="midia">Dividindo por mídia</h3>
<p>Não há novidade alguma aqui:</p>
<pre>
@media screen{
	/* minhas definições para visualização num
		monitor comum de computador ou notebook */
}

@media print{
	/* minhas definições para impressão do arquivo */
}

@media screen,print{
	/* minhas definições para ambos */
}</pre>
<p>Como ando obcecada em diminuir os <em>requests HTTP</em>, não uso o outro método de separar os tipos de mídias em arquivos diferentes. Esta é uma escolha do desenvolvedor de interface!</p>
<pre>
&lt;link rel="stylesheet" type="text/css"
		media="all" href="/css/principal.css" /&gt;

&lt;link rel="stylesheet" type="text/css"
		media="screen" href="/css/monitor.css" /&gt;

&lt;link rel="stylesheet" type="text/css"
		media="print" href="/css/imprimir.css" /&gt;</pre>
<h3 id="tipo-conteudo">Dividindo por tipo de conteúdo</h3>
<p>Esta é uma lista que fui testando e aprimorando nos últimos projetos. Definindo dentro de cada mídia:</p>
<ol>
<li><em><a href="#reset">Reset</a></em>, onde limpo todas as definições de estilo padrão do navegador;</li>
<li><em><a href="#basic">Basic</a></em>, onde estão as definições genéricas de <em>tags</em> e classes;</li>
<li><em><a href="#grid">Grid</a></em>, onde desenvolvo estrutura da página;</li>
<li><em><a href="#format">Format</a></em>, onde configuro cores, fundos, tipologia, por área de layout;</li>
<li><em><a href="#pages">Pages</a></em>, onde estão as definições especiais de cada seção do site;</li>
<li><em><a href="#hacks">Hacks</a></em>, onde junto todos os códigos pré-construídos de CSS como <em>image replacements</em>, <em>clear-fix</em> e outras definições genéricas.</li>
</ol>
<h4>Agora cada item em detalhes e exemplos:</h4>
<p>Preferi manter os títulos em inglês para manter algum distanciamento. No entanto, como todo o resto neste artigo, esta é mais uma convenção.</p>
<ol>
<li id="reset">
<h4><em>Reset</em></h4>
<p>Uso a opção testada pelo <a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">Eric Meyer</a> com algumas pequenas revisões particulares:</p>
<pre>
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0 !important;
	font-weight: normal;
	font-style: normal;
	font-size: 100%;
	font-family: inherit;
	vertical-align: baseline
}
body {
	line-height: 1;
	background: #fff;
	color: #000
}
ol, ul {
	list-style: none
}
blockquote, q {
	quotes: none
}
ins {
	text-decoration: none
}
del {
	text-decoration: line-through
}
table {
	border-collapse: collapse;
	border-spacing: 0
}
address{
	font-style: normal
}</pre>
</li>
<li id="basic">
<h4><em>Basic</em></h4>
<p>Definição dos estilos das <em>tags</em>, que é a parte mais genérica da folha de estilo:</p>
<pre>body {
	background: #DDD;
	font: 62.5% Arial, Helvetica, sans-serif;
	color: #666;
}
h2 {
	font-size: 2.5em;
	font-weight: 400;
	color: #013671;
}
h3 {
	font-size: 1.2em;
	padding: 1.4em 0 0.8em;
}
td {
	background: #FFF;
}</pre>
<p>e de classes que deveria ser também bem genérico e muito focado.</p>
<pre>.alert{
	font-color: #F00;
}
td.even{
	background: #DDD;
}</pre>
</li>
<li id="grid">
<h4><em>Grid</em></h4>
<p>É a estrutura essencial da página. É aqui que grande parte dos CSS Frameworks trabalha quando fornece um layout pré-moldado. Este é um exemplo de tela com conteúdo centralizado como é o caso do tema atual do<em>Pixeladas</em>:</p>
<pre>
body{
	text-align: center
}
#page{
	width: 700px;
	margin: 0 auto;
	text-align: left
}
#header{
	height: 100px
}
#content{
	float: left;
	width: 500px
}
#sidebar{
	float: right;
	width: 200px
}
#footer{
	height: 40px
}</pre>
<p>O segredo aqui é a simplicidade. Mantendo o mínimo de informações sobre a estrutura primordial da tela é mais fácil fazer alterações estruturais que normalmente seriam traumáticas, como mudar a largura da coluna lateral. Se a folha de estilos acabasse aqui, teríamos uma formatação muito básica, quase um protótipo navegável. É por aqui que gosto de começar a montar uma tela.</p>
<p>Obs.: O truque do <code>text-align</code> é para o Internet Explorer 6 e anteriores.</li>
<li id="format">
<h4><em>Format</em></h4>
<p>Aqui sim centralizamos todas as decisões de cores, fundos e tipologia que não são tão genéricas quanto para <em>tags</em> e classes e nem tão específicas que funcionem apenas em uma parte do site. Para começar, vamos definir para as seções do layout que vimos anteriormente em <em>Grid</em>:</p>
<pre>
#page{
	background: #FFF
}
#header{
	background: #333;
	color: #FFF
}
#content{
	color: #333
}
#sidebar{
	font-size: 0.8em;
}
#footer{
	background: #000;
	font-size: 0.8em;
	color: #FFF
}</pre>
<p>E um pouco além:</p>
<pre>
#sidebar li{
	list-style: square
}
#sidebar li li{
	list-style: disc
}</pre>
</li>
<li id="pages">
<h4><em>Pages</em></h4>
<p>Considerando que algumas seções do site precisam de um tratamento especial. Por exemplo, uma imagem conceitual para cada seção do site:</p>
<pre>
#content{
	background: no-repeat right top;
}
#about #content{
	background-image: url(images/bg_about.gif);
}
#products #content{
	background-image: url(images/bg_products.gif);
}
#contact #content{
	background-image: url(images/bg_contact.gif);
}</pre>
</li>
<li id="hacks">
<h4><em>Hacks</em></h4>
<p>Este não é o melhor rótulo para o bloco já que aqui não estão <em>hacks</em> de CSS e sim configurações genéricas que ajudam a construir o layout como <em>image replacement</em> e <em>clear-fix</em>:</p>
<pre>/* img repl */
h1 a, h3.description, #menu a{
	display: block;
	overflow: hidden;
	text-indent: -999px;
}
/* clear-fix */
#main: after{
	content: ".";
	display: block;
	clear: both;
	visibility: hidden;
	/*line-height: 0;*/
	height: 0;
}
#main{
	display: inline-block;
}
html[xmlns] #main{
	display: block;
}
* html #main{
	height: 1%;
}</pre>
<p>Cada um tem sua técnica favorita para o <em>image replacement</em> e outros usam a definição <code>display: table</code> ao invés do <em>clear-fix</em>. Não importa. <em>Isto é apenas um exemplo</em>.</li>
</ol>
<h3>Dividir para conquistar</h3>
<p>Se sentir que o arquivo está grande e de difícil manejo, o desenvolvedor de interfaces pode decidir dividí-lo em várias partes e importá-los em um único CSS:</p>
<pre>@import url("reset.css");
@import url("basic.css");
@import url("grid.css");
@import url("format.css");
@import url("pages.css");
@import url("hacks.css");
...</pre>
<h3>Ah, mas é mais trabalho?</h3>
<p>Estabelecer critérios para organizar o código CSS é mais trabalhoso no início, mas vale a pena durante o projeto e durante a manutenção, principalmente se for um código compartilhado por vários desenvolvedores. E como tudo no desenvolvimento de acordo com os padrões, a prática torna tudo mais rápido e fácil.</p>
<p>Teste seus próprios critérios e <a href="#commentform">compartilhe com a gente</a>!</p>
<h3>E o <a href="http://code.google.com/p/blueprintcss/">Blueprint</a> e genéricos?</h3>
<p>Não, obrigada.</p>
<h4>Referências:</h4>
<ul>
<li><a href="http://www.alistapart.com/articles/frameworksfordesigners">Frameworks for Designers</a>, A List Apart;</li>
<li><a href="http://www.smashingmagazine.com/2007/09/21/css-frameworks-css-reset-design-from-scratch/" rel="bookmark" title="CSS Frameworks + CSS Reset: Design From Scratch">CSS Frameworks + CSS Reset: Design From Scratch</a>, Smashing Magazine.</li>
</ul>
<hr/>
<h3>Artigos relacionados:</h3>
<ul>
<li><a href="http://s1mone.net/blog/2008/05/ordenando-os-seletores-css/" rel="bookmark" title="14/05/2008">Ordenando os seletores CSS</a></li>
<li><a href="http://s1mone.net/blog/2008/01/css-livre-leve-e-solto/" rel="bookmark" title="15/01/2008">CSS livre, leve e solto</a></li>
<li><a href="http://s1mone.net/blog/2007/10/definindo-estrutura-apresentacao-e-comportamento/" rel="bookmark" title="23/10/2007">Definindo estrutura, apresentação e comportamento</a></li>
<li><a href="http://s1mone.net/blog/2005/07/tornando-o-rss-mais-amigavel/" rel="bookmark" title="22/07/2005">Tornando o RSS mais amigável</a></li>
<li><a href="http://s1mone.net/blog/2011/05/o-que-voce-precisa-saber-sobre-html5/" rel="bookmark" title="05/05/2011">O que você precisa saber sobre HTML5</a></li>
</ul>
<p><!-- Similar Posts took 11.992 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://s1mone.net/blog/2008/03/uma-outra-visao-sobre-css-frameworks/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>CSS livre, leve e solto</title>
		<link>http://s1mone.net/blog/2008/01/css-livre-leve-e-solto/</link>
		<comments>http://s1mone.net/blog/2008/01/css-livre-leve-e-solto/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 23:19:38 +0000</pubDate>
		<dc:creator>Simone Villas Boas</dc:creator>
				<category><![CDATA[CSS Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[minificação]]></category>
		<category><![CDATA[otimização]]></category>

		<guid isPermaLink="false">http://s1mone.net/blog/2008/01/css-livre-leve-e-solto/</guid>
		<description><![CDATA[Há várias formas de deixar seu CSS levinho, levinho. Algumas são automáticas, mas as melhores mesmo são aquelas que exigem apenas um pouco de disciplina e atenção na hora de evoluir com o código e a montagem.]]></description>
			<content:encoded><![CDATA[<p>Há várias formas de deixar seu CSS levinho, levinho. Algumas são automáticas, mas as melhores mesmo são aquelas que exigem apenas um pouco de disciplina e atenção na hora de evoluir com o código e a montagem.</p>
<p>Os melhores métodos para diminuir o tamanho dos arquivos passam por configurações no servidor. Compressão GZIP e configuração do &#8220;expires&#8221; estão entre os meus métodos favoritos. Mas nem sempre o desenvolvedor tem permissões para fazer isso ou solicitar. Aqui seguem algumas dicas de fazer otimização no CSS que não precisam de mais ninguém a não ser o próprio desenvolvedor de interfaces.</p>
<h3>Diminuindo o número de <em>requests</em></h3>
<p>Alguns layouts exigem vários pedacinhos de botões, fundos, setas, efeitos. Cada uma das imagens recortada pode ser bem pequena, 1Kb apenas, mas para cada arquivo solicitado para o servidor há outro 1Kb referente à requisição do arquivo. Algumas sugestões para não sofrer na mão dos <em>requests</em> são:</p>
<ul>
<li><img src="http://s88223.gridserver.com/wp-content/uploads/2008/01/icones-1.jpg" alt="Todos os ícones de uma mesma palheta num mesmo arquivo - icon-king.com" />Procurar imagens .gif ou .png que utilizem a mesma palheta de cores e condensá-las num mesmo arquivo. Se for usar como fundo, use posicionamento da imagem e um crop. Ninguém vai notar.</li>
<li><img src="http://s88223.gridserver.com/wp-content/uploads/2008/01/hover-1.jpg" alt="Imagem de referência para efeito de item no estado normal e ativo - everaldo.com" />Se houver menus com estado de inativo, ativo e <em>hover</em>, coloque todos os estados em um mesmo arquivo, posicionando um estado sobre o outro. Altere o posicionamento do fundo para cada estado.</li>
<li>Cada arquivo CSS é um request diferente, não importando se ele está sendo chamado no HTML ou importado dentro do CSS (<code>@import</code>). Economize arquivos! Use novos arquivos CSS apenas se absolutamente necessário. Para melhorar a organização, faça blocos de definições divididos por mídia (<code>@media</code>) e por tipo (<em>tags</em>, classes, IDs). É como usar o conceito de <a href="http://www.alistapart.com/articles/frameworksfordesigners">CSS frameworks</a>, mas com menos arquivos.</li>
</ul>
<h3>Usando atalhos</h3>
<h4>Para cores:</h4>
<p>Antes:</p>
<pre>border-color: #FF0099;</pre>
<p>Depois:</p>
<pre>border-color: #F09;</pre>
<h4>Para espessuras:</h4>
<p>Antes:</p>
<pre>border-width: 1px 1px 1px 1px;
margin: 10px 0px 10px 0px;</pre>
<p>Depois:</p>
<pre>border-width: 1px;
margin: 10px 0;</pre>
<h4>Para fundos, fontes e listas:</h4>
<p>Antes:</p>
<pre>font-weight: bold;
font-style: italic;
font-variant:small-caps;
font-size: 1em;
line-height: 1.4em;
font-family: Verdana, Arial, Helvetica,sans-serif;</pre>
<p>Depois:</p>
<pre>font: bold italic small-caps 1em/1em verdana, sans-serif;</pre>
<h3>Usando alternativas</h3>
<p>Algumas propriedades possuem alternativas. Escolha sempre a com menos caracteres. Por exemplo, troque <code>font-weight:bold</code> por <code>font-weight:800</code>, <code>background-position:left top</code> por <code>background-position:0 0</code> e assim por diante.</p>
<h3>Pontuando corretamente</h3>
<p>Não é necessário encerrar cada bloco de seletores com ponto-e-vírgula:</p>
<pre>a{
    color:#F09;
    text-decoration:underline
}</pre>
<h3></h3>
<h3>Vamos começar tudo de novo&#8230;</h3>
<p>Mesmo que você não seja fã de <em>CSS frameworks</em>, use pelo menos um conjunto de parâmetros CSS para limpar todos as definições de estilo nativas do navegador. Causa um estranhamento no início, mas é bem mais rápido de implementar. Além disso, evita várias definições para limpar estilos espalhados pelo site e hacks para tentar igualar as definições de um browser para outro. <a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">Veja sobre reset.css mais no site do Eric Meyer</a>.</p>
<h3>Robôs para seu prazer</h3>
<p>Para a publicação de uma inteface, é interessante usar alguma ferramenta de otimização como o <a href="http://iceyboard.no-ip.org/projects/css_compressor">Icey &#8211; CSS Compressor</a>, <a href="http://www.cleancss.com/">Clean CSS</a> e o <a href="http://www.cssdev.com/csstweak/">CSS Tweak</a>. Teste o site nestes e em outras ferramentas pois os resultados variam de projeto para projeto.</p>
<p>Lembre-se sempre de fazer um <em>back-up</em> dos seus arquivos antes de utilizar uma destas ferramentas. E teste, teste tudo novamente depois de passar os arquivos .css por estes filtros.</p>
<p>Há ferramentas para condensar arquivos de CSS e de JavaScript.</p>
<h4>Referências:</h4>
<ul>
<li><a href="http://www.bloggingpro.com/archives/2006/08/17/css-optimization/">CSS Optimization: Make Your Sites Load Faster for Free</a>, no Blogging Pro;</li>
<li>O artigo <a href="http://developer.yahoo.com/performance/rules.html">Best Practices for Speeding Up Your Web Site</a> traz os parâmetros do YSlow para sites de grande porte;</li>
<li><a href="http://www.456bereastreet.com/archive/200502/efficient_css_with_shorthand_properties/">Efficient CSS with shorthand properties</a>, no 456 Berea Street</li>
</ul>
<hr/>
<h3>Artigos relacionados:</h3>
<ul>
<li><a href="http://s1mone.net/blog/2008/05/ordenando-os-seletores-css/" rel="bookmark" title="14/05/2008">Ordenando os seletores CSS</a></li>
<li><a href="http://s1mone.net/blog/2008/06/maturando-o-html/" rel="bookmark" title="25/06/2008">Maturando o HTML</a></li>
<li><a href="http://s1mone.net/blog/2005/07/tornando-o-rss-mais-amigavel/" rel="bookmark" title="22/07/2005">Tornando o RSS mais amigável</a></li>
<li><a href="http://s1mone.net/blog/2007/06/hospedagem-no-brasil-esta-longe-de-ser-confiavel/" rel="bookmark" title="12/06/2007">Hospedagem no Brasil está longe de ser confiável</a></li>
<li><a href="http://s1mone.net/blog/2007/10/definindo-estrutura-apresentacao-e-comportamento/" rel="bookmark" title="23/10/2007">Definindo estrutura, apresentação e comportamento</a></li>
</ul>
<p><!-- Similar Posts took 11.477 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://s1mone.net/blog/2008/01/css-livre-leve-e-solto/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

