Existe uma lista de condicionais do navegador para uso, incluindo folhas de estilo?
-
09-06-2019 - |
Pergunta
Já vi pessoas fazendo coisas assim em seu HTML:
<!--[if IE]>
<link rel="stylesheet" href="ie.css" type="text/css" />
<![endif]-->
Isso funciona em todos os navegadores modernos e existe uma lista de tipos de navegadores que funcionarão com esse tipo de instrução if?
Editar
Obrigado Ross.Interessante saber sobre gt, lt, gte e lte.
Solução
Isso funciona em todos os navegadores porque qualquer coisa, exceto o IE, vê <!--IGNORED COMMENT-->
.Somente o IE lê o comentário se ele contiver uma cláusula condicional.Dê uma olhada em Este artigo
Você também pode especificar qual versão do IE.Por exemplo:
<!--[if IE 8]>
<link rel="stylesheet type="text/css" href="ie8.css" />
<![endif]-->
Outras dicas
Se você puder usar Javascript, existem várias opções:
navigator.appName
navigator.appVersion
Ou algo mais robusto usando uma biblioteca como jQuery.
Finalmente, você poderia usar o Detecção de navegador objeto do QuirksMode.
Assim que tiver o nome e a versão do navegador, você poderá inserir HTML para vincular a uma folha de estilo ou incluir outras tags.
Além da resposta de Ross, você só pode direcionar o mecanismo de renderização do Internet Explorer com comentários condicionais;não existe uma construção semelhante para outros navegadores.Por exemplo, você não pode escrever comentários condicionais direcionados ao Firefox, mas que são ignorados pelo Internet Explorer.
A maneira como obtenho o mesmo efeito do exemplo acima é farejar a string do agente do usuário.Em seguida, entrego um arquivo CSS adequado para esse navegador.Isso não é perfeito porque às vezes as pessoas alteram a string do agente do usuário para compatibilidade.
A outra maneira de atingir navegadores diferentes é utilizar hacks específicos do navegador.Eles são particularmente desagradáveis porque geralmente dependem de bugs no navegador e os bugs podem ser corrigidos!
A detecção de agente de usuário é a melhor solução completa, na minha opinião.
Os comentários condicionais são exclusivamente para o IE (versão 5 e posterior).A documentação oficial da Microsoft é aqui.Se você for usá-los, a melhor estratégia é incluir condicionalmente folhas de estilo externas ou arquivos javascript após as inclusões normais.Isso significa que no IE seu código específico do IE substituirá todo o resto.Em qualquer outro navegador o código será tratado como comentários e ignorado pelo analisador.