Artykuł ten będzie ekspresowym kursem przydatnego i popularnego w ostatnim czasie BEM’a. Jeżeli właśnie pijesz poranną kawę, to przeczytaj artykuł i naucz się korzystać z metodologii BEM. Czym tak właściwie jest BEM? Jest to określone nazewnictwo klas CSS tak aby były czytelne i zrozumiałe dla każdego pracującego z kodem.
Zaczynajmy
Metodologia BEM czyli Block Element Modifier dzieli komponenty strony na 3 istotne podgrupy zawarte już w samej nazwie.
Block
– Większe elementy mające na celu pełnienie danej funkcji np. header, container, menu, checkbox, input.
Element
– Elementy zawarte w poniższych blokach takie jak przyciski menu, checkboxy. Nazewnictwo: menu item, list item, checkbox caption, header title.
Modifier
– Czyli modyfikatory elementów np. disabled, highlighted, checked, fixed, size big, color green.
Poprawne nazewnictwo
W przypadku stylowania bloku:
[css].menu {}[/css]
Stylowanie elementu:
[css].menu__item {}[/css]
Stylowanie elementu z dodatkowymi atrybutami:
[css].menu__item–green {}[/css]
Stylowanie bloku z dodatkowymi atrybutami:
[css].menu–yellow {}[/css]
Przykład:
[html]
<div class="menu menu–small">
<div class="menu__item menu__item–green">Item</div>
</div>
<div class="menu menu–big">
<div class="menu__item menu__item–yellow">Item2</div>
</div>
[/html]
Powyższy przykład ilustruje dziedziczenie właściwości klasy „menu” w obu przypadkach oraz dodatnia dodatkowych atrybutów za pomocą klasy „menu–small” oraz „menu–big”. Dodatkowo elementy menu „menu__item” dziedziczą wspólne atrybuty właśnie dzięki tej klasie oraz posiadają własne za sprawą selektorów klas „menu__item–green” oraz „menu__item–yellow”.
Kilka wskazówek na koniec
Do poprawnego stosowania metodologii BEM konieczne jest stosowanie również poniższych instrukcji.
-Unikalna nazwa dla każdego elementu!
-Nie stosujemy selektorów HTML do stylowania takich jak: nav, footer itp.
-Nie używamy kaskadowości np. nav > ul
-Nie używamy selektorów ID.
Pełną dokumentację znajdziecie na oficjalnej stronie BEMa, na którą serdecznie zapraszam.
Autor: Radosław Bogusławski