Post Pic

Classes condicionais – Seu layout perfeito em todos os browsers com apenas um CSS e sem hacks

Existem várias maneiras de se lidar com as diferenças entre browsers quando se trata de CSS. Eu mesmo já falei sobre CSS hacks, comentários condicionais e até uma biblioteca JS que corrige os problemas do IE tornando-o standards compliant. Cada uma delas tem suas vantagens e desvantagens, e ainda vou escrever um post sobre isso, prometo.

Os comentários condicionais costumam ser uma das maneiras mais aceitas e bem vistas de se encarar o problema. Com eles é possível entregar o layout perfeito, sem erros, mantendo o CSS limpo, sem hacks e válido à um custo razoável: o uso um arquivo CSS adicional para o Internet Explorer. Pra quem ainda não conhece, funciona assim:


 <html>
<head>
<link rel="stylesheet" type="text/css" href="estilos.css" />
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="estilos-para-ie6.css" />
<![endif]-->
</head>
<body>
<div id="menu">conteúdo do site....</div>
</body>
</html>

Tudo o que estiver dentro das tags <!–[if IE 6]> e <![endif]–> será interpretado apenas pelo Internet Explorer 6. Dessa forma você pode escrever o seu CSS sem nenhum hack, com código 100% válido, e colocar todas as correções em um outro arquivo específico para o IE. A desvantagem é ter 2 arquivos CSS ao invés de um, o que pode ser prejudicial em termos de atualização e manutenção.

Ok, nenhuma grande novidade até aqui.

Mas e se, ao invés de usar os comentários condicionais para linkar um novo CSS, os usássemos para fazer o seguinte:

 <html>
<head>
<link rel="stylesheet" type="text/css" href="estilos.css" />
</head>
<!--[if IE 6 ]>
<body class="ie">
<![endif]-->
<!--[if !IE 6]>-->
<body>
<!--<![endif]-->
<div id="menu">conteúdo do site....</div>
</body>
</html> 

Entendeu? Isso faz com que a classe “ie” [class="ie"] seja aplicada apenas quando o browser utilizado é o Internet Explorer 6 [if IE 6]. Caso contrário o <body> fica sem nenhuma classe [o sinal "!" significa "não igual"]. Assim, podemos escrever nosso CSS da seguinte maneira:

div#menu { color: inherit; } /* linha interpretada por todos os browsers */
.ie div#menu { color: #ff8000; } /* linha interpretada apenas pelo IE 6 */

Ou seja, podemos colocar todas as correções precedidas pelo seletor de classe “.ie”, dessa forma apenas o IE 6 irá interpretá-las. Eliminamos assim a necessidade de um segundo arquivo e ficamos livres também dos hacks, podendo então escrever CSS 100% válido.

Veja o exemplo

3 Comentários

10.20.08

Legal demais, Valew cara to sempre aprendendo ai com vc!

10.20.08

Cara muito,muito,muito,muito,muito bom o seu trabalho…vc está de parabéns até me motivou a entrar na área de web, li também sobre os 47 mandamentos e achei muito bom, poder se espelhar em bons profissionais, e este site é isso qualidade,foco e principalmente humildade.

Parabéns por este maravilhoso trabalho !!!!!!!!

abraços

Att..

Anderlinux

10.20.08

essa onda agora de navegadores tem deixado nos programadores loucos.. nossa é tao complicado isso.. cada navegador interpreta o site de uma forma.. ate quando isso minha gente.. grande abraço a todos..

Deixe seu comentário

* Nome, Email e Comentário são obrigatórios

Categorias