Front-end

BEM: Jak skutecznie zorganizować kod CSS

CSS jest zdecydowanie kluczowym elementem naszych projektów. Jednak wraz z rosnącym rozpoznawalnością, zwiększa się jego złożoność, co może prowadzić do chaosu. Narzędziem, które umożliwia efektywne zarządzanie kodem CSS, jest BEM - czyli Block, Element, Modifier. Ten artykuł to kompletny przewodnik, który pomoże zrozumieć i zastosować BEM w swoich projektach.

25 mar 2024

BEM (Block, Element, Modifier) to popularna metoda organizacji kodu CSS, która pochodzi od rosyjskiego giganta internetowego, Yandex. Jej fundamentalnym przesłaniem jest zachowanie struktury kodu, poprawa jego czytelności oraz redukcja kompleksowości przy jednoczesnym zwiększeniu efektywności programistów. Pomocna jest w szczególny sposób w dużych, rozległych projektach, gdzie zwiększenie złożoności kodu może prowadzić do problemów z jego utrzymaniem. BEM, przynosząc ściśle zdefiniowane zasady dotyczące nazewnictwa i segregacji kodu, tworzy silne fundamenty dla skutecznego zarządzania skomplikowanymi stylami CSS.

 

Elementy BEM: Bloki, Elementy i Modyfikatory

BEM odświeża podejście do organizacji kodu CSS, wprowadzając trzy podstawowe składniki: Bloki, Elementy i Modyfikatory, stąd nazwa BEM. Bloki są najwyższym poziomem abstrakcji, reprezentującym poszczególne, autonomiczne jednostki kodu, takie jak nagłówek, stopka, czy inny konkretny segment strony. Elementy, to z kolei części konkretnego bloku, które nie mają niezależnego znaczenia poza nim. Przykładem może być przycisk menu należący do bloku nagłówka. Modyfikatory natomiast, to specjalne cechy, które wpływają na wygląd lub zachowanie bloków i elementów. Przykładem może być przycisk menu o modyfikatorze 'aktywny', który zmienia się gdy dany element jest wybrany. Wszystko to razem tworzy silną i elastyczną strukturę, która ułatwia zarządzanie i rozwijanie stylów CSS.

 

Zasady nazywania w BEM: Unikaj konfliktów i zwiększ czytelność

Zastosowanie konwencji BEM w nazywaniu klasyfikuje się jako jedno z najskuteczniejszych metod zapewnienia czytelności i unikania konfliktów w arkuszach stylów CSS. W tej metodologii, każdy blok ma swoją unikalną nazwę, służącą jako fundament dla dalszego nazewnictwa elementów i modyfikatorów. Dzięki temu, nawet wielokrotne użycie tego samego bloku w różnych częściach projektu nie prowadzi do konfliktów nazw. Elementy, będące częściami bloku, otrzymują nazwy pochodzące od nazwy bloku, co zapewnia ich łatwą identyfikację. Modyfikatory zaś, odpowiadają za określenie stanu lub wariacji bloku bądź elementu. Rekomenduje się wybór zwięzłych, ale jednoznacznych nazw, co zwiększa przejrzystość kodu i ułatwia jego utrzymanie, nawet dla nowych członków zespołu projektowego. Takie podejście do nazywania nie tylko poprawia współpracę w zespole, ale również przyczynia się do łatwiejszego zarządzania i aktualizacji projektu.

osoba używająca komputera, BEM (Block, Element, Modifier)

Powiązana branża

HR / HRTech

W HR pracujemy z agencjami rekrutacyjnymi, startupami hrtech i firmami, które mają własny dział HR i wyrosły z gotowych narzędzi. Problem jest zwykle ten sam: proces rekrutacyjny albo kadrowy jest rozsypany między system ATS, arkusze, maile i kalendarz, a nikt nie widzi całości. Buduje się tu przede wszystkim systemy do rekrutacji, obiegu dokumentów pracowniczych, onboardingu i szkoleń. Rzadziej chodzi o brak funkcji — częściej o to, że narzędzie nie zgadza się z procesem, który firma faktycznie stosuje. Dlaczego gotowy ATS przestaje wystarczać Gotowe narzędzia zakładają jeden uniwersalny proces rekrutacji. Tymczasem agencja pracuje inaczej niż dział HR w produkcji, a rekrutacja specjalistów IT inaczej niż masowa. Kiedy firma zaczyna prowadzić proces obok narzędzia — w arkuszach i mailach — to znak, że narzędzie przegrało. Budowę własnego systemu zaczynamy więc od zmapowania procesu takiego, jaki jest, z jego wyjątkami — dopiero potem powstaje interfejs. Widoczność firmy HR na zewnątrz to osobny wątek: strona doradztwa czy agencji musi dać się aktualizować bez programisty, bo oferta i treści zmieniają się z tygodnia na tydzień. Tak przebudowaliśmy serwis firmy doradztwa HR — na narzędziach, które zespół obsługuje samodzielnie. Drugi nurt to dokumenty: umowy, aneksy, zgody, badania, szkolenia BHP. Obieg papierowy kończy się segregatorami i pytaniem „czy to na pewno wróciło podpisane". Cyfrowy obieg z podpisem elektronicznym i automatycznymi przypomnieniami zdejmuje z kadr najbardziej mechaniczną część pracy — a pracownikowi daje jedno miejsce, w którym widzi swoje sprawy. Na co uważać przy narzędziach wewnętrznych Narzędzie wewnętrzne nie ma marketingu, który zmusi ludzi do używania — albo jest wygodniejsze od arkusza, albo umiera. Dlatego w tych projektach interfejs nie jest kosmetyką: liczy się liczba kliknięć w codziennych czynnościach, sensowne wartości domyślne i to, żeby system podpowiadał następny krok procesu. Tę część pracy wykonujemy w ramach projektowania UX/UI z testami na osobach, które będą narzędzia używać naprawdę.

