Objetivo do asterisco antes de uma propriedade CSS

101

O seguinte foi retirado da redefinição CSS do Yahoo. Alguém pode explicar o propósito dos asteriscos?

body {
  font:13px/1.231 arial,helvetica,clean,sans-serif;
  *font-size:small;
  *font:x-small;
}
Jeremy
fonte

Respostas:

117

É um hack CSS específico do navegador para as versões 7 ou anteriores do Internet Explorer.

*valor da propriedade

Embora o Internet Explorer 7 tenha corrigido seu comportamento quando um nome de propriedade é prefixado com um sublinhado ou um hífen, outros prefixos de caracteres não alfanuméricos são tratados como no IE6. Portanto, se você adicionar um caractere não alfanumérico, como um asterisco (*), imediatamente antes do nome de uma propriedade, a propriedade será aplicada no IE e não em outros navegadores. Ao contrário do método de hífen e sublinhado, a especificação CSS não faz reservas para o asterisco como prefixo, portanto, o uso desse hack pode resultar em comportamento inesperado conforme as especificações CSS evoluem.

* propriedade: o valor aplica-se ao valor da propriedade no IE 7 e abaixo. Pode ou não funcionar em versões futuras. Aviso: usa CSS inválido.

De: http://www.javascriptkit.com/dhtmltutors/csshacks3.shtml

Waleed Amjad
fonte
5

É um hack do Internet Explorer. Se você adicionar um caractere não alfanumérico, como um asterisco (*), imediatamente antes do nome de uma propriedade, a propriedade será aplicada no IE7 e anteriores, mas não em outros navegadores.

http://www.javascriptkit.com/dhtmltutors/csshacks3.shtml

Robert Harvey
fonte
1

Todos os navegadores, exceto o IE, ignoram as regras. É conhecido como o star hack. Acho que o IE7 irá ignorar as regras no modo padrão.

Nesse caso, a regra da fonte é definida e substituída pelo IE 6 e, às vezes, pelo 7.

Frank DeRosa
fonte
Este não é o hack star-html. Esse vai no seletor e é CSS válido.
bobince
@bobince Star Hack e Star HTML Hack são duas coisas diferentes: en.wikipedia.org/wiki/CSS_filter#Star_hack vs en.wikipedia.org/wiki/CSS_filter#Star_HTML_hack
Mike Covington
0

Pelo que eu sei, o asterisco impede o Firefox de ler o atributo, mas é válido no IE.

Vladimir Kocjancic
fonte
0

É um hack CSS, essa regra só será aplicada ao IE7 e versões anteriores.

Eu não recomendaria usá-lo, há maneiras melhores de consertar as incompatibilidades do IE.

Psilokan
fonte
0

Colocar caracteres como esse é um hack / workaround para fazer o IE 6 usar uma propriedade de estilo, enquanto oculta-o de navegadores mais "sãos".

A partir daqui :

Para encurtar a história, o analisador CSS do Internet Explorer é excessivamente agressivo ao tentar descobrir os nomes das propriedades e, na verdade, ignora os caracteres não alfanuméricos iniciais. Pelos meus testes, este parece ser o caso de pelo menos IE5 em diante.

JasonWyatt
fonte