Co to jest BEM i jak go stosować
Co to jest BEM i jak go stosować
BEM (Block – Element – Modifier) to jedna z najpopularniejszych metodologii nazywania klas CSS i organizowania stylów w dużych projektach. Jej celem jest pisanie kodu, który jest:
- czytelny i zrozumiały na pierwszy rzut oka,
- łatwy do utrzymania i rozwoju,
- pozbawiony konfliktów klas i nadpisywania reguł,
- przyjazny w pracy zespołowej.
Podstawowa koncepcja BEM
BEM dzieli strukturę komponentu na trzy poziomy:
- Block – główny, niezależny komponent (np.
card,menu) - Element – część wewnętrzna bloku, która nie ma sensu bez niego (np.
card__title,menu__item) - Modifier – wariant stylu bloku lub elementu (np.
card--highlighted,menu__item--active)
Przykład kodu HTML i CSS
<article class="card card--featured"> <h2 class="card__title">Tytuł karty</h2> <p class="card__text">Treść karty z opisem.</p> <button class="card__button card__button--primary">Zobacz więcej</button> </article>
.card {
padding: 1rem;
border: 1px solid #ccc;
border-radius: 8px;
}
.card--featured {
background-color: #f9f9f9;
border-color: #0077cc;
}
.card__title {
font-size: 1.2rem;
font-weight: bold;
}
.card__text {
color: #555;
}
.card__button {
margin-top: 1rem;
}
.card__button--primary {
background-color: #0077cc;
color: white;
border: none;
}
Dzięki tej strukturze możesz niezależnie rozwijać komponenty bez obawy, że zmienisz coś poza ich zakresem. Klasy są unikalne, opisowe i przewidywalne.
Zasady BEM
- Elementy oddzielamy od bloku za pomocą podwójnego podkreślenia:
block__element - Modyfikatory oddzielamy za pomocą dwóch minusów:
block--modifier - Nie łączymy elementów z modyfikatorami bezpośrednio – element też może mieć swój modyfikator:
block__element--modifier - Każdy komponent ma swoją przestrzeń nazw – nie trzeba unikać powtórzeń nazw elementów
Dobre praktyki
- Używaj tylko małych liter i łączników (
-) – np.card__title--highlighted - Nie styluj komponentów po tagach HTML (np.
.card h2) – styluj tylko po klasach - Nie zagnieżdżaj klas BEM w klasach innych bloków
- Nie nadpisuj stylów komponentów w zewnętrznych klasach
- Trzymaj strukturę kodu zgodną z HTML – jeśli coś wygląda jak element logiczny, niech będzie osobną klasą
Dlaczego BEM działa?
BEM to nie framework – to konwencja. Jej siła polega na tym, że można ją stosować wszędzie: w małych projektach i dużych systemach. Dzięki spójnej nazwie klas i separacji logiki kodu, BEM pozwala zachować porządek nawet w ogromnych arkuszach stylów.
Ćwiczenie
Stwórz komponent „alertu” (komunikatu systemowego), np. ostrzeżenia lub powiadomienia, z użyciem BEM. Powinien zawierać:
- główny blok
alert, - tytuł komunikatu jako
alert__title, - treść wiadomości jako
alert__text, - przycisk zamknięcia jako
alert__close, - modyfikatory, np.
alert--error,alert--success.
Zastosuj te klasy zarówno w HTML, jak i w CSS. Jeśli chcesz, stwórz dwa warianty: „błąd” i „sukces”.
Wniosek
BEM to praktyczne podejście do organizowania stylów – oparte na jasnym nazewnictwie i jednoznacznej strukturze. Stosując je od początku, unikasz chaosu, a kod staje się czytelny zarówno dla Ciebie, jak i dla każdego innego programisty, który go później zobaczy.