Branża HR

Zastosowanie BEM w praktyce

Zastosowanie metodyki Block, Element, Modifier w praktyce projektowej jest niezwykle korzystne, szczególnie w dużych, złożonych systemach interfejsów użytkownika, gdzie utrzymanie spójności i czytelności kodu CSS staje się wyzwaniem. Poprzez podział struktury CSS na bloki, elementy i modyfikatory, BEM wprowadza jasne reguły nazewnictwa, które ułatwiają zarówno rozwój, jak i późniejsze utrzymanie kodu. Na przykład, blok może reprezentować komponent UI tak jak „menu”, elementy wewnątrz bloku, np. „menu-item”, definiują składowe części bloku, a modyfikatory takie jak „menu-item--active” opisują stan lub wariant danego elementu. Dzięki temu, każdy fragment kodu jest intuicyjnie zrozumiały i łatwo dostosowywalny. Praktyczne zastosowanie BEM zwiększa modularność kodu, ułatwia jego ponowne użycie oraz wspiera pracę zespołową, gdzie każdy członek zespołu szybko odnajduje się w projekcie.

 

Zalety i wady stosowania metodologii BEM w projektach CSS

Zastosowanie metodologii BEM w projektach CSS ma zarówno swoje zalety, jak i wady. Niezaprzeczalne korzyści to m.in. łatwiejsza identyfikacja i zrozumienie struktury kodu, poprawa wydajności przy pracy w zespole, możliwość ponownego wykorzystania komponentów oraz ograniczenie ryzyka powstawania konfliktów CSS. Metodologia BEM pomaga tworzyć kod scalony, konsekwentny i łatwy do utrzymania. Niemniej jednak, BEM nie jest pozbawiony wad: skomplikowana nomenklatura, która może początkowo przytłoczyć oraz zwiększona długość selektorów, co może wpłynąć na zwiększenie wielkości plików CSS. Wszystko zależy jednak od specyfiki projektu – w niektórych przypadkach zalety BEM mogą przewyższać jego potencjalne wady, co czyni go wartościowym wyborem.

FAQ

FAQ – metodologia BEM

  • BEM (Block, Element, Modifier) to metodologia organizacji kodu CSS stworzona przez Yandex w 2009 roku. Klasyczna konwencja nazewnictwa klas — Block (samodzielny komponent, np. .button), Element (część bloku, połączona z blokiem podwójnym podkreśleniem, .button__icon), Modifier (wariant bloku lub elementu, łączony podwójnym myślnikiem, .button--primary). Cel — eliminacja konfliktów nazw CSS, łatwiejsza nawigacja w kodzie, skalowalność dla dużych projektów. Klasycznie używana przez 2012–2018, dziś wyparta przez nowoczesne podejścia.

  • Tak, ale w mniejszej skali. BEM dominował 2012–2018, kiedy CSS-in-JS i frameworki komponentowe (React, Vue) były wczesne. Dziś — większość zespołów używa scoped CSS (Vue Single File Components, React z CSS Modules), Tailwind CSS (utility-first, eliminuje nazewnictwo klas), CSS-in-JS (styled-components, emotion). Te podejścia rozwiązują te same problemy (konflikty nazw, skalowanie) bez wymuszania długich nazw BEM. BEM pozostaje w legacy projektach i niektórych nowych projektach (głównie tradycyjnych HTML/CSS, WordPress themes).

  • Tailwind CSS — dominujący w nowoczesnych projektach 2023–2026. Klasy utility (np. flex justify-center bg-blue-500 px-4 py-2) zamiast nazewnictwa BEM. Zalety — krótszy CSS (jeden plik dla całego projektu), brak konfliktów nazw, szybki development, dobre IntelliSense. Wady — wygląd JSX/HTML zaśmiecony klasami. BEM jest semantyczny (klasa opisuje znaczenie — .article__title), Tailwind utility (klasa opisuje styl). Dla nowoczesnych React/Vue projektów Tailwind jest naturalnym wyborem. BEM dla legacy lub gdy zespół preferuje tradycyjne CSS.

  • Co BEM daje do dziś:

    • brak konfliktów nazw — długie nazwy są unikalne,
    • czytelność — z samej klasy widać, do którego komponentu należy,
    • łatwa nawigacja — wyszukanie .button__ pokazuje wszystkie elementy przycisku,
    • płaska specyficzność — każda klasa waży podobnie, więc nadpisania są przewidywalne,
    • wspólna konwencja zespołowa,
    • uniwersalność — działa w czystym HTML/CSS i w każdym frameworku,
    • zerowy próg wejścia — bez builda i narzędzi.
  • Współczesne alternatywy:

    • Tailwind CSS — utility-first, dominujący wybór ostatnich lat,
    • CSS Modules — klasy automatycznie scope'owane do komponentów,
    • CSS-in-JS — styled-components, Emotion, Vanilla Extract,
    • scoped CSS w komponentach Vue,
    • CSS Cascade Layers — natywna kontrola specyficzności bez konwencji nazw,
    • lekkie biblioteki — Open Props, Pico CSS.

    Dla nowych projektów reactowych naturalny duet to Tailwind plus shadcn/ui; BEM zostaje w projektach zastanych i tam, gdzie zespół świadomie woli tradycyjny CSS.

