Usando um estilo diferente CSS para navegadores específicos
-
07-07-2019 - |
Pergunta
Qual é a melhor maneira de ter CSS separado para IE e outros navegadores? Estou pensando em apenas direcionada aos usuários de IE, Firefox e Safari. Especialmente agora com suporte CSS3 na maioria dos navegadores mas IE.
As várias maneiras de fazer isso que eu me deparei são
- carregamento de folhas de estilo separadas
condicionalmente usando
<!--[if IE]
> - sublinhado corte e vários outros embutidos IE hacks
Eu prefiro (2) como (1) é um trabalho extra, especialmente quando em desenvolvimento. Mas (2) não parece trabalhar o tempo todo. Qual é a maneira mais eficiente?
Solução
Eu tenho uma folha de estilo que tudo pega na parte superior do documento.
debaixo deste fazer a sua [! - [if IE]] folha de estilo condicional.
Em aqui apenas substituir os estilos que estão causando problemas no IE. -. O último estilo para uma classe particular que é captado é o que será seguido
Outras dicas
Nossa equipe alças CSS três seguintes regras:
- Certifique-se de arquivos gerais / common CSS funcionam como deveriam com todos os navegadores tão perto quanto possível.
- Lidar com todos os "bugs" ou seja, em arquivos separados, o carregamento de controle as folhas de estilo com condições IE.
- Não hacks permitido a menos que não é possível fazê-lo funcionar seguinte primeiras duas regras.
Eu concordo com a manutenção de todas as CSS seu núcleo em um único arquivo. Se você estiver usando ASP.NET, em seguida, você pode usar um WebHandler gerenciar quais CSS realmente é enviado. Eu tenho certeza que outras línguas têm soluções semelhantes. Isso permite que você envie apenas o que você precisa e permitir que ele seja armazenado em cache. O outro benefício é que você pode combinar vários arquivos CSS (se isso é como fazê-lo) e presente apenas um. Esta é uma boa prática, como você reduzir o número de pedidos para o servidor web.
Você pode então escrever coisas como [if lt IE 8] margin: 0px; e não seria enviado para o IE8 ou FF etc.
Se você estiver usando apenas HTML então você tem que ir com o [! - [if IE]]. Condições estilo mencionado acima
Nós usamos um WebHandler no nosso projeto muito grande e eu não iria nunca fazê-lo de outra maneira.
Consulte http://www.conditional-css.com/download . Ele está disponível para PHP, C # e C
Boa sorte.
<!--[if !IE]><!--><link rel="stylesheet" href="non-ie.css"><!--<![endif]-->
<!--[if IE]><link rel="stylesheet" href="ie.css"><![endif]-->
Este truque amplamente usando Yandex (aka "google russa") para reduzir solicitações HTTP. market.yandex.ru usando este, por exemplo.
Você pode usar desta forma também;. Algumas vezes as condições não podem trabalhar onde precisamos escrever os estilos no meio do código
<?php $browser = $_SERVER['HTTP_USER_AGENT']; ?>
<?php if (strstr($browser, "MSIE 6.0")) { ?>
<link rel="stylesheet" href="ie6style.css" type="text/css" media="screen" />
<?php }else{ ?>
<link rel="stylesheet" href="default.css" type="text/css" media="screen" />
<?php } ?>
Verifique a $browser
com:
IE - “MSIE”
Firefox - “Firefox”
Safari - “Safari”
Opera - “Opera”
Chrome - “Chrome”