Por que :: selection foi removido da especificação CSS Selectors e como sua especificidade funciona nos seletores de tipo?
Algumas perguntas sobre o uso de CSS para especificar a cor do texto selecionado:
https://developer.mozilla.org/En/CSS/::selection diz que,
::selection
foi redigido paraSeletores CSS3 mas removido do rascunho CSS3 atual. De qualquer forma, ele é implementado nos navegadores e o suporte continuará.
Por que foi removido?
Imagine que exista uma regra como a seguinte no CSS padrão implementado pelo navegador:
::selection { background-color: Highlight; color: HighlightText; }
Imagine ainda que uma regra como a seguinte seja definida em qualquer folha de estilo criada por site específico:
body { background-color: white }
Dadas essas regras, qual seria a cor de fundo do corpo do texto selecionado: seriawhite
ouHighlight
?
Talvez a regra na folha de estilo do autor deva substituir a regra padrão: porque, de acordo com a especificidade,body
é tão específico quanto::selection
e é especificado posteriormente (e, portanto, deve substituir a entrada anterior).
Por outro lado, isso resultaria em texto invisível quando selecionado (porque seHighlight
é azul eHighlightText
é branco, para que o texto selecionado fique branco sobre azul, substituindo obackground-color
do texto selecionado para que fique branco resultaria em branco sobre branco).
Supondo que o comportamento na etapa 2 seja indesejável, como evitá-lo?
Digamos que seja um erro na folha de estilo do usuário, que nunca deve especificarbackground-color
sem também especificarcolor
?
Diz issobody
não corresponde ao texto do corpo selecionado, exceto quando o::selection
pseudoelemento é especificado como parte do seletor?