Blog

Powiązane artykuły

Czytaj więcej
Front-end

Client-side Hydration: jak działa i dlaczego jest kluczowa dla nowoczesnych aplikacji webowych

Nowoczesne aplikacje webowe muszą być jednocześnie szybkie, interaktywne i przyjazne dla użytkownika już od pierwszego załadowania strony. Właśnie w tym kontekście coraz większe znaczenie zyskuje client-side hydration, czyli mechanizm łączący renderowanie po stronie serwera z logiką uruchamianą w przeglądarce. Dzięki niemu możliwe jest wyświetlenie treści niemal natychmiast, a następnie płynne przejście do pełnej interaktywności aplikacji.

Tomasz Kozon
13 gru 2025
Front-end

Turbopack w praktyce: jak działa nowy bundler od Vercela

Rosnąca złożoność aplikacji webowych sprawia, że wydajność narzędzi developerskich ma dziś ogromne znaczenie. Turbopack, nowy bundler od Vercela, powstał jako odpowiedź na ograniczenia klasycznych rozwiązań, takich jak Webpack, szczególnie w dużych projektach Next.js. Jego głównym celem jest maksymalne skrócenie czasu startu aplikacji i natychmiastowy hot reload podczas pracy z kodem.

Tomasz Kozon
06 gru 2025
Front-end

Radix UI – biblioteka headless komponentów dla React

Radix UI to coraz popularniejsza biblioteka headless komponentów, która zdobywa uznanie wśród developerów React poszukujących elastycznych i solidnych rozwiązań. W świecie, gdzie dostępność i jakość UX mają kluczowe znaczenie, gotowe prymitywy Radix UI pozwalają budować interfejsy zgodne z najlepszymi praktykami. Biblioteka nie narzuca warstwy wizualnej, dzięki czemu świetnie sprawdza się w projektach opartych na własnym design systemie.

Tomasz Kozon
03 gru 2025
Front-end

React Storefront: Jak zbudować ultraszybki sklep internetowy?

Budowa ultraszybkiego sklepu internetowego to dziś nie tylko kwestia wygody użytkownika, ale kluczowy element przewagi konkurencyjnej w e-commerce. Każda dodatkowa sekunda ładowania potrafi obniżyć konwersję, dlatego nowoczesne technologie muszą stawiać wydajność na pierwszym miejscu. React Storefront powstał właśnie po to, by łączyć elastyczność Reacta z ekstremalną szybkością działania i sprawdzonymi wzorcami dla sklepów online.

Tomasz Kozon
29 lis 2025
Front-end

Parsley.js – lekka biblioteka do walidacji formularzy

Formularze są jednym z kluczowych elementów każdej strony internetowej i aplikacji webowej, a ich poprawne działanie ma bezpośredni wpływ na doświadczenie użytkownika. Walidacja danych pozwala uniknąć błędów, niekompletnych zgłoszeń oraz niepotrzebnej komunikacji z serwerem. Parsley.js to lekka i prosta w użyciu biblioteka JavaScript, która umożliwia skuteczną walidację formularzy po stronie klienta.

Tomasz Kozon
28 lis 2025
Front-end

Eleventy (11ty): lekki i szybki generator stron statycznych

Eleventy (11ty) to lekki i niezwykle elastyczny generator stron statycznych, który szybko zdobywa popularność wśród twórców ceniących prostotę i pełną kontrolę nad projektem. W świecie coraz bardziej rozbudowanych frameworków 11ty wyróżnia się minimalistycznym podejściem, oferując jednocześnie dużą swobodę w wyborze narzędzi i sposób pracy. Dzięki szybkim buildom, wsparciu dla wielu formatów danych i możliwości łączenia różnych języków templatingu, świetnie sprawdza się zarówno w prostych…

Tomasz Kozon
23 lis 2025