Naming convention

Block name

Block name is a keyword (usually in English) that makes sence what is a block about.
A block name may be composed of several words separated with hyphen.

Block prefix

A block name usually has a prefix that helps to indentify block purpose.

b- (от block)

Prefix for a block with an appearance on a page.

Example
b-menu-horiz
Has concrete appearance on a page.

i- (от include)

This is a prefix for an abstract block that does not exist on its own account but is used to build other blocks.
That is also for a block that does not have an appearance but realize some functionality.

Example
i-menu
You cannot see it on the page. It provides a functionality used by b-menu-horiz and b-menu-vert blocks.

Element name

Full element name is to indentify which block this element belongs to.
Full element name is formed according to this scheme: b-block-name__element-name

Examples

    b-menu-horiz__item
    b-popup__content

Block modifier's name

Full name for a modifier of a block is to indetify which block this modifier belongs to.
Full modifier name of a block is formed accroding to a scheme: b-block-name_modofier-name_modifier-value.

Examples

    b-link_type_pseudo
    b-menu-horiz_type_simple
    b-popup_direction_up

Element modifier's name

Full name for a modifier of an element is to indentify which element (and which block) this modifier belongs to.
Full modifier name of an element is formed according to a scheme: b-block-name__element-name_modifier-name_modifier-value.

Examples

    b-menu-horiz__item_state_current