3
respostas

[Dúvida] Como melhor usam o padrão BEM para nomear classes?

Olá, venho tentar tirar uma dúvida com vocês, acontece que eu já percebi que a forma como os intrutores da Alura usam do padrão BEM para nomear classes é um pouco diferente do meu método de uso. Para melhor exemplificar, repare no código abaixo:

<div class="container">
            <input type="checkbox" id="menu" class="container__botao">
            <label for="menu">
                <span class="cabeçalho__menu-hamburguer container__imagem"></span>
            </label>
            <ul class="lista-menu">
                <li class="lista-menu__item">
                    <a href="#" class="lista-menu__link">Clássicos</a>
                </li>
                <li class="lista-menu__item">
                    <a href="#" class="lista-menu__link">Esportivos</a>
                </li>
                <li class="lista-menu__item">
                    <a href="#" class="lista-menu__link">Monster Truck</a>
                </li>
                <li class="lista-menu__item">
            </ul>
        </div>

Repare por exemplo que o elemento de lista desordenada tem um nome de classe "lista-menu". O correto não era ser "container__lista-menu"? Pois a lista desordenada está dentro da div "container". Outra observação: cada elemento de item de lista tem uma classe "lista-menu__item" e dentro de cada item de lista existe um elemento de âncora com uma classe "lista-menu__link". Ora! Se o elemento de âncora está dentro do elemento de item de lista, o nome correto de suas classes não deveria ser "lista-menu__item__link" ou "item__link" (para não ficar com o nome de classe muito grande)?

Outra dúvida que tenho é sobre qual nomenclatura usar para variáveis CSS? Será que eu devo usar apenas do bom senso para criar meus nomes de variáveis ou existe algum padrão de projeto CSS que auxilia nisso?

3 respostas

Olá, Rafael! Como vai?

Muito bem observado! Parabéns.

Você está certo, porém, como se tratam no momento de projetos "pequenos" e que não vão envolver uma equipe grande ou algo assim, os nomes das classes seguem um padrão porém não necessariamente especificando todo o caminho dos elementos.

Isso ocorre não apenas na nomenclatura de classes, note que é uma boa prática também sempre comentar os códigos, por exemplo, mas nem sempre isso é feito, pois pode acabar confundindo os estudantes, desfocando do assunto principal do curso e focando em outras práticas complementares.

Quanto a segunda pergunta, não existe uma regra sobre que nome dar à duas classes, somente sobre como escrever esses nomes. Como elas se chamarão é algo que depende de você mesmo, muitas pessoas gostam de nomear suas classes em inglês, por exemplo, é uma prática totalmente pessoal. Não existem regras.

Agradeço e novamente te parabenizo pela observação que fez.

Fico à disposição caso precise de ajuda. Abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Na nomenclatura de classes usando padrão BEM, eu posso usar apenas a última plavra do nome da classe do contêiner pai no nome da classe do elemento filho? Pois se eu ficar repassando o mesmo nome de classe adicionando o uma última palavra no nome da classe do filho, dependendo da proporção que o código ganhar, os nomes de classe irão ficar imensos. Exemplo de nome de classe de um elemento pai: "nome-pai". Agora de seu elemento filho seguindo a nomenclatura do padrão BEM: "nome-pai__filho". Para o código que irá ser desenvolvido, posso apenas fazer com que o nome da classe do elemento filho herde em seu nome de classe, a última palavra do nome de classe do elemento pai? No caso citado anteriormente, ficaria assim: "pai__filho".

Olá, Rafael! Como vai?

O indicado é utilizar o nome completo do bloco (B) seguido de dois underlines (__) e então o nome do elemento (E), formando as duas primeiras letras do padrão "BEM".

Caso esteja desenvolvendo um projeto pequeno ou pessoal, não há problemas em utilizar somente o último nome do elemento pai/bloco, porém, imagine que futuramente será adicionado outro elemento que tem uma estilização diferente porém o mesmo último nome de um elemento já existente. Isso poderia causar um problema.

Então, te aconselho a seguir o padrão como ele é descrito mesmo, sem alterar esse tipo de coisa para que você consiga sempre ter o melhor resultado.

Te indico esse artigo sobre o padrão BEM para que você possa entender mais sobre esse assunto.

Espero ter ajudado. Fico à disposição. Abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!