Componente com estilos diferentes com BEM #151
Replies: 16 comments
-
Essas metodologias ajudam bastante na organização do código, e no caso do BEM, me melhorias de performance. Mas penso que elas não devem ser seguidas "à risca", mas devem ser usadas para facilitar o seu trabalho. Desde que você mantenha um padrão para a escrita dos componentes, não vejo problemas em não utilizar BEM para isso. Mas usando BEM, você pode usar os modificadores para setar diferenças no mesmo componente: Se você precisa de classes mais específicas nesses componentes, como por exemplo: <header class="main-header">
<a class="[ button button--primary ] main-header__button">Go!</a>
</header> Usando os Uma outra coisa que eu tenho feito ultimamente, é misturar BEM com ITCSS.. o ITCSS eu uso somente para componentes, e o BEM para toda a aplicação. Ficaria algo assim: <header class="main-header">
<a class="[ button -primary ] main-header__button">Go!</a>
</header> Enfim.. tente utilizar essas metodologias para te ajudar no projeto. Crie um padrão e siga com ele até o final =)
|
Beta Was this translation helpful? Give feedback.
-
Da hora @fdaciuk! Valeu! Acho que o esquema |
Beta Was this translation helpful? Give feedback.
-
Legal isso de usar brackets pra separar as classes, já tinha visto por aí mas nada muito esclarecedor. |
Beta Was this translation helpful? Give feedback.
-
não entendi porque o último exemplo ficou |
Beta Was this translation helpful? Give feedback.
-
@leandroruel |
Beta Was this translation helpful? Give feedback.
-
@ramonsenadev mas teoricamente isso não sai do BEM? |
Beta Was this translation helpful? Give feedback.
-
Isso mesmo @leandroruel! No exemplo que eu dei, foi para mostrar que, para toda a marcação da sua página, você pode usar BEM, e para componentes, você pode utilizar RSCSS. Não vejo problemas em misturar metodologias, desde que faça sentido para você e para sua equipe =) |
Beta Was this translation helpful? Give feedback.
-
@fdaciuk no caso do seu exemplo, a utilização de CSS namespaces também poderia ajudar, ja que ela é independente e pode trabalhar muito bem em conjunto com qualquer outra metodologia e ajuda justamente a separar objetos, componentes e modificadores |
Beta Was this translation helpful? Give feedback.
-
Boa @akfzambrana! Também é uma possibilidade =) |
Beta Was this translation helpful? Give feedback.
-
entendi. valew amigos... por coincidência hoje estava lendo este artigo https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/ |
Beta Was this translation helpful? Give feedback.
-
A metodologia BEM é boa, só é chato na hora de usar os modifiers. Pois suja bastante o html. Exemplo: OBS.: Vou deixar um alerta para não usarem o modifier começando com dois hifens |
Beta Was this translation helpful? Give feedback.
-
Que bizarro @wdss93! Qual a versão do safari no iPad você estava usando, sabe? O que poderia dar algum problema nesse caso é ele achar que é um comentário, já que comentários no HTML são Mas uso BEM a bastante tempo, e nunca cheguei a ver esse tipo de problema. Sabendo a versão do iPad e Safari já vou ficar mais esperto quando testar xD |
Beta Was this translation helpful? Give feedback.
-
@fdaciuk, o problema parece acontecer com o iOS. Dando uma olhada la no csstyle encontrei um cara com o mesmo problema que eu tive, felizmente o autor da metodologia conseguiu solucionar a questão. Confira: geddski/csstyle#56 |
Beta Was this translation helpful? Give feedback.
-
Resolvi deixar meu preconceito de lado e testar o BEM, e no projeto em que trampo, existe muito dessas de um elemento ser diferente em X lugares. Me baseando na metodologia, o que defini para meu projeto:
Então, digamos que tenho um elemento .product-card { ... }
.product-card__container {
background: #fff;
...
} E em X lugar, preciso que ele tenha um background diferente (um exemplo bem simples mas pense nisso em larga escala): .product-card { ... }
.product-card__container {
background: #fff;
...
}
.product-card--highlight .product-card__container {
background: #ccc;
} Uso um modificador apenas no block e altero com base nele os elementos descendentes. Isso no html ficaria mais ou menos dessa forma: <div class="product-card--highlight">
<div class="product-card__container"></div>
</div> Mais simples do que: <div class="product-card product-card--highlight">
<div class="product-card__container"></div>
</div> ou <div class="product-card">
<div class="product-card__container product-card__container--highlight"></div>
</div> Dessa forma, evito problemas comuns no BEM como a especificidade default x modifier e também evito criar/chamar várias classes para montar um elemento (o famoso subway), mantendo meu html mais legível. Não existe forma correta, existe forma que atenda ao projeto e estilo que você e/ou seu time desenvolve. |
Beta Was this translation helpful? Give feedback.
-
Ta usando quase Atomic @keitoliveira 👍 😃 |
Beta Was this translation helpful? Give feedback.
-
Show de bola! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Galera, mais uma dúvida sobre BEM CSS,
Eu possuo um componente já BEM"Mificado" e ele vai ter uma pequena diferença no estilo em dois ou mais locais.
Qual a maneira correta de se tratar isso?
Beta Was this translation helpful? Give feedback.
All reactions