12 ms·
| And why there are two hyphens in some, not all, classes like “btn--full“ or “btn--m“? They are Block--Element__Modifiers (BEM). It's a style of css meant fo
by componentr 12y ago
| And why there are two hyphens in some, not all, classes like “btn--full“ or “btn--m“?
They are Block--Element__Modifiers (BEM). It's a style of css meant for developer readability and code reuse.
In this instance you have the following:
.btn {
//the base code for a button
}
.btn--s { font-size: 12px; }
.btn--m { font-size: 14px; }
.btn--l { font-size: 20px; border-radius: .25em!important; }
Now if I want to make two buttons, one with small font, the other with large font, I can simply do this:
<button class="btn btn--s"></button>
<button class="btn btn--l"></button>
Personally, I like writing with BEM methodology rather than repeating style rules over multiple classes.
- Kiro 12y agoYou mean Block__Element--Modifiers.
- err4nt 12y agoI get the concept of using multiple classes to modify a base style (class="btn btn-small") and even using delimiters in multi-part classnames so you can use regular expressions in your CSS to select groups of classes that conform to a naming convention (I.e. [class^="btn-"] {color:red} would make both class="btn-small" and class="btn-large" red). What is the advantage to a double delimiter over using a single delimiter? (btn--small)
- lowboy 12y ago.multi-word-block__with-an-element--and-modifier Also see the .site-search example here http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/ http://csswizardry.com/2013/01/mindbemding-getting-your-head...
- err4nt 12y agoAhh gotcha! I still don't see why they can't do this without doubling up the delimiters just by agreeing on a stricter naming convention ;)