What is BEM?
BEM stands for Block, Element, Modifier.It is a popular naming convention for classes in HTML and CSS. Its goal is to help ...
For further actions, you may consider blocking this person and/or reporting abuse
How do you apply this in a large project with many nested divs?
Eg :
`
You get what I'm saying, right? How do I go about this problem of eventually class name containing many words?
There is no such thing as nesting elements. Ideally there can be only a block, 1st level elements of this block and a modifiers of a block and/or those elements.
I was involved in numerous enterprise projects as frontend developer and we didn't encounter any problems while using BEM. For me it's introduce a very clear and logic structure, which can be easily read (well in my case at least).
Can you explain a bit more using the example I gave in the original post?
BEM avoids nested structures, so in your example the right visualization of all elements looks rather like this:
And using SASS you can write this one so:
what if I have more divs inside form, say form_wrapper, form_inputfield etc ?
It's up to you what you decide but as long as nested elements are part of your block element, you should use
block__element
pattern.If you start to have problems with this flat structure, it is a good sign that you should start a new block - you can use block inside another block:
For clarity in this example I omitted most of the markup, so you can see the HTML structure and BEM structure.
Oh okay I got it now! I one block isn't enough, you create another block inside it. Thanks man.✨
In BEM, everything is a class and nothing is nested.
I would like to share a different opinion. IMO, BEM is one of the WORST ways to implement a maintainable code. Here's something I wrote a while ago about it.
eavichay.svbtle.com/never-bem-again
Great article about BEM
Thanks!
BEM is for masochists. It's anti-component naming convention.
No, it is pure component based naming. But it represents the small to complex style components of the design system. You should appreciate reusability and atomic design before starting to apply BEM.
You should also check the new "Cube CSS" methodology.