DEV Community

Stefany Repetcki
Stefany Repetcki

Posted on

METODOLOGIA BEM - BLOCO ELEMENTO MODIFICADOR

Boas práticas
A convenção de nomeclatura usada no mundo todo. CSS BEM Bloco, Elemento e Modificador

Em um projeto componentizado o:

BLOCO - Pode ser um componente
ELEMENTO - São os filhos do bloco
MODIFICADOR - Utilizados para descrever estados, como por exemplo "disabled" "dark"

Como montamos a classe:

.bloco__elemento--modificador
Enter fullscreen mode Exit fullscreen mode

Como isto fica em nosso HTML:

<div class="bloco">
   <div class="bloco__elemento"></div>
   <div class="bloco__elemento2"></div>
   <div class="bloco__elemento3">
       <button class="bloco__elemento3--disabled"></button>
   </div>
</div>
Enter fullscreen mode Exit fullscreen mode

Como isto fica em nosso SASS:

.bloco {
      &__elemento {}
      &__elemento2 {}
      &__elemento3 {
           &--disabled {}
      }
}
Enter fullscreen mode Exit fullscreen mode

ou CSS

.bloco {}

.bloco__elemento {}

.bloco__elemento2 {}

.bloco__elemento3 {}

.bloco__elemento3--disabled {}
Enter fullscreen mode Exit fullscreen mode

metodologia bem

Regras e melhores práticas:

  • Não replique hierarquia. Ex:
<div class="bloco">
   <div class="bloco__elemento">
       <div class="bloco__descricao"></div>
   </div>
   <div class="bloco__elemento2"></div>
   <div class="bloco__elemento3">
       <button class="bloco__elemento3--disabled"></button>
   </div>
</div>
Enter fullscreen mode Exit fullscreen mode

Explicação: na classe bloco_descricao perceba que ela não recebeu a classe pai bloco_elemento, esta é uma forma de não tornar classes enormes com filhos e mais filhos. Sempre que criamos um elemento filho podemos deixar ele somente com a classe do pai.

  • Você pode utilizar nome composto para classes que precisam de uma descrição melhor, como por exemplo:
.bloco-a__descricao-image
Enter fullscreen mode Exit fullscreen mode

Espero que tenha ajudado!:) Deixo aqui meu linkedin e github ❤️

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay