Eu tenho um projeto herdado e há lugares onde é uma bagunça total. Este é um deles. Eu preciso segmentar apenas o IE (qualquer versão).
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
Para ficar claro: dentro da folha de estilo incorporada e sem adicionar IDs ou classes às tags no html, preciso aplicar o estilo de borda somente se o usuário estiver usando o IE. Como posso fazer isso?
Edit: encontrou uma solução para o Firefox, editando a pergunta para refletir isso.
Respostas:
Internet Explorer 9 e inferior: você pode usar comentários condicionais para carregar uma folha de estilo específica do IE para qualquer versão (ou combinação de versões) que você deseje segmentar especificamente. Como abaixo, usando a folha de estilo externa.
No entanto, a partir da versão 10, comentários condicionais não são mais suportados no IE.
Internet Explorer 10 e 11: crie uma consulta de mídia usando -ms-high-contrast, na qual você coloca seus estilos CSS específicos do IE 10 e 11. Como -ms-high-contrast é específico da Microsoft (e disponível apenas no IE 10+), ele será analisado apenas no Internet Explorer 10 e superior.
Microsoft Edge 12: pode usar a regra @supports Aqui está um link com todas as informações sobre esta regra
Detecção de regra inline IE8
Eu tenho mais 1 opção, mas é apenas detectar o IE8 e a versão abaixo.
Como você especificou para a folha de estilo incorporada. Eu acho que você precisa usar a consulta de mídia e o comentário da condição para a versão abaixo.
fonte
-ms-high-contrast:active
afeta o Edge se o sistema estiver usando o modo de alto contraste.@supports
solução é realmente ótima: a detecção de recursos é o caminho a percorrer. Eu estava disposto a segmentar o Edge devido à sua falta de suportewidth: max-content
:@supports not (width: max-content)
funciona perfeitamente e será bem ignorado quando o Edge acabar suportando. (Deve acontecer em 2019 Fall, uma vez que deve, em seguida, mudar para o Chromium para renderização.)Aqui está uma coleção de consultas de mídia que permitirão que você faça isso para qualquer versão do Internet Explorer (do IE6 ao IE11 +), Firefox, Chrome e Safari (EDIT: também adicionou o Opera).
IE 6
ou
IE 7
ou
IE 6 e 7
ou
ou
IE 6, 7 e 8
IE 8
ou
IE 8 Standards Mode
IE 8,9 e 10
Apenas IE 9
IE 9 e acima
IE 9 e 10
Apenas IE 10
IE 10 e acima
ou
IE 11 (e acima ..)
Firefox (qualquer versão)
Firefox (Quantum Only / Stylo)
Firefox Legacy (pré-Stylo)
Webkit (Chrome e Safari, qualquer versão)
Google Chrome (mais de 29)
Safari (7.1+)
Safari (de 6.1 a 10.0)
Safari (10.1 ou superior)
Ópera (12+)
Opera (11 e inferior)
Para mais informações ou consultas adicionais à mídia, visite o site browserhacks.com e / ou confira esta postagem do blog que escrevi sobre este tópico.
fonte
Ao usar
SASS
, use os 2 a seguir@media queries
para segmentar o IE 6-10 e EDGE.http://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
Editar
Também segmento versões posteriores do EDGE usando
@support queries
(adicione quantas você precisar)https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
fonte
Para segmentar o IE apenas em minhas folhas de estilo, uso este Sass Mixin:
fonte
Outra solução de trabalho para o estilo específico do IE é
E então seu seletor
fonte
Depois de ter problemas com sites que quebram no Edge ao usar o Modo de alto contraste, deparei-me com o seguinte trabalho de Jeff Clayton:
https://browserstrangeness.github.io/css_hacks.html
É uma consulta de mídia louca e estranha, mas essas são mais fáceis de usar no Sass:
Isso tem como alvo as versões do IE esperadas para o IE8.
Ou você pode usar:
Que tem como alvo o IE8-11, mas também aciona o FireFox 1.x (que, para o meu caso de uso, não importa).
No momento, estou testando com suporte de impressão, e isso parece estar funcionando bem:
fonte