36
BEM, BEViS Разработка интерфейсов в большом городе Вениамин Тамбурин разработчик интерфейсов

BEM и BEViS. Разработка интерфейсов в большом городе

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: BEM и BEViS. Разработка интерфейсов в большом городе

BEM, BEViSРазработка интерфейсов в большом городе

Вениамин Тамбуринразработчик интерфейсов

Page 2: BEM и BEViS. Разработка интерфейсов в большом городе

История

Page 3: BEM и BEViS. Разработка интерфейсов в большом городе

about.htmlindex.htmlproject/

project.jsproject.css

images/

Page 4: BEM и BEViS. Разработка интерфейсов в большом городе

/* Albums (begin) */ .result .albums .info { padding-right: 8.5em; }

.result .albums .title { float: left; padding-bottom: 0.3em; }/* Albums (end) */

Page 5: BEM и BEViS. Разработка интерфейсов в большом городе

– скрипты и стили раздуваются

– приходится вносить изменения в двух местах

– трудно придумывать уникальные названия

Page 6: BEM и BEViS. Разработка интерфейсов в большом городе

Блоки

Page 7: BEM и BEViS. Разработка интерфейсов в большом городе

b- визуальный блок

с- контрольный блок

i- управляющий блок

g- глобальный модуль

h- вспомогательный блок-хелпер

Page 8: BEM и BEViS. Разработка интерфейсов в большом городе

.b-head { … }.b-head .logo { … }.b-head .logo a { … } .b-head .right { … }

.b-head .info { … }

.b-head .info .exit { … }

Page 9: BEM и BEViS. Разработка интерфейсов в большом городе

Библиотека

Page 10: BEM и BEViS. Разработка интерфейсов в большом городе

index.htmlcss/

yaru.cssyaru-ie.css

js/yaru.js

i/yandex.png

Page 11: BEM и BEViS. Разработка интерфейсов в большом городе

@import url(common.yandex.ru/css/global.css); .b-head .service { … }.b-head .service h1 { … }

Page 12: BEM и BEViS. Разработка интерфейсов в большом городе

Верстка независимыми блокам

Page 13: BEM и BEViS. Разработка интерфейсов в большом городе

• Блоки и элементы описываются классами

• Стили не могут опираться на тэги

• Все имена классов начинаются с имени блока

• В стилях не может быть класса вне блока

Page 14: BEM и BEViS. Разработка интерфейсов в большом городе

•Контекстом:

.b-block {font-style: normal;

}

.b-footer .b-block {font-style: italic;

}

•Постфиксом:

class="b-block b-block-postfix"

Page 15: BEM и BEViS. Разработка интерфейсов в большом городе

common/ css/js/xsl/ 

service/auto/

css/js/xsl/

Page 16: BEM и BEViS. Разработка интерфейсов в большом городе

– Части одного блока разбросаным местам

– Правки блока приходится делать в разных частях проекта

Page 17: BEM и BEViS. Разработка интерфейсов в большом городе

БЭМ

Page 18: BEM и BEViS. Разработка интерфейсов в большом городе
Page 19: BEM и BEViS. Разработка интерфейсов в большом городе

common/block/

b-head-logo/name/

b-head-logo.name.css_theme/

b-head-logo_gray.cssb-head-logo_gray.pngb-head-logo.cssb-head-logo.js

Page 20: BEM и BEViS. Разработка интерфейсов в большом городе

<lego:page><lego:l-head>

<lego:b-head-logo><lego:name/>

</lego:b-head-logo><lego:b-head-tabs type="search"/>

Page 21: BEM и BEViS. Разработка интерфейсов в большом городе
Page 22: BEM и BEViS. Разработка интерфейсов в большом городе

<xsl:template match = "*" ><Tag>

<xsl:attribute name="name"> <xsl:value-of select="name(.)"/> </xsl:attribute>

</Tag></xsl:template>

Page 23: BEM и BEViS. Разработка интерфейсов в большом городе
Page 24: BEM и BEViS. Разработка интерфейсов в большом городе

BEMHTML

Page 25: BEM и BEViS. Разработка интерфейсов в большом городе

Входные данные:

{ block: 'menu' }

Декларация BEMHTML:

block menu, tag: 'ul' 

Page 26: BEM и BEViS. Разработка интерфейсов в большом городе

Библиотека:

block button {tag: 'button'content: 'Submit'

}

Проект:

block button, mix: [{ block: 'link' }

Page 27: BEM и BEViS. Разработка интерфейсов в большом городе

Входные данные:

{ block: ‘button’ }

Результат:

<button class="button link">Submit</button> 

Page 28: BEM и BEViS. Разработка интерфейсов в большом городе

– Неудобный синтаксис BEMHTML

– Непредсказуемая работа доопределенного на проекте блока

– Абсолютно независимые блоки на самом деле не являются таковыми

Page 29: BEM и BEViS. Разработка интерфейсов в большом городе

BEViS

Page 30: BEM и BEViS. Разработка интерфейсов в большом городе

– Нет специального языка шаблонизатора

– Нет миксинов

– Нет доопределения блоков

– Ресет каждого блока

Page 31: BEM и BEViS. Разработка интерфейсов в большом городе

bt.match(‘menu', function (ctx) {ctx.setTag(‘li');

});

Page 32: BEM и BEViS. Разработка интерфейсов в большом городе

{block: ‘button’,view: ‘shadow’

}

.button_normal-shadow {skin-common();skin-shadow();

}

Page 33: BEM и BEViS. Разработка интерфейсов в большом городе

<div class="button _pressed"/>

button._pressed {background-color: yellow;

}

Page 34: BEM и BEViS. Разработка интерфейсов в большом городе

ru.bem.info/method

github.com/bevis-ui/docs

github.com/enb-make/enb

Page 35: BEM и BEViS. Разработка интерфейсов в большом городе

2014.codefest.ru

Page 36: BEM и BEViS. Разработка интерфейсов в большом городе

Спасибо!

Вениамин Тамбуринразработчик интерфейсов