﻿<?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>TidBits&#187; Hack</title>
	<atom:link href="http://www.tidbits.com.br/tag/hack/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tidbits.com.br</link>
	<description>Desenvolvimento de Front End</description>
	<lastBuildDate>Wed, 18 Jan 2012 00:41:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Você não precisa de uma coleção de css hacks pra todos os browsers</title>
		<link>http://www.tidbits.com.br/voce-nao-precisa-de-uma-colecao-de-css-hacks-pra-todos-os-browsers</link>
		<comments>http://www.tidbits.com.br/voce-nao-precisa-de-uma-colecao-de-css-hacks-pra-todos-os-browsers#comments</comments>
		<pubDate>Wed, 12 Nov 2008 00:46:09 +0000</pubDate>
		<dc:creator>Danilo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Webstandards]]></category>

		<guid isPermaLink="false">http://www.tidbits.com.br/?p=595</guid>
		<description><![CDATA[Em quase todo blog tem uma coleção de hacks css, para todos as versões de todos os navegadores, opera, safari, ie6, ie7, firefox 2, firefox 3 etc etc&#8230; mas aqui você não vai encontrar, porque? Porquê você não precisa de hacks pra fazer um layout! O jeito correto de escrever css é encontrar uma estrutura [...]]]></description>
			<content:encoded><![CDATA[<p>Em quase todo blog tem uma coleção de hacks css, para todos as versões de todos os navegadores, opera, safari, ie6, ie7, firefox 2, firefox 3 etc etc&#8230; mas aqui você não vai encontrar, porque? Porquê você não precisa de hacks pra fazer um layout!</p>
<p>O jeito correto de escrever css é encontrar uma estrutura que funcione em todos os navegadores. Não faça o site pensando apenas no seu navegador favorito para depois encher de hacks para os demais e meter a culpa neles.</p>
<p><img src="http://www.tidbits.com.br/download/_images/copy.gif" alt="copy"/>Navegadores são atualizados sempre, isso quando não surgem novos. A 6 meses atrás não existia o Google Chrome, Firefox 3 e pouco era utilizado internet em celulares no Brasil. Se o layout de um site foi construído errado e &#8220;consertado&#8221; com hacks, provavelmente o mesmo site está quebrando o layout nesses novos navegadores, por isso não vale a pena. Antes de criar uma hack, pense 10 minutos a mais resolver seu problema de outra forma. Tudo bem, tem hacks que realmente precisamos colocar por falta de suporte do ie6. <a href="http://www.tidbits.com.br/min-height-e-max-height-para-ie-usando-css-condicional" target="_blank">min-height e max-height</a>, o suporte a imagens alpha ( pgn24 ) tão usado pelos designers hoje em dia e os pseudo seletores <a href="http://www.tidbits.com.br/first-child-e-last-child-cross-browser-usando-css-condicional" target="_blank">:first-child e :last-child</a>. Essas 3 opções, somente essas 3 não tem jeito mesmo, é colocar expression no seu css e filter pro png, mas de resto, nenhuma hack é necessária.</p>
<p>Outras técnicas que não recomendo são: display table, uso excessivo de float, margin com valores negativos, tudo isso não passa de gambearra para fazer o layout ficar no lugar onde está dando erro. </p>
<p>Dicas para ter menos problemas ao construir um css :</p>
<p>Utilize o <a href="http://www.tidbits.com.br/css-global-reset-elimine-as-diferencas-entre-browsers" target="_blank">CSS Global Reset</a> para diminuir as diferenças entre os browsers. Cada browser, coloca por sua conta, qual vai ser o tamanho dos títulos, dos paragráfos, a margin entre elementos, a fonte padrão, o padding da página, etc&#8230; Com esse código, essas diferenças caem quase que por completo.</p>
<p>Para elementos fixos (que não tem variedade de tamanho) dentro de um container, tipo botões ou input / label de formulário, pense em utilizar position absolute, é uma técnica muito simples de se trabalhar quando se tem um xhtml válido, pois  todos os navegadores interpretam da mesma forma a posição do elemento, ao contrário de float e margin que dão muitos problemas. O site americano <a href="http://www.positioniseverything.net/"> Position Is Everything </a> recomenda a técnica e explica melhor como utilizar.</p>
<p>Aqui no TidBits também nós disponibilizamos uma <a href="http://www.tidbits.com.br/apostila-e-material-de-estudo-sobre-padroes-web-em-portugues">apostila e material de estudo sobre padrões web em português</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tidbits.com.br/voce-nao-precisa-de-uma-colecao-de-css-hacks-pra-todos-os-browsers/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Min-Height e Max-Height para IE usando css condicional</title>
		<link>http://www.tidbits.com.br/min-height-e-max-height-para-ie-usando-css-condicional</link>
		<comments>http://www.tidbits.com.br/min-height-e-max-height-para-ie-usando-css-condicional#comments</comments>
		<pubDate>Wed, 15 Oct 2008 21:11:00 +0000</pubDate>
		<dc:creator>Danilo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.tidbits.com.br/?p=651</guid>
		<description><![CDATA[Assim com o exemplo de :first-child e :last-child, para usar min-height e max-height é necessário css condicional. Na verdade é bem simples, vamos supor que temos uma div que tem que ter uma altura mínima pra não &#8220;quebrar o layout&#8221; E agora o CSS para ficar no mínimo com 200px por exemplo: E se fosse [...]]]></description>
			<content:encoded><![CDATA[<p>Assim com o exemplo de <a href="http://www.tidbits.com.br/first-child-e-last-child-cross-browser-usando-css-condicional" target="_blank">:first-child e :last-child</a>, para usar min-height e max-height é necessário css condicional.</p>
<p>Na verdade é bem simples, vamos supor que temos uma div que tem que ter uma altura mínima pra não &#8220;quebrar o layout&#8221;</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;post&quot;&gt;
	Lorem Ipsum Fusce rutrum nibh.
&lt;/div&gt;
</pre>
<p>E agora o CSS para ficar no mínimo com 200px por exemplo:</p>
<pre class="brush: css; title: ; notranslate">
div.post {
    height: expression(this.scrollHeight &lt;= &quot;200&quot; ? &quot;200&quot; : &quot;auto&quot;);
    min-height: 200px; /* para ff, safari, chrome, etc */
}
</pre>
<p>E se fosse max-height seria assim : </p>
<pre class="brush: css; title: ; notranslate">
div.post {
    height: expression(this.scrollHeight &gt;= &quot;200&quot; ? &quot;200&quot; : &quot;auto&quot;);
    max-height: 200px; /* para ff, safari, chrome, etc */
}
</pre>
<p>Isso resolve também alguns problemas com float e position absolute onde a div não calcula automaticamente a altura do elemento com float dentro da div.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tidbits.com.br/min-height-e-max-height-para-ie-usando-css-condicional/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Como eliminar as diferenças de CSS do IE6 e iE5.x com o ie7.js</title>
		<link>http://www.tidbits.com.br/como-eliminar-as-diferencas-de-css-do-ie6-e-ie5x-com-o-ie7js</link>
		<comments>http://www.tidbits.com.br/como-eliminar-as-diferencas-de-css-do-ie6-e-ie5x-com-o-ie7js#comments</comments>
		<pubDate>Wed, 17 Sep 2008 12:43:59 +0000</pubDate>
		<dc:creator>Danilo</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.tidbits.com.br/?p=290</guid>
		<description><![CDATA[O ie7.js é um script muito útil e muito bom, desenvolvido nos últimos 4 anos por Dean Edwards, tem 31 kb e o grande desafio de consertar os bugs de renderização de html e css do ie 5.x e 6. E o que ele faz realmente? Adiciona novos seletores : :hover :first-child :last-child [attr] [attr="value"] [...]]]></description>
			<content:encoded><![CDATA[<p>O ie7.js é um script muito útil e muito bom, desenvolvido nos últimos 4 anos por <a href="http://dean.edwards.name/weblog/" target="_blank" >Dean Edwards</a>, tem 31 kb e o grande desafio de consertar os bugs de renderização de html e css do ie 5.x e 6.</p>
<p><strong>E o que ele faz realmente?</strong></p>
<p><strong>Adiciona novos seletores :</strong><br />
:hover<br />
:first-child<br />
:last-child<br />
[attr]<br />
[attr="value"]<br />
[attr~="value"]<br />
[attr|="value"]<br />
[attr^="value"]<br />
[attr$="value"]<br />
[attr*="value"]</p>
<p><strong>Altera as propriedades de CSS</strong><br />
background-attachment &#8211; &gt; aceitando posicionamento fixo<br />
background-image -&gt; passando a aceitar png alpha<br />
cursor	-&gt; ie IE5.x passa a suportar pointer<br />
display	-&gt; converte list-item para block no IE5.x<br />
margin	-&gt; suporta auto no ie 5.x<br />
adiciona as propriedades max-height, max-width, min-height e min-width</p>
<p><strong>Arruma até o HTML e corrige bugs</strong> como o famoso &#8220;Doubled Margin&#8221; (float: left; margin-left: 10px;)</p>
<p>A descrição completa do que o script faz, com exemplos, está <a href="http://ie7-js.googlecode.com/svn/test/index.html" target="_blank" rel="nofollow">aqui</a>.</p>
<p><strong>Como eu coloco isso no meu site?</strong></p>
<p><a href="http://www.daniloaugusto.com.br/desenvolvimento/tidbits/download/_scripts/ie7.js">Faça download do script clicando aqui.</a><br />
Insira o seguinte código dentro da tag head:</p>
<pre>&lt;!--[if lt IE 7]&gt;
    &lt;script src="js/ie7.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;![endif]--&gt;</pre>
<p><strong>Recomendo o uso desse script para backends, administrativos</strong>, pois normalmente para corrigir um bug, o script renderiza a página do jeito comum e só depois aplica o script e isso, nuUm site grande, pode ficar com o conteúdo &#8220;dançando&#8221; antes de ser completamente carregado.</p>
<p>Já tem uma versão para corrigir os bugs do ie7 também (ie8.js) e pode ser baixada no <a href="http://dean.edwards.name/weblog/2008/01/ie7-2/" target="_blank" >site do desenvolvedor</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tidbits.com.br/como-eliminar-as-diferencas-de-css-do-ie6-e-ie5x-com-o-ie7js/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pseudo classes first-child e last-child cross browser usando css condicional</title>
		<link>http://www.tidbits.com.br/first-child-e-last-child-cross-browser-usando-css-condicional</link>
		<comments>http://www.tidbits.com.br/first-child-e-last-child-cross-browser-usando-css-condicional#comments</comments>
		<pubDate>Fri, 05 Sep 2008 16:36:14 +0000</pubDate>
		<dc:creator>Danilo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Tableless]]></category>
		<category><![CDATA[Webstandards]]></category>

		<guid isPermaLink="false">http://www.tidbits.com.br/?p=69</guid>
		<description><![CDATA[Pseudo classes first-child e last-child servem para aplicar css no primeiro ou último ítem de uma seletor CSS. É muito bom usar pra colocar cantos arredondados. Normalmente as pessoas colocam : &#60;ul&#62; &#60;li class="primeiro"&#62;&#60;/li&#62; &#60;li&#62;&#60;/li&#62; &#60;li&#62;&#60;/li&#62; &#60;li&#62;&#60;/li&#62; &#60;li&#62;&#60;/li&#62; &#60;li class="ultimo"&#62;&#60;/li&#62; &#60;/ul&#62; E depois aplicam css no li.primeiro e no li.ultimo, e quem tem que programar [...]]]></description>
			<content:encoded><![CDATA[<p>Pseudo classes first-child e last-child servem para aplicar css no primeiro ou último ítem de uma seletor CSS.<br />
É muito bom usar pra colocar cantos arredondados.</p>
<p>Normalmente as pessoas colocam :</p>
<pre>&lt;ul&gt;
	&lt;li class="primeiro"&gt;&lt;/li&gt;
	&lt;li&gt;&lt;/li&gt;
	&lt;li&gt;&lt;/li&gt;
	&lt;li&gt;&lt;/li&gt;
	&lt;li&gt;&lt;/li&gt;
	&lt;li class="ultimo"&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>E depois aplicam css no li.primeiro e no li.ultimo, e quem tem que programar depois server side no server que se vire fazendo ifs.</p>
<p><strong>Isso não é necessário!</strong></p>
<p>Veja no exemplo de First Child, como colocar uma cor diferente no primeiro ítem do menu.</p>
<p><img title="first-child e last-child cross browser usando css condificional" src="http://www.tidbits.com.br/wp-content/uploads/2008/09/first_child.gif" alt="first-child e last-child cross browser usando css condificional" /></p>
<p>HTML :</p>
<pre>&lt;ul&gt;
	&lt;li&gt;Programas Relacionados&lt;/li&gt;
	&lt;li&gt;Comentários (4)&lt;/li&gt;
	&lt;li&gt;Espalhe este Post&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>CSS :</p>
<pre>#tabs ul li{ 

	/* font padrão - preto */
	font-color: #000;

	/* IE - CSS Condicional */
	font-color: expression(this.previousSibling == null ? '#F00' : '#000');

}

/*
	Pra todos os outros browsers é mais simples,
	é só usar o pseudo-classe :first-child
*/
#tabs ul li:first-child{ font-color: #f00; }</pre>
<p>Funciona como um operador ternário normal :<br />
Propriedade css : expression(condição ? valor verdadeiro : valor falso )</p>
<p>E se tivesse que escolher o último ítem?<br />
Veja no exemplo, como colocar uma borda somente no último ítem:</p>
<pre>#tabs ul li{
	border: 0;
	border: expression(this.nextSibling == null ? '1px solid #000' : '0');
}
#tabs ul li:last-child{ border: 0; }</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tidbits.com.br/first-child-e-last-child-cross-browser-usando-css-condicional/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

