Exibir um estilo css se IE e outro se ff ou chrome em .css usando o PHP

Eu tenho algum estilo CSS que não funciona no IE e que funciona no ff e no chrome. Eu quero poder usar se outro. Mas o PHP pode ser incluído no arquivo .css para que eu possa alcançar?

[editar]

Eu não quero dois arquivos .css para o propósito

Obrigado Jean

Você pode usar comentários condicionais para ocultar um arquivo CSS de outros navegadores.

Se você realmente quiser decidir qual o CSS para servir, lado do servidor, então você poderia analisar a seqüência do agente do usuário para determinar qual navegador está sendo usado; mas cuidado, isso pode ser facilmente falso – alguns navegadores até permitem que você escolha o que eles vão identificar como fora da checkbox, então você pode acabar com falsos positivos.

Você pode interpretar arquivos CSS com PHP (se você não está muito preocupado com a carga do servidor), se você colocar essa linha na configuração do Apache:

addhandler application/x-httpd-php .css 

Então, você pode tentar confiar em $_SERVER['HTTP_USER_AGENT'] , mas tenha cuidado com o fato de que não é garantido ser confiável.

No entanto, existem (IMO) melhores maneiras de conseguir isso, que incluem o uso de comentários condicionais do IE:

  

Claro que a maneira mais preferível seria rewrite seus estilos para evitar diferenças de implementação do navegador, o que geralmente é possível, mas requer algum nível de guru-ness CSS se você for forçado a suportar um navegador antigo como o IE 6.

De um modo geral, você não deseja personalizar seu site para diferentes navegadores. Você quer fazer tudo o mais uniforme possível. Claro, existem casos em que você tem que fazer as coisas de uma maneira específica do navegador, mas na minha experiência, com técnicas apropriadas, essas situações são incomuns.

Algumas regras gerais:

  1. Sempre declare um DOCTYPE em todas as suas páginas HTML. Isso força os navegadores (especialmente o IE) para o chamado padrão compatível em vez do modo peculiar. O modo Quirks faz coisas no IE como um modelo de checkbox incorreto. Por esta razão, eu suspeito que você está fazendo as coisas de maneira errada (peculiar) e o FF / Chrome está realmente interpretando corretamente. Este é, para mim, o cenário mais provável; e

  2. Use um reset CSS. Navegadores diferentes (e versões diferentes do mesmo navegador) têm padrões diferentes para preenchimento, margens, bordas, etc. É melhor restaurar tudo para o mesmo ponto de partida e ir de lá.

Além disso, você pode usar os comentários condicionais .

O Css não suporta controle de stream condicional. Você deve resolver sobre diferentes técnicas:

  • Peça ao PHP para imprimir as regras CSS com base em algum cheiro de navegador. Eu não recomendo isso
  • include css diferente com a tag de link na seção de header usando comentários condicionais (veja http://www.quirksmode.org/css/condcom.html )