Desenvolvimento Web com HTML, CSS e JavaScript > Desacoplamento com classes

Desacoplamento com classes

Muitas vezes quando estamos declarando os estilos de uma página HTML, achamos mais fácil usar o seletor de nome da tag ao invés de usar classes. Porém isto pode causar problemas imprevistos se não usado com cautela. Vamos analisar o seguinte código para entender a situação:

HTML:

<h1>MusicDot</h1>

<h2>História</h2>
<p>Texto</p>

<h2>Diferenciais</h2>
<ul>
    <li>Diferencial 1</li>
    <li>Diferencial 2</li>
    <li>Diferencial 3</li>
</ul>

CSS:

h2 {
    font-size: 24px;
    font-weight: bold;
    border-bottom: 1px solid #000000;
}

No exemplo acima adicionamos estilo nas tags <h2> para ter um tamanho de fonte maior, uma fonte mais grossa e uma borda abaixo para fazer o efeito de linha divisória. Até aqui tudo certo. Mas agora vamos colocar um outro título na página chamada "Sobre a MusicDot" e esse título tem relevância maior do que os dois outros títulos que temos (História e Diferenciais), portanto vamos ter que modificar suas tags para uma de menos importância:

<h1>MusicDot</h1>

<h2>Sobre a MusicDot</h2>
<p>Introdução</p>

<!-- Mudamos para h3 pois queremos que tenham menos relevância que o título "Sobre a MusicDot" -->
<h3>História</h3>
<p>Texto</p>

<!-- Mudamos para h3 pois queremos que tenham menos relevância que o título "Sobre a MusicDot" -->
<h3>Diferenciais</h3>
<ul>
    <li>Diferencial 1</li>
    <li>Diferencial 2</li>
    <li>Diferencial 3</li>
</ul>

Agora com essa mudança da estrutura do HTML o nosso CSS está alterando um elemento que não é o que nós inicialmente queríamos mudar. Vamos ter que fazer a mudança no CSS para usar as nossas alterações no elemento certo.

Neste exemplo a solução é relativamente simples, porém imagine que temos seletores bem mais complexos, com heranças etc... a mudança não seria tão simples. Por isso o ideal é declarar estilos com classes ao invés de nomes de tags. Uma dica pra dar nome às classes é elas representarem o papel que estas tags estão exercendo em conjunto com os estilos declarados, no nosso caso, estamos declarando um conjunto de estilo para subtítulos.

Veja como fica o resultado do desacoplamento do conjunto de estilos do nome da tag, para ser agora com classes:

HTML:

<h1>MusicDot</h1>

<h2>Sobre a MusicDot</h2>
<p>Introdução</p>

<!-- Adicionamos a classe subtitulo-->
<h3 class="subtitulo">História</h3>
<p>Texto</p>

<!-- Adicionamos a classe subtitulo-->
<h3 class="subtitulo">Diferenciais</h3>
<ul>
    <li>Diferencial 1</li>
    <li>Diferencial 2</li>
    <li>Diferencial 3</li>
</ul>

CSS:

.subtitulo {
    font-size: 24px;
    font-weight: bold;
    border-bottom: 1px solid #000000;
}

Usando classes, podemos alterar toda a estrutura HTML sem nos preocupar se estas alterações afetarão a estilização que fizemos no começo.