Como o IE7 e o IE8 não suportam a notação de dois pontos duplos para pseudo-elementos (por exemplo, ::after
ou ::first-letter
), e como os navegadores modernos suportam a notação de dois pontos (por exemplo :after
) para compatibilidade com versões anteriores, devo usar apenas a notação de dois pontos simples e quando A participação de mercado do IE8 cai para um nível insignificante. Voltar e localizar / substituir em minha base de código? Ou devo incluir ambos:
.foo:after,
.foo::after { /*styles*/ }
Usar o dobro sozinho parece bobo se eu me preocupo com os usuários do IE8 (os pobres queridos).
Dos seletores CSS3 REC :
Parece que você está seguro usando (apenas) a notação de um dois-pontos para pseudo-elementos que já existiam no CSS2.1, pois os UAs devem ser compatíveis com versões anteriores.
fonte
Eu discordo totalmente de @mddw e @FelipeAls, no que diz respeito a considerar o uso de dois pontos como "seguro".
Essa mentalidade de "vou usá-lo mesmo que esteja obsoleto" é exatamente o motivo pelo qual as tecnologias baseadas em navegador são tão lentas em avançar e progredir.
SIM, queremos manter a compatibilidade com os padrões antigos. Vamos enfrentá-lo, é a mão que recebemos. MAS, isso não significa que você tenha uma desculpa para ser preguiçoso em seu desenvolvimento, ignorando os padrões atuais em favor dos obsoletos.
Nosso objetivo deve ser manter a conformidade com os padrões atuais, ao mesmo tempo que dá suporte ao máximo possível do padrão legado.
Se pseudo-elementos forem usados
:
em CSS2 e::
em CSS3, não devemos usar um ou outro; devemos usar os dois .Para responder totalmente à pergunta original feita, o seguinte é o método mais apropriado de suporte à implementação mais atual de CSS (versão 3), enquanto mantém o suporte legado para a versão 2.
fonte
::
. De acordo com sua abordagem, os indivíduos começarão a misturar e combinar o uso de:
e::
para pseudo-elementos. Aderir explicitamente ao antigo padrão (que por enquanto pode ser suportado) é uma prática inerentemente ruim e deve ser evitada sempre que possível. Se você discordar dessa afirmação, simplesmente temos pontos de vista diferentes.No entanto, está se tornando cada vez mais popular usar polyfills para novos javascript e CSS, então você pode querer apenas usar a
::
sintaxe de dois-pontos dupla ( ) mais recente e manter um polyfill para navegadores mais antigos, desde que seja necessário.fonte
De acordo com as Estatísticas do navegador, o IE 8.0 caiu para menos de 1% nos EUA no ano passado.
http://gs.statcounter.com/browser-version-partially-combined-market-share/desktop/united-states-of-america/#monthly-201512-201612
Em dezembro de 2015, o IE 8.0 detinha 2,92% do mercado. Em dezembro de 2016, o IE 8.0 detinha 0,77% do mercado.
Com essa taxa de declínio, não seria a pior ideia parar de suportar versões antigas do IE e começar a usar :: para Pseudo Elements.
fonte
Incluir ambas as notações certamente é mais seguro, mas não consigo ver nenhum navegador abandonando a notação única por um longo tempo, então apenas uma estará bem (é CSS2 válido).
Pessoalmente, só uso a notação de dois pontos simples, principalmente por hábito.
fonte