• Autor objave:
  • Kategorija objave:CSS
  • Vrijeme čitanja:2 mins read

BEM (Block – Element – Modifier) je konvencija imenovanja za nazive klasa u HTML-u i CSS-u. Pomaže pri pisanje čistog CSS-a slijedeći neka jednostavna pravila.

Block (blok)

Funkcionalno neovisna komponenta stranice koja se može ponovno koristiti, npr:

  • header
  • container
  • menu
  • checkbox
  • input
  • button

U HTML-u blokovi su predstavljeni atributom klase.

Element

Dio bloka koji nema samostalno značenje i semantički je vezan za svoj blok, npr:

  • header title
  • menu item
  • checkbox caption
  • list item

Modifier

Koriste se za promjenu izgleda ili ponašanja bloka ili elementa, npr:

  • disabled
  • highlighted
  • checked
  • fixed
  • size big
  • color yellow

Označavanje klasa po BEM metodologiji

Blok je komponente najviše razine, na primjer gumb: .btn { }. O ovom bloku treba razmišljati kao o roditelju (parent).

Child items ili elementi mogu se smjestiti unutar bloka i označeni su s 2 donje crtice __ (2 x underscore) iza naziva bloka npr. .btn__price { }.

Modifikatori mogu manipulirati blokom tako da možemo stilizirati određenu komponentu bez nanošenja promjena na potpuno nepovezan modul. To se radi dodavanjem 2 crtice — (2 x hyphens) imenu bloka npr. btn–orange.

/* Blok komponenta */
.btn {}

/* Element koji ovisi o komponenti */ 
.btn__price {}

/* Modifikator koji mijenja stil bloka */
.btn--orange {} 
.btn--big {}

Prednosti

Modularnost

Stilovi blokova nikada ne ovise o drugim elementima na stranici, tako da nema problema s kaskadama u CSS-u. Također je moguće iskoristiti blokove iz jednog projekata za drugi.

Ponovno korištenje

Sastavljanje neovisnih blokova i njihova ponovna inteligentna uporaba smanjuje količinu CSS koda.

Struktura

BEM metodologija daje CSS kodu čvrstu strukturu koja ostaje jednostavna i lako razumljiva čak i nekom tko nije pisao taj kod.

Linkovi