Classes e ids
O id é a identidade de um elemento, é como se fosse o RG dele. Ele deve ser único em todo o documento. Ele é
definido pelo atributo id
:
<p id="meu-paragrafo">Conteúdo</p>
Elementos podem ter múltiplas classes, que são separadas umas das outras por espaços. E vários elementos podem ter a mesma classe. Elas foram criadas pensando no reaproveitamento. Veja abaixo um exemplo com atribuições de uma classe e de múltiplas classes:
<button class="alert-button">Botão</button>
<button class="alert-button big-button">Botão</button>
Tanto classes como ids são opcionais. Você só os define quando precisa. E quando você precisa defini-los? Geralmente, quando você precisa trabalhar com o elemento em outra tecnologia, geralmente Javascript ou CSS, mas podem ser outras tecnologias também, como C++. Uma das formas de encontrar elementos é procurando pelo id ou por uma ou mais classes.
Outro uso dos ids é para links internos. Todo elemento com um id pode ser linkado seguindo esse
modelo: url#id. Assim, se uma página exemplo.html tem um elemento
<p id="paragrafo-1">
, um link exemplo.html#paragrafo-1 leva para o elemento com id
paragrafo-1 da página exemplo.html.
Geralmente, é melhor evitar usar ids, a não ser que você queira usá-los para criar links internos, porque eles são muito específicos. Como são únicos, por natureza, eles não foram feitos para o reaproveitamento. Então, pense bem antes de usar um id. Só use se você for fazer algo que jamais precisará ser aplicado a outro elemento, uma coisa realmente muito específica. E, acredite, muitas vezes você acha que uma coisa só vai precisar ser feita em um elemento, e depois você descobre que precisa fazer a mesma coisa em outros elementos. Por isso, pense muito antes de usar ids.
O HTML é muito permissivo quanto às regras de nomenclatura de classes e ids. Ele permite praticamente tudo. As únicas restrições são que a classe/id não pode ser vazia e não pode conter espaços. Assim, ids e classes estranhos como esses são válidos:
<h1 id="$(SP)"> ... </h1>
<h1 id="[]98"> ... </h1>
<h1 class="98AL**"> ... </h1>
Mesmo você podendo escolher esses nomes malucos, não faça isso, por favor. Ninguém vai entender o que você quis dizer, ou seja, acaba com a legibilidade da marcação. Além disso, você pode ser obrigado a trocar de id/classe, porque muitas tecnologias que trabalham com HTML, inclusive Javascript e CSS podem não conseguir referenciar elementos com esses caracteres. Por isso, recomenda-se usar apenas letras, dígitos e underlines e não começar o id ou a classe com um dígito.