A aplicação de estilos à tag body será aplicada a toda a página, portanto
body { font-family: Verdana }
será aplicado a toda a página. Isso também pode ser feito com
* {font-family: Verdana}
que se aplica a todos os elementos e, portanto, parece ter o mesmo efeito.
Entendo o princípio de que, em primeira instância, o estilo está sendo aplicado a uma tag, corpo para toda a página, enquanto que no segundo exemplo, a fonte está sendo aplicada contra cada elemento html individual. O que estou perguntando é qual é a diferença prática em fazer isso, quais são as implicações e qual é uma razão, situação ou melhor prática que leva ao uso um do outro.
Um efeito colateral é certamente a velocidade (+1 Rob). Estou mais interessado no motivo real para escolher um sobre o outro em termos de funcionalidade.
design-patterns
coding-style
html
css
Michael Durrant
fonte
fonte
Respostas:
Diferenças funcionais entre essas duas opções do seletor CSS ... (minha opinião)
corpo
O seletor universal * (todos os elementos)
Sugestões
fonte
Tente algo assim
contra
E veja quais estilos são aplicados às células da tabela.
Há uma diferença entre "aplicado a todo o documento" e "aplicado a todos os elementos do documento" ao lidar com folhas de estilo em cascata .
A aplicação de um estilo em cascata ao corpo aplica-o a todas as marcas dentro do corpo até que uma marca o substitua. Em seguida, o estilo substituído é aplicado a todas as tags dentro desse.
No entanto, existem alguns estilos que não são exibidos em cascata, como margem e preenchimento (geralmente onde não faz sentido). Eles só podem ser aplicados a tags específicas e é aí que um curinga pode ser útil (embora raramente).
A maioria dos estilos não em cascata também possui um valor de herdar (por exemplo
margin: inherit
,), o que significa "aceitar os valores da tag pai".fonte
Esqueci os detalhes completos, mas, com o seletor *, o desempenho fica mais lento à medida que cada elemento é avaliado à medida que o navegador analisa o CSS e aplica o estilo. iirc, definindo a fonte, neste caso, apenas para o pai, faz uma referência para cada elemento e não é necessário trabalho adicional.
Também existem outras questões, mas, novamente, não me lembro de todas e não as utilizo * há anos.
fonte
A orientação geral para um bom design de CSS é ser o mais específico possível, mas não mais.
Portanto, no seu exemplo, aplicar o estilo ao elemento body seria o mais específico possível e certamente mais específico que o seletor '*'.
fonte
Como outros já mencionaram,
body { font-family: Verdana }
selecionará a fonte Verdena apenas para os elementos que herdam afont-style
propriedade de seus pais, de modo que todos os seus pais também herdam a propriedade eventualmente formam obody
elemento e* {font-family: Verdana}
selecionará a fonte Verdena para todos os elementos. Gostaria de ilustrar a diferença com um exemplo:Usando o seletor de corpo:
Usando o selelctor universal
*
:Use os códigos css e html dos exemplos que reconhecerá que o
<input>
elemento não herda o estilo da fonte e, portanto, o que você digitar no formulário obtém o estilo de fonte padrão da folha de estilos do agente do usuário. No segundo exemplo, o seletor universal*
define explicitamente o estilo da fonte para cada elemento, incluindo oinput
elemento.fonte