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).
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?
In BEM, everything is a class and nothing is nested.
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.✨