
Marketplace premium kosmetyków na 9 rynkach europejskich - Shopify Plus
Klient: Baza Cosmetics
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.
CEO
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.

Klient: Baza Cosmetics

Klient: HR Hints
Branża: HR / HRTech

Klient: Klient (Aplikacja webowa do nauki programowania)
Branża: Edukacja / EdTech
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.
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.

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.
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
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ś:
Współczesne alternatywy:
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
Centra to szwedzka platforma headless e-commerce dla marek modowych i lifestyle'owych, które sprzedają na wielu rynkach i jednocześnie prowadzą hurt. Na przykładzie marki, która przerosła swój sklep, pokazujemy, co Centra załatwia, czego nie zrobi za firmę i kiedy lepiej wybrać Shopify Plus lub platformę open source.
Lynx to otwartoźródłowy framework od ByteDance, na którym działają fragmenty TikToka. Wyjaśniamy, czym różni się od React Native, dlaczego jest silnikiem do osadzania, a nie gotowym zestawem do budowy aplikacji, i w jakich trzech sytuacjach ma sens, a w jakich nie.
Klient chce wejść do mieszkania, którego jeszcze nie ma. Pokazujemy, co kryje się pod hasłem wirtualnego spaceru 3D, jak połączyć go ze stroną inwestycji i CRM oraz kiedy lepiej wydać te pieniądze inaczej.
Adaptive apps, czyli aplikacje adaptacyjne, zmieniają układ, treść i kolejność funkcji w zależności od urządzenia, sytuacji i zachowania użytkownika. Wyjaśniamy, czym różnią się od aplikacji responsywnych, gdzie adaptacja naprawdę się opłaca i jak ją wdrożyć, żeby nie zgubić użytkownika.
Mini apps to lekkie aplikacje uruchamiane w komunikatorze, na iPhonie albo w czacie AI, bez pobierania ze sklepu. Wyjaśniamy, gdzie działają, czym różnią się od PWA i pełnej aplikacji mobilnej, jakie mają ograniczenia i kiedy firma nie powinna w nie inwestować.
Rspack to bundler napisany w Rust, który rozumie konfigurację i większość wtyczek Webpacka. Sprawdzamy, ile czasu realnie oszczędza, co trzeba przepisać przy migracji, ile ona trwa i w jakich projektach lepiej zostać przy Webpacku.