<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Блок, Элемент, Модификатор (БЭМ, BEM)</title>
    <description/>
    <link>http://clubs.ya.ru/bem/</link>
    <image>
      <url>http://avatars.yandex.net/get-avatar/4611686018427404475/fafd28088ef704b6fd192c4555d9d85f.3113-middle</url>
      <title>Блок, Элемент, Модификатор (БЭМ, BEM)</title>
      <link>http://clubs.ya.ru/bem/</link>
    </image>
    <language>ru-RU</language>
    <pubDate>Wed, 01 Feb 2012 11:37:23 +0400</pubDate>
    <lastBuildDate>Wed, 01 Feb 2012 11:37:23 +0400</lastBuildDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>ya.ru:4611686018427404475 ya.ru:normal ya.ru:public</generator>
    <item>
      <title>Новое в мире БЭМ за последнее время</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1247</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1247</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1247</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;h2 style="font-size:130%;margin-top:1em;"&gt;Социальщина&lt;/h2&gt;&lt;p&gt;Мы сделали &lt;a href="http://www.facebook.com/groups/209713935765634/"&gt;группу в Facebook&lt;/a&gt;, присылайте заявки.&lt;/p&gt;&lt;h2 style="font-size:130%;margin-top:1em;"&gt;Актуальные задачи&lt;/h2&gt;&lt;p&gt;В трекере библиотеки bem-bl всегда есть задачи. Сейчас важно перевести существующую документацию на английский, вот список тасков: &lt;a href="https://github.com/bem/bem-bl/issues?labels=RU-EN+translation&amp;amp;sort=created&amp;amp;direction=desc&amp;amp;state=open&amp;amp;page=1"&gt;https://github.com/bem/be&lt;wbr/&gt;m-bl/issues?labels=RU-EN+&lt;wbr/&gt;translation&amp;amp;sort=created&amp;amp;&lt;wbr/&gt;direction=desc&amp;amp;state=open&lt;wbr/&gt;&amp;amp;page=1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Workflow работы такой:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Вы делаете себе fork &lt;a href="https://github.com/bem/bem-bl"&gt;репозитория bem-bl&lt;/a&gt;&lt;br/&gt;&lt;a href="http://help.github.com/fork-a-repo/"&gt;Инструкция про Fork&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Правите (или создаёте) документацию на английском (в ветке master)&lt;br/&gt;Английское описание блоков, элементов и модификаторах лежит в файлах *.en.title.txt&lt;br/&gt;и *.en.wiki этих блоков, элементов и модификаторов.&lt;/li&gt;&lt;li&gt;Пушите изменения в свой fork&lt;/li&gt;&lt;li&gt;Делаете Pull Request, чтобы ваши изменения были приняты в основном репозитории&lt;br/&gt;&lt;a href="http://help.github.com/send-pull-requests/"&gt;Инструкция про Pull Request'ы&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 style="font-size:130%;margin-top:1em;"&gt;Вакансия&lt;/h2&gt;&lt;p&gt;У нас в команде есть &lt;a href="http://company.yandex.ru/job/vacancies/dev_group_interface.xml"&gt;вакансия разработчика интерфейсов&lt;/a&gt;. Но сначала надо сделать Pull Request.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Wed, 01 Feb 2012 11:37:23 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>новости</category>
      <category>задачи</category>
      <category>вакансия</category>
    </item>
    <item>
      <title>Что такое БЭМ?</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1220</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1220</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1220</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;b class="b-user"&gt;&lt;a href="http://toivonens.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;t&lt;/font&gt;&lt;font color="#000000"&gt;oivonens&lt;/font&gt;&lt;/a&gt;&lt;/b&gt; поделилась ссылкой&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Большая статья о том, что такое БЭМ. С картинками.&lt;br/&gt;Отныне изучение БЭМ рекомендуется начинать с прочтения этой статьи.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Mon, 21 Nov 2011 16:54:47 +0400</pubDate>
      <category>ya.ru:link</category>
      <category>ya.ru:author:14441195</category>
      <category>теория</category>
    </item>
    <item>
      <title>Использование вертикального меню b-menu-vert</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1216</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1216</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1216</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://bem.github.com/bem-bl/sets/common-desktop/b-menu-vert/b-menu-vert.ru.html"&gt;Блок &lt;tt&gt;b-menu-vert&lt;/tt&gt;&lt;/a&gt; - это меню с вертикальной ориентацией.&lt;/p&gt;&lt;p&gt;На &lt;a href="http://bem.github.com/bem-bl/sets/common-desktop/b-menu-vert/b-menu-vert.ru.html"&gt;странице документации блока&lt;/a&gt; видно, что у блока есть разные элементы. Но не все они обязательны к использованию.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Простое вертикальное меню&lt;/h2&gt;&lt;p&gt;В простейшем случае в BEMJSON достаточно объявить блок и перечислить его элементы &lt;tt&gt;item&lt;/tt&gt; в свойстве &lt;tt&gt;content&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Index'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Contacts'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;p&gt; В получившемся HTML появляются не только узлы для блока и явно заданных элементов &lt;tt&gt;item&lt;/tt&gt;, но и разметка для элементов &lt;tt&gt;layout&lt;/tt&gt; и &lt;tt&gt;layout-unit&lt;/tt&gt;. Эти элементы отвечают за геометрическую отрисовку блока.&lt;/p&gt;&lt;p&gt;В качестве контента элементов &lt;tt&gt;item&lt;/tt&gt; в простых случаях используются ссылки:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://yandex.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Index'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://google.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Backyard'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Кроме того, у одного из элементов &lt;tt&gt;item&lt;/tt&gt; может быть модификатор &lt;tt&gt;{ state : 'current' }&lt;/tt&gt;, отмечающий выделенный пункт меню. Модификатор используется как для визуального выделения пункта при помощи CSS-правил для этого модификатора, так и для описания функционального поведения.&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://yandex.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Index'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://google.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Backyard'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;В BEMJSON описании меню может быть указано свойство &lt;tt&gt;title&lt;/tt&gt;, задающее элемент &lt;tt&gt;title&lt;/tt&gt; для заголовка меню:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  title&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'title'&lt;/span&gt;,&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Menu title'&lt;/span&gt;&lt;br/&gt;  },&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://yandex.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Index'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://google.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Backyard'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Предусмотрена и возможность создания пустого элемента списка для отделения одних пунктов меню от других. За это отвечает элемент &lt;tt&gt;separator&lt;/tt&gt;.&lt;br/&gt; На уровне переопределения проекта можно задать CSS-правила для такого элемента. Чаще всего его представляют в виде горизонтальной черты.&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://yandex.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Index'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'separator'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://google.com'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Backyard'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-menu-vert/examples/10-b-menu-vert_simple.bemjson.js"&gt;Пример простого меню со ссылками&lt;/a&gt; содержится и в рпепозитории библиотеки bem-bl.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Вертикальное js-меню с псевдо-ссылками&lt;/h2&gt;&lt;p&gt;Если вместо ссылок нужно использовать псевдо-ссылки, BEMJSON меню должен отличаться содержанием элементов &lt;tt&gt;item&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'state'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods &lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'First point'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods &lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;},&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Second point'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Кроме внешнего вида, js-меню отличается и клиентской функциональностью: оно способно по клику левой кнопкой мыши переключать соответствующий пункт меню в состояние &lt;tt&gt;{ state : 'current' }&lt;/tt&gt; и генерировать на js-объекте, соответствующем блоку, событие о факте переключения пункта меню.&lt;br/&gt; Для использования этой функциональности необходимо определить, где у меню будут расположены элементы &lt;tt&gt;item-selector&lt;/tt&gt;, реагирующие на клик. Эти элементы нарочно сделаны несовпадающими с элементами &lt;tt&gt;item&lt;/tt&gt;, потому что чаще всего сам пункт меню больше по размеру, чем его активная область.&lt;br/&gt; Элемент &lt;tt&gt;item-selector&lt;/tt&gt; можно использовать как сам по себе, так и примешивая его к другим элементам или блокам. В данном случае можно сделать &lt;tt&gt;mix&lt;/tt&gt; с псевдо-ссылками:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'state'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods &lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;        mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-selector'&lt;/span&gt;}],&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'First point'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods &lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;},&lt;br/&gt;        mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-selector'&lt;/span&gt;}],&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Second point'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-menu-vert/examples/20_b-menu-vert_js.bemjson.js"&gt;Пример простого вертикального js-меню&lt;/a&gt; есть в папке блока в библиотеке bem-bl.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Вертикальное js-меню со сложным контентом&lt;/h2&gt;&lt;p&gt;Пункты меню могут содержать не один, а несколько блоков. В библиотеке bem-bl &lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-menu-vert/examples/30_b-menu-vert_js-complex.bemjson.js"&gt;есть пример&lt;/a&gt; такого меню. Его пункты помимо ссылок содержат иконки.&lt;/p&gt;&lt;p&gt;Поскольку реакция на клик необходима для всего содержания пункта меню, элемент &lt;tt&gt;item-selector&lt;/tt&gt; используется в таком случае в явном виде, являясь контейнером для содержания пункта меню. В этом случае он представлен в DOM-дереве узлом &lt;tt&gt;span&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-selector'&lt;/span&gt;,&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;      {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods &lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;        mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-selector'&lt;/span&gt;}],&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;          {&lt;br/&gt;            block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-icon'&lt;/span&gt;,&lt;br/&gt;            url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://yandex.st/lego/_/&lt;wbr/&gt;Kx6F6RQnQFitm0qRxX7vpvfP0&lt;wbr/&gt;K0.png'&lt;/span&gt;,&lt;br/&gt;            alt&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Yandex favicon'&lt;/span&gt;&lt;br/&gt;          },&lt;br/&gt;          {&lt;br/&gt;            elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt;,&lt;br/&gt;            content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Second point'&lt;/span&gt;&lt;br/&gt;          }&lt;br/&gt;        ]&lt;br/&gt;      },&lt;br/&gt;      &lt;span style="color:#ba2121;"&gt;' One more element here'&lt;/span&gt;&lt;br/&gt;    ]&lt;br/&gt;  }&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Раскрывающееся вертикальное js-меню&lt;/h2&gt;&lt;p&gt;Переключение активного пункта меню - не единственная реализованная динамическая функциональность. Пункты меню также могут содержать элементы &lt;tt&gt;trigger&lt;/tt&gt;, клик по которым открывает или скрывает дочерний контент. С помощью таких элементов можно реализовать скрывающиеся вложенные меню.&lt;/p&gt;&lt;p&gt;Так же, как и элемент &lt;tt&gt;item-selector&lt;/tt&gt;, элемент &lt;tt&gt;trigger&lt;/tt&gt; может использоваться не явно, а через &lt;tt&gt;mix&lt;/tt&gt;.&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Videos'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { pseudo&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;, inner&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;},&lt;br/&gt;        mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'trigger'&lt;/span&gt;],&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;          {&lt;br/&gt;            block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-icon'&lt;/span&gt;,&lt;br/&gt;            mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'trigger-icon'&lt;/span&gt; }],&lt;br/&gt;            alt&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'trigger'&lt;/span&gt;&lt;br/&gt;          },&lt;br/&gt;          {&lt;br/&gt;            elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt;,&lt;br/&gt;            content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Images'&lt;/span&gt;&lt;br/&gt;          }&lt;br/&gt;        ]&lt;br/&gt;      },&lt;br/&gt;      &lt;span style="color:#ba2121;"&gt;'item-content'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-content'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;          block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;,&lt;br/&gt;          mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'type'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'submenu'&lt;/span&gt; },&lt;br/&gt;          content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;            {&lt;br/&gt;              elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;              content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Any size'&lt;/span&gt;&lt;br/&gt;            },&lt;br/&gt;            {&lt;br/&gt;              elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;              content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Large'&lt;/span&gt;&lt;br/&gt;            },&lt;br/&gt;            {&lt;br/&gt;              elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;              content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Medium'&lt;/span&gt;&lt;br/&gt;            }&lt;br/&gt;          ]&lt;br/&gt;        }&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'News'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    }&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Кроме элемента &lt;tt&gt;item-selector&lt;/tt&gt; здесь используется свойство &lt;tt&gt;item-content&lt;/tt&gt;, описывающее элемент &lt;tt&gt;item-content&lt;/tt&gt; с содержанием, которое показывается или скрывается в зависимости от кликов по элементу &lt;tt&gt;item-selector&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Элемент &lt;tt&gt;trigger-icon&lt;/tt&gt; используется только для обозначения иконки. На &lt;a href="https://github.com/bem/bem-bl/tree/master/blocks-desktop/b-menu-vert/examples/40_b-menu-vert_trigger.blocks"&gt;уровне переопределения соответствующего примера&lt;/a&gt; в bem-bl &lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-menu-vert/examples/40_b-menu-vert_trigger.blocks/b-menu-vert/__trigger/b-menu-vert__trigger.css"&gt;реализованы CSS-правила&lt;/a&gt;, показывающие одну иконку для триггера с открытым состоянием и другую для триггера с закрытым состоянием.&lt;/p&gt;&lt;p&gt;По умолчанию элемент &lt;tt&gt;trigger&lt;/tt&gt; не содержит модификатора &lt;tt&gt;state&lt;/tt&gt;, а элемент &lt;tt&gt;item-content&lt;/tt&gt; не содержит модификатора &lt;tt&gt;visibility&lt;/tt&gt;. В этом состоянии содержание элемента &lt;tt&gt;item-content&lt;/tt&gt; не видно.&lt;br/&gt; При клике на элементе &lt;tt&gt;trigger&lt;/tt&gt; левой кнопкой мыши он приобретает модификатор &lt;tt&gt;{ state : 'opened' }&lt;/tt&gt;. Элемент &lt;tt&gt;item-content&lt;/tt&gt; в это же время приобретает модификатор &lt;tt&gt;{ visibility : 'visible' }&lt;/tt&gt; и становится виден на странице.&lt;/p&gt;&lt;p&gt;Если нужно сразу показать вложенное меню раскрытым, эти модификаторы следует явно задать в BEMJSON-описании блока:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { pseudo&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;, inner&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;},&lt;br/&gt;  mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-vert'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'trigger'&lt;/span&gt;, elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'opened'&lt;/span&gt; }}],&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    ...&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;&lt;span style="color:#ba2121;"&gt;'item-content'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;  elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-content'&lt;/span&gt;,&lt;br/&gt;  elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { visibility&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'visible'&lt;/span&gt;},&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; ...&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;В библиотеке bem-bl также есть &lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-menu-vert/examples/50_b-menu-vert_trigger-deep.bemjson.js"&gt;пример меню с неоднократной вложенностью триггеров&lt;/a&gt;.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Вложенные меню&lt;/h2&gt;&lt;p&gt;BEMJSON позволяет вкладывать одни блоки в другие. Содержанием пункта меню может быть другое меню, и тогда естественным образом образуется вложенность.&lt;br/&gt; Такое использование меню создаст в DOM-дереве два блока (и два узла &lt;tt&gt;ul&lt;/tt&gt;), которые будут вести себя соответственно.&lt;/p&gt;&lt;p&gt;Если есть необходимость визуально представить меню как вложенное, но функционально - как один блок (например, со сквозным поведением активного пункта меню), нужно воспользоваться элементом &lt;tt&gt;submenu&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Элемент &lt;tt&gt;submenu&lt;/tt&gt; должен содержаться в элементе &lt;tt&gt;item-content&lt;/tt&gt; и включать в себя описание элементов &lt;tt&gt;item&lt;/tt&gt; для "подменю".&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-menu-vert/examples/60_b-menu-vert_submenu.bemjson.js"&gt;Пример для вложенного меню&lt;/a&gt; в библиотеке bem-bl демонстрирует такое BEMJSON-описание.&lt;/p&gt;&lt;p&gt;Сквозные вложенные меню работают и с триггером, BEMJSON для такого случая можно посмотреть в &lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-menu-vert/examples/70_b-menu-vert_submenu-trigger.bemjson.js"&gt;соответствующем примере&lt;/a&gt;.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 18 Nov 2011 18:56:21 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>библиотека</category>
      <category>b-menu-vert</category>
    </item>
    <item>
      <title>JavaScript реализация горизонтального меню</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1215</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1215</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1215</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;JavaScript реализация блока b-menu-horiz обеспечивает следующее поведение:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;при клике на определённую область (блок) содержащий этот блок пункт меню становится активным, то есть приобретает модификатор &lt;tt&gt;{ state : 'current' }&lt;/tt&gt;.&lt;/li&gt;&lt;li&gt;факт изменения активного пункта меню отражается на уровне событий, чтобы на&lt;br/&gt;этот факт можно было реагироать.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Точно такая же функциональность нужна и для вертикального меню. Поэтому она реализована в блоке-хелпере &lt;tt&gt;i-menu&lt;/tt&gt; (абстрактное меню).&lt;/p&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;p&gt;Для начала рекомендуется ознакомиться с базовыми понятиями JavaScript-реализации в библиотеке bem-bl: &lt;a href="http://bem.github.com/bem-bl/sets/common-desktop/i-bem/i-bem.ru.html"&gt;bem.github.com/.../i-bem.ru.html&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;JavaScript-реализация блока &lt;tt&gt;b-menu-horiz&lt;/tt&gt; в этом случае сводится к декларации блока с указанием базы:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;BEM.DOM.decl({ name&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;, baseBlock&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'i-menu'&lt;/span&gt; });&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Такая запись означает, что все методы и свойства JavaScript-объекта блока будут унаследованы от &lt;tt&gt;i-menu&lt;/tt&gt;.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;JavaScript блока i-menu&lt;/h2&gt;&lt;p&gt;Блок &lt;tt&gt;i-menu&lt;/tt&gt; задекларирован как блок, имеющий DOM-представление:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;BEM.DOM.decl(&lt;span style="color:#ba2121;"&gt;'i-menu'&lt;/span&gt;,&lt;br/&gt;...&lt;br/&gt;)&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;У блока есть динамические и статические методы и свойства.&lt;/p&gt;&lt;p&gt;Наличие статического метода &lt;tt&gt;live&lt;/tt&gt; блока означает, что bem-объект (JavaScript объект в памяти браузера) создаётся не сразу при общей инициализации блоков на странице, а при возникновении определённых условий.&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;live &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;function&lt;/span&gt;() {&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.liveBindTo(&lt;span style="color:#ba2121;"&gt;'item-selector'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'leftclick'&lt;/span&gt;, &lt;span style="color:#008000;font-weight:bold;"&gt;function&lt;/span&gt;(e) {&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.onItemSelectorClick(e);&lt;br/&gt;    });&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;В теле метода использован метод &lt;tt&gt;liveBindTo&lt;/tt&gt;, позволяющий инициализировать блок при возникновении события. В данном случае - при возникновении события &lt;tt&gt;leftclick&lt;/tt&gt; на любом из элементов &lt;tt&gt;item-selector&lt;/tt&gt; блока.&lt;br/&gt; Использование события &lt;tt&gt;leftclick&lt;/tt&gt; (вместо &lt;tt&gt;click&lt;/tt&gt;) позволяет реагировать только на клик левой кнопкой мыши. Такая возможность предоставляется специалиным плагином для jQuery, реализованным в элементе &lt;tt&gt;&lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-common/i-jquery/__leftclick/i-jquery__leftclick.js"&gt;i-jquery&lt;span style="text-decoration:underline;"&gt;leftclick&lt;/span&gt;&lt;/a&gt;&lt;/tt&gt;.&lt;br/&gt; Callback-функция, переданная в метод, будет исполняться при каждом клике.&lt;/p&gt;&lt;p&gt;Метод &lt;tt&gt;onItemSelectorClick&lt;/tt&gt; относится к конкретному инстансу блока и, соответственно, реализован как динамический метод блока:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;onItemSelectorClick &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;function&lt;/span&gt;(e) {&lt;br/&gt;&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;var&lt;/span&gt; item &lt;span style="color:#666666;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;._getItemByEvent(e);&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.setMod(item, &lt;span style="color:#ba2121;"&gt;'state'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;В результате работы этого метода соответствующий пункт меню приобретает модификатор &lt;tt&gt;{ state : 'current' }&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Для вычисления соответствующего пункта меню используется метод &lt;tt&gt;_getItemByEvent&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;_getItemByEvent &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;function&lt;/span&gt;(e) {&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;return&lt;/span&gt; e.data.domElem.closest(&lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.buildSelector(&lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;));&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Поскольку клик случается не на элементе &lt;tt&gt;item&lt;/tt&gt;, его нужно вычислять относительно элемента, на котором возникло событие.&lt;br/&gt; Необходимость слушать событие не на элементе &lt;tt&gt;item&lt;/tt&gt;, а на содержащемся в нём элементе &lt;tt&gt;item-selector&lt;/tt&gt; продиктована тем, что элемент &lt;tt&gt;item&lt;/tt&gt; чаще всего больше, чем область, которая должна реагировать на клик. Кроме того, использование специального элемента для реакции на клик позволяет при необходимости сделать так, что эта реакция будет лишь у одного из блоков, содержащихся в пункте меню.&lt;/p&gt;&lt;p&gt;При переключении какого-либо пункта меню в активное состояние на bem-объекте блока возникает событие &lt;tt&gt;trigger&lt;/tt&gt;. Код, обеспечивающий это, записан в декларативном стиле в свойстве &lt;tt&gt;onElemSetMod&lt;/tt&gt; блока:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;onElemSetMod &lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;&lt;br/&gt;    &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;&lt;br/&gt;        &lt;span style="color:#ba2121;"&gt;'state'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;&lt;br/&gt;            &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;function&lt;/span&gt;(elem, modName, modVal, oldModVal) {&lt;br/&gt;&lt;br/&gt;                &lt;span style="color:#008000;font-weight:bold;"&gt;if&lt;/span&gt; (oldModVal &lt;span style="color:#666666;"&gt;==&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'disabled'&lt;/span&gt;) &lt;span style="color:#008000;font-weight:bold;"&gt;return&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;                &lt;span style="color:#008000;font-weight:bold;"&gt;var&lt;/span&gt; prev &lt;span style="color:#666666;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.elem(&lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'state'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt;);&lt;br/&gt;                &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;&lt;br/&gt;                    .delMod(prev, &lt;span style="color:#ba2121;"&gt;'state'&lt;/span&gt;)&lt;br/&gt;                    .trigger(&lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt;, {&lt;br/&gt;                        prev    &lt;span style="color:#666666;"&gt;:&lt;/span&gt; prev,&lt;br/&gt;                        current &lt;span style="color:#666666;"&gt;:&lt;/span&gt; elem&lt;br/&gt;                    });&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Эта функция исполняется при любой попытке приобретения элементом &lt;tt&gt;item&lt;/tt&gt; модификатора &lt;tt&gt;state&lt;/tt&gt; в значении &lt;tt&gt;current&lt;/tt&gt; (не только при клике). Например, если существует какой-то другой блок, который в ходе своей работы меняет текущий пункт меню, функция исполнится.&lt;/p&gt;&lt;p&gt;Функция возвращает &lt;tt&gt;false&lt;/tt&gt; в том случае, если данный элемент находится в состоянии &lt;tt&gt;disabled&lt;/tt&gt; (это тоже значение модификатора &lt;tt&gt;state&lt;/tt&gt;). Возвращение функцией значения &lt;tt&gt;false&lt;/tt&gt; отменяет установку модификатора. То есть неактивный пункт меню не может стать выделенным.&lt;/p&gt;&lt;p&gt;В результате работы функции при каждом переключении активного пункта меню на блоке возникает событие &lt;tt&gt;trigger&lt;/tt&gt; с данными о предыдущем и текущем активном пункте меню. Это событие может слушать другой блок, и по факту возникновения этого события выполнять какие-либо действия.&lt;br/&gt; Например, при клике на пункты меню можно загружать информацию по AJAX и менять контент в другой части страницы.&lt;/p&gt;&lt;p&gt;Дополнительная информация по JavaScript-реализациям в библиотеке bem-bl:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1154"&gt;Мастер-класс "JavaScript в БЭМ-терминах" на YAC2011&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=900"&gt;Доклад "i-bem.js - блок, помогающий делать другие блоки"&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Wed, 16 Nov 2011 14:16:31 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>библиотека</category>
      <category>javascript</category>
      <category>b-menu-horiz</category>
      <category>i-menu</category>
    </item>
    <item>
      <title>Использование и реализация блока b-menu-horiz</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1214</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1214</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1214</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Блок b-menu-horiz создаёт HTML-разметку для горизонтального меню. Кроме того, у блока есть JavaScript-функциональность, позволяющая создавать скрипты с реакцией на выбор пункта меню.&lt;/p&gt;&lt;p&gt;Сложность HTML-разметки меню зависит от модификатора, с которым используется блок.&lt;/p&gt;&lt;p&gt;Реализован модификатор блока &lt;tt&gt;layout&lt;/tt&gt; с тремя возможными значениями:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;normal&lt;/li&gt;&lt;li&gt;complex&lt;/li&gt;&lt;li&gt;simple&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Без модификатоора &lt;tt&gt;layout&lt;/tt&gt; блок использоваться не может.&lt;/p&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;h2 style="font-size:150%;"&gt;Простое горизонтальное меню&lt;/h2&gt;&lt;p&gt;Входные данные для блока с любым из этих модификаторов похожи: нужно описать блок, модификатор &lt;tt&gt;layout&lt;/tt&gt;, в качестве свойства &lt;tt&gt;content&lt;/tt&gt; блока перечислить пункты меню, которые выражаются элементами &lt;tt&gt;item&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'normal'&lt;/span&gt; },&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Home'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Office'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Содержанием элементов меню может быть что угодно: ссылки на страницы, псевдо-ссылки, иконки и вообще любые блоки. В примере выше каждый пункт меню - это просто строка текста.&lt;/p&gt;&lt;p&gt;Такое же меню со ссылками будет выглядеть следующим образом:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'normal'&lt;/span&gt; },&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Home'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/office'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Office'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Кроме того, у одного из пунктов меню может быть указан модификатор &lt;tt&gt;{ state: 'current' }&lt;/tt&gt;, этот модификатор помечает текущий пункт меню.&lt;br/&gt; На своём уровне переопределения можно реализовать для такого модификатора CSS-правила, по которым текущий пункт меню будет визуально отличаться от остальных.&lt;/p&gt;&lt;p&gt;У меню также может быть необязательное свойство &lt;tt&gt;title&lt;/tt&gt;, содержащее описание элемента &lt;tt&gt;title&lt;/tt&gt; - заголовка меню.&lt;br/&gt; Для меню с заголовком BEMJSON будет такой:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'normal'&lt;/span&gt; },&lt;br/&gt;  title&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'title'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Navigation:'&lt;/span&gt;&lt;br/&gt;  },&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Home'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/office'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Office'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;h2 style="font-size:150%;"&gt;Горизонтальное меню с клиентской функциональностью&lt;/h2&gt;&lt;p&gt;Не всегда меню на сайте подразумевает ссылки, уводящие пользователя на другую страницу. Меню может использоваться и для клиентского JavaScript-приложения. В этом случае содержанием пунктов меню обычно бывают псевдо-ссылки:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'normal'&lt;/span&gt; },&lt;br/&gt;  title&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'title'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Navigation:'&lt;/span&gt;&lt;br/&gt;  },&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Home'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/office'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Office'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Приведённый выше BEMJSON блока обеспечит нужный внешний вид.&lt;br/&gt; Кроме этого нужно, чтобы у меню были области, реагирующие на клик. В данном случае они совпадают с псевдо-ссылками, поэтому можно применить смешивание блоков (&lt;tt&gt;mix&lt;/tt&gt;) :&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'normal'&lt;/span&gt; },&lt;br/&gt;  title&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'title'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Navigation:'&lt;/span&gt;&lt;br/&gt;  },&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;        mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;, elem &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-selector'&lt;/span&gt; }],&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Home'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;        mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;        mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [{ block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;, elem &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item-selector'&lt;/span&gt; }],&lt;br/&gt;        url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/office'&lt;/span&gt;,&lt;br/&gt;        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Office'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;JavaScript код блока реализован так, что активный пункт меню переключается при клике левой кнопкой мыши на соответствующем элементе &lt;tt&gt;item-selector&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;При явном использовании этот элемент представлен в DOM в виде span, в который можно положить блоки, составляющие пункт меню. Если же содержание пункта меню состоит всего из одного блока (как в примере с псевдо-ссылками), для экономии разметки разумно применять &lt;tt&gt;mix&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Кроме того, что соответствующий элемент &lt;tt&gt;item&lt;/tt&gt; в результате клика приобретает модификатор &lt;tt&gt;{ state : 'current' }&lt;/tt&gt;, на bem-объекте блока возникает событие &lt;tt&gt;current&lt;/tt&gt;, сопровождающееся данными о текущем и предыдущем активных пунктах.&lt;br/&gt; В своём JavaScript-приложении можно реагировать на это событие.&lt;/p&gt;&lt;p&gt;В HTML по умолчанию блок представлен как имеющий JavaScript-реализацию (он смешан с блоком &lt;tt&gt;i-bem&lt;/tt&gt; и имеет соответствующие параметры в атрибуте &lt;tt&gt;onclick&lt;/tt&gt;). Но если в блоке отсутствуют элементы &lt;tt&gt;item-selector&lt;/tt&gt;, bem-объект блока не создаётся.&lt;br/&gt; Примешивание блока &lt;tt&gt;i-bem&lt;/tt&gt; можно устранить, если указать свойство &lt;tt&gt;js&lt;/tt&gt; блока как &lt;tt&gt;false&lt;/tt&gt;:&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Меню без подмешивания блока i-bem&lt;/h2&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;,&lt;br/&gt;  js&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;false&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'normal'&lt;/span&gt; },&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Home'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/office'&lt;/span&gt;, content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Office'&lt;/span&gt;&lt;br/&gt;      }&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;h2 style="font-size:150%;"&gt;Горизонтальное меню с табличной разметкой&lt;/h2&gt;&lt;p&gt;Использование блока с модификатором &lt;tt&gt;{ layout: 'complex' }&lt;/tt&gt; принципиально ничем не отличается. Для блока в такой модификации создаётся разметка на основе таблицы. Такое решение может потребоваться при некоторых дизайнах.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Аскетичное горизонтальное меню&lt;/h2&gt;&lt;p&gt;В некоторых случаях для вывода меню не нужны даже DOM-узлы списка, а достаточно просто перечислить ссылки, разделив их пробелом, запятой или каким-либо специальным символом.&lt;/p&gt;&lt;p&gt;Для вывода такого меню подходит реализация с модификатором &lt;tt&gt;{ layout : 'simple' }&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;  block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-menu-horiz'&lt;/span&gt;,&lt;br/&gt;  mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'simple'&lt;/span&gt; },&lt;br/&gt;  separator&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;' | '&lt;/span&gt;,&lt;br/&gt;  content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { state&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'current'&lt;/span&gt; },&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Home'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    {&lt;br/&gt;      elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'item'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;      block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;      url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/'&lt;/span&gt;,&lt;br/&gt;      content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Products'&lt;/span&gt;&lt;br/&gt;    },&lt;br/&gt;    ...&lt;br/&gt;  ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;BEMJSON меню отличается наличием свойства &lt;tt&gt;separator&lt;/tt&gt; - того самого специального символа, который разделяет пункты меню.&lt;br/&gt; Активный пункт меню в данном примере представлен в виде простого текста в теге &lt;tt&gt;span&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Примеры всех описанных здесь применений блока &lt;tt&gt;b-menu-horiz&lt;/tt&gt; можно найти в директории блока в репозитории библиотеки bem-bl: &lt;a href="https://github.com/bem/bem-bl/tree/master/blocks-desktop/b-menu-horiz/examples"&gt;bem.github.com/bem-bl/.../b-menu-horiz/examples&lt;/a&gt;.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Wed, 09 Nov 2011 15:51:32 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>библиотека</category>
      <category>b-menu-horiz</category>
    </item>
    <item>
      <title>Конспект мастер-класса "Тема для WordPress в БЭМ" на YaC</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1188</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1188</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1188</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;У меня есть мечта. Вообще у меня их много, но сейчас я хочу поделится одной&lt;br/&gt;из них. Так вот, моя мечта в том, чтобы научится работать с BEM.&lt;br/&gt;&lt;br/&gt;На YaC я был на мастер классах, но там я понял недостаточно чтобы&lt;br/&gt;использовать BEM.&lt;br/&gt;&lt;br/&gt;На днях у меня  был очередной подход к этой Методологии — я повторил&lt;br/&gt;своими руками почти все что показал  &lt;b class="b-user"&gt;&lt;a href="http://tadatuta.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;t&lt;/font&gt;&lt;font color="#000000"&gt;adatuta&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;  в &lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1151"&gt;своем мастер-классе&lt;/a&gt; на&lt;br/&gt;конференции YaC.&lt;br/&gt;&lt;br/&gt;У меня так получается, что я гораздо лучше понимаю что-нибудь, когда я про&lt;br/&gt;это рассказываю, поэтому я записал все свои действия. В итоге у меня получился&lt;br/&gt;небольшой текст про BEM с самого начала. Этот текст почти полностью&lt;br/&gt;повторяет все что показал &lt;b class="b-user"&gt;&lt;a href="http://tadatuta.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;t&lt;/font&gt;&lt;font color="#000000"&gt;adatuta&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;.&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Мой рабочий компьютер — это linux машина. На десктопе я использую&lt;br/&gt;Ubuntu 10.04 LTS и я считаю это очень удобным и правильным. В большинстве&lt;br/&gt;док рассказывается как работать с BEM с мака, с линукса все очень похоже,&lt;br/&gt;но есть небольшие различия.&lt;br/&gt;&lt;br/&gt;Я поставил перед собой следующие цель создать самое элементарное приложение&lt;br/&gt;на BEM. В своем докладе  &lt;b class="b-user"&gt;&lt;a href="http://tadatuta.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;t&lt;/font&gt;&lt;font color="#000000"&gt;adatuta&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;  рассказывал о создании темы для wordpress.&lt;br/&gt;Но поднимать веб сервер с wordpress на своей машине я не стал. Ограничился&lt;br/&gt;тем что у меня просто создаются php файлы.&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Установка необходимых штук&lt;/h2&gt;&lt;br/&gt;&lt;br/&gt;Для работы BEM нужен node.js, на убунту он ставится очень просто:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ sudo add-apt-repository ppa:chris-lea/node.js&lt;br/&gt;$ sudo apt-get update&lt;br/&gt;$ sudo apt-get install nodejs&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Проверяю что эта балалайка работает. Создаю файл hello.js со следующим&lt;br/&gt;содержанием:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;    var http = require('http');&lt;br/&gt;    http.createServer(function (req, res) {&lt;br/&gt;      console.log('Request');&lt;br/&gt;      res.writeHead(200, {'Content-Type': 'text/plain'});&lt;br/&gt;      res.end('Hello World\n');&lt;br/&gt;    }).listen(1337, "127.0.0.1");&lt;br/&gt;    console.log('Server running at http://127.0.0.1:1337/');&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Запускаю:&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ node hello.js &lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Захожу браузером, все работает. Зашибенно. =)&lt;br/&gt;&lt;br/&gt;Судя по &lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1018"&gt;шпаргалке к мастерклассу&lt;/a&gt;&lt;br/&gt;нужно использовать пакетный менеджер nodejs - &lt;a href="http://npmjs.org/"&gt;http://npmjs.org/&lt;/a&gt;&lt;br/&gt;Использовать какой-либо другой пакетный менеджер кроме как нативного&lt;br/&gt;дебиановского мне не кажется хорошей идеей, но я тем не менее делаю:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ curl http://npmjs.org/install.sh | sudo sh&lt;br/&gt;$ echo 'export NODE_PATH="'$(npm root -g):$NODE_PATH'"'&amp;gt;&amp;gt;  ~/.bashrc &amp;amp;&amp;amp; . ~/.bashrc&lt;br/&gt;$ sudo npm install -g bem xjst ometajs borschik node-inherit cssp csso&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;В системе появилась команда 'bem', и она работает:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ bem&lt;br/&gt;$ bem --help&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Еще в проекте используется uglifyjs. Чуть-чуть забегаю вперед скажу, что он&lt;br/&gt;у меня не заработал, но ставится на убунту он так:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ sudo add-apt-repository ppa:chris-lea/uglifyjs&lt;br/&gt;$ sudo apt-get update&lt;br/&gt;$ sudo apt-get install uglifyjs&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Поехали! Начал фигичать.&lt;/h2&gt;&lt;br/&gt;&lt;br/&gt;Создаю папку для проекта:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ mkdir ~/bemtest&lt;br/&gt;$ cd ~/bemtest&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Забираю нужные файлы:&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ git clone https://github.com/tadatuta/BEM-on-YaC.git bempress&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;После получения этого репозитория с github проект выглядит так:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.&lt;br/&gt;`-- bempress&lt;br/&gt;    |-- bem&lt;br/&gt;    |   `-- techs&lt;br/&gt;    |       `-- php.js&lt;br/&gt;    |-- make-page&lt;br/&gt;    `-- README.md&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;README.md — понятно, чуть-чуть описания. Для тех кто не знаком с&lt;br/&gt;github, расширение md - это сокращение от markdown, в этом файле можно&lt;br/&gt;использовать &lt;a href="https://github.com/github/markup"&gt;специальный синтаксис&lt;/a&gt;.&lt;br/&gt;make-page — файл для сборки страниц. У меня почему-то не заработал uglifyjs,&lt;br/&gt;поэтому последнюю строку в этом файле я закоментил.&lt;br/&gt;&lt;br/&gt;Дальше заходим в папку — это вот то действие, которое на Яке Володя не&lt;br/&gt;сделал, поэтому не сразу все получилось.&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ cd bempress&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Магическая команда:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ bem create level pages&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;На самом деле она выполняет очень простое действие - просто создает папку&lt;br/&gt;pages и пустой файл pages/.bem/level.js. После выполнения этого действия&lt;br/&gt;структура проекта выглядит так:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.&lt;br/&gt;|-- bem&lt;br/&gt;|   `-- techs&lt;br/&gt;|       `-- php.js&lt;br/&gt;|-- make-page&lt;br/&gt;|-- pages&lt;br/&gt;|   `-- .bem&lt;br/&gt;|       `-- level.js&lt;br/&gt;`-- README.md&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;В папке pages будут находится файлы, которые описывают страницы. Создадим&lt;br/&gt;вот это описание:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ bem create block index -l pages -t bemjson.js&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Это создаст пустой файл pages/index/index.bemjson.js и проект будет&lt;br/&gt;выглядеть так:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.&lt;br/&gt;|-- bem&lt;br/&gt;|   `-- techs&lt;br/&gt;|       `-- php.js&lt;br/&gt;|-- make-page&lt;br/&gt;|-- pages&lt;br/&gt;|   |-- .bem&lt;br/&gt;|   |   `-- level.js&lt;br/&gt;|   `-- index&lt;br/&gt;|       `-- index.bemjson.js&lt;br/&gt;`-- README.md&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Дальше в этот файл впишем следующее описание страницы:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;({  &lt;br/&gt;    block: 'page',&lt;br/&gt;    content: [&lt;br/&gt;    { block: 'header' },&lt;br/&gt;    { block: 'content' },&lt;br/&gt;    { block: 'footer' },&lt;br/&gt;    ]&lt;br/&gt;})&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;В этом описании мы используем 3 блока: header, content, footer, но пока у&lt;br/&gt;нас их нет. Самое время создать:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ bem create block header content footer -l blocks -t php -t css&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Это создает папочку blocks и шаблоны файлов указанных блоков. Структура&lt;br/&gt;проекта:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.&lt;br/&gt;|-- bem&lt;br/&gt;|   `-- techs&lt;br/&gt;|       `-- php.js&lt;br/&gt;|-- blocks&lt;br/&gt;|   |-- content&lt;br/&gt;|   |   |-- content.css&lt;br/&gt;|   |   `-- content.php&lt;br/&gt;|   |-- footer&lt;br/&gt;|   |   |-- footer.css&lt;br/&gt;|   |   `-- footer.php&lt;br/&gt;|   `-- header&lt;br/&gt;|       |-- header.css&lt;br/&gt;|       `-- header.php&lt;br/&gt;|-- make-page&lt;br/&gt;|-- pages&lt;br/&gt;|   |-- .bem&lt;br/&gt;|   |   `-- level.js&lt;br/&gt;|   `-- index&lt;br/&gt;|       `-- index.bemjson.js&lt;br/&gt;`-- README.md&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Файлы *.php пустые, а в css файлах уже есть заготовка, типа такой:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.header&lt;br/&gt;{&lt;br/&gt;    /* ... */&lt;br/&gt;}&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;В файлы *.php пишем какой-нибудь текст. В качестве примера в каждый из этих&lt;br/&gt;файлов я просто написал его имя, а в css файлы тоже пишем что-то&lt;br/&gt;экспериментальное. Дальше - самый интересный этап. Нужно все это собрать.&lt;br/&gt;&lt;br/&gt;Для этого для начала создаем папку куда все это сложится:&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ mkdir ../wp-content/themes/yac/ -p&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;И собираем страницу index (еще раз скажу что в файле make-page я закоментил&lt;br/&gt;вызов uglifyjs, так как он у меня не работал):&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ ./make-page index&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Па-пам! Команда ничего не выдала - все удачно собралось. Проект выглядит &lt;br/&gt;так:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.&lt;br/&gt;|-- bempress&lt;br/&gt;|   |-- bem&lt;br/&gt;|   |   `-- techs&lt;br/&gt;|   |       `-- php.js&lt;br/&gt;|   |-- blocks&lt;br/&gt;|   |   |-- content&lt;br/&gt;|   |   |   |-- content.css&lt;br/&gt;|   |   |   `-- content.php&lt;br/&gt;|   |   |-- footer&lt;br/&gt;|   |   |   |-- footer.css&lt;br/&gt;|   |   |   `-- footer.php&lt;br/&gt;|   |   `-- header&lt;br/&gt;|   |       |-- header.css&lt;br/&gt;|   |       `-- header.php&lt;br/&gt;|   |-- make-page&lt;br/&gt;|   |-- pages&lt;br/&gt;|   |   |-- .bem&lt;br/&gt;|   |   |   `-- level.js&lt;br/&gt;|   |   `-- index&lt;br/&gt;|   |       |-- index.bemdecl.js&lt;br/&gt;|   |       |-- index.bemjson.js&lt;br/&gt;|   |       `-- index.deps.js&lt;br/&gt;|   `-- README.md&lt;br/&gt;`-- wp-content&lt;br/&gt;    `-- themes&lt;br/&gt;        `-- yac&lt;br/&gt;            |-- index.php&lt;br/&gt;            |-- _script.js&lt;br/&gt;            |-- __style.css&lt;br/&gt;            |-- _style.css&lt;br/&gt;            |-- style.css&lt;br/&gt;            |-- __style.ie.css&lt;br/&gt;            |-- _style.ie.css&lt;br/&gt;            `-- style.ie.css&lt;br/&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;В папке bempress/pages/index/ появилось 2 файла index.bemdecl.js и&lt;br/&gt;index.deps.js, а так же в папке wp-content/themes/yac/ появилось много&lt;br/&gt;файлов.&lt;br/&gt;&lt;br/&gt;index.php содержит в себе всю html часть, которая содержится в файлах&lt;br/&gt;header.php, content.php и footer.php и в моем случае выглядит так:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;header&lt;br/&gt;content&lt;br/&gt;footer&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;А файл style.css содержит в себе пожатый css и выглядит так:&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.header{color:#00f}.conte&lt;wbr/&gt;nt{color:red}.footer{colo&lt;wbr/&gt;r:silver} &lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Можно поиграться поменять php и css файлы, а потом пересобрать страницу&lt;br/&gt;index и насладится результатом.&lt;br/&gt;&lt;br/&gt;Так же очень просто создать еще одну страницу.&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ cd bempress/&lt;br/&gt;$ bem create block 404 -l pages -t bemjson.js&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Это команда создает пустой файл pages/404/404.bemjson.js.&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.&lt;br/&gt;|-- bem&lt;br/&gt;|   `-- techs&lt;br/&gt;|       `-- php.js&lt;br/&gt;|-- blocks&lt;br/&gt;|   |-- content&lt;br/&gt;|   |   |-- content.css&lt;br/&gt;|   |   `-- content.php&lt;br/&gt;|   |-- footer&lt;br/&gt;|   |   |-- footer.css&lt;br/&gt;|   |   `-- footer.php&lt;br/&gt;|   `-- header&lt;br/&gt;|       |-- header.css&lt;br/&gt;|       `-- header.php&lt;br/&gt;|-- make-page&lt;br/&gt;|-- pages&lt;br/&gt;|   |-- 404&lt;br/&gt;|   |   `-- 404.bemjson.js&lt;br/&gt;|   |-- .bem&lt;br/&gt;|   |   `-- level.js&lt;br/&gt;|   `-- index&lt;br/&gt;|       |-- index.bemdecl.js&lt;br/&gt;|       |-- index.bemjson.js&lt;br/&gt;|       `-- index.deps.js&lt;br/&gt;`-- README.md&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Пишем туда нечто похожее на index страницу:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;({&lt;br/&gt;    block: 'page',&lt;br/&gt;    content: [&lt;br/&gt;    { block: 'header' },&lt;br/&gt;    { block: 'footer' },&lt;br/&gt;    ]   &lt;br/&gt;})&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;И собираем страницу:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;$ ./make-page 404&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;.&lt;br/&gt;|-- bempress&lt;br/&gt;|   |-- bem&lt;br/&gt;|   |   `-- techs&lt;br/&gt;|   |       `-- php.js&lt;br/&gt;|   |-- blocks&lt;br/&gt;|   |   |-- content&lt;br/&gt;|   |   |   |-- content.css&lt;br/&gt;|   |   |   `-- content.php&lt;br/&gt;|   |   |-- footer&lt;br/&gt;|   |   |   |-- footer.css&lt;br/&gt;|   |   |   `-- footer.php&lt;br/&gt;|   |   `-- header&lt;br/&gt;|   |       |-- header.css&lt;br/&gt;|   |       `-- header.php&lt;br/&gt;|   |-- make-page&lt;br/&gt;|   |-- pages&lt;br/&gt;|   |   |-- 404&lt;br/&gt;|   |   |   |-- 404.bemdecl.js&lt;br/&gt;|   |   |   |-- 404.bemjson.js&lt;br/&gt;|   |   |   `-- 404.deps.js&lt;br/&gt;|   |   |-- .bem&lt;br/&gt;|   |   |   `-- level.js&lt;br/&gt;|   |   `-- index&lt;br/&gt;|   |       |-- index.bemdecl.js&lt;br/&gt;|   |       |-- index.bemjson.js&lt;br/&gt;|   |       `-- index.deps.js&lt;br/&gt;|   `-- README.md&lt;br/&gt;`-- wp-content&lt;br/&gt;    `-- themes&lt;br/&gt;        `-- yac&lt;br/&gt;            |-- 404.php&lt;br/&gt;            |-- index.php&lt;br/&gt;            |-- _script.js&lt;br/&gt;            |-- __style.css&lt;br/&gt;            |-- _style.css&lt;br/&gt;            |-- style.css&lt;br/&gt;            |-- __style.ie.css&lt;br/&gt;            |-- _style.ie.css&lt;br/&gt;            `-- style.ie.css&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;Файл wp-content/themes/yac/404.php выглядит вполне ожидаемо:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;header&lt;br/&gt;footer&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;На этом этот подход к BEM для меня закончился. На &lt;a href="https://github.com/bem/bem-bl"&gt;github есть&lt;/a&gt; небольшая&lt;br/&gt;библиотека блоков и в следующем подходе я планирую подключить эту библиотеку&lt;br/&gt;к этому мега проекту, но пока мне совсем непонятно как это делать.&lt;br/&gt;&lt;br/&gt;Спасибо что дочитали до этого места =)&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 25 Oct 2011 16:22:41 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:35309619</category>
    </item>
    <item>
      <title>Реализация и использование блока i-jquery</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1181</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1181</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1181</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Блок &lt;tt&gt;i-jquery&lt;/tt&gt; помогает подключить jQuery на страницу и упорядочивает хранение js-кода плагинов.&lt;/p&gt;&lt;p&gt;На уровне &lt;tt&gt;blocks-common&lt;/tt&gt; блок i-jquery состоит из нескольких элементов, которые содержат плагины к jQuery. Декларация этих элементов обеспечивает подключение этих плагинов в страничный js.&lt;br/&gt; Более подробно об этих элементах можно посмотреть в блоке &lt;a href="https://github.com/bem/bem-bl/tree/master/blocks-common/i-jquery"&gt;github.com/.../i-jquery&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;На уровне &lt;tt&gt;blocks-desktop&lt;/tt&gt; есть дополнительный элемент &lt;tt&gt;core&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;BEMHTML-реализация этого элемента позволяет подключать на страницы нужную версию библиотеки jQuery.&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;({&lt;br/&gt;    block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-page'&lt;/span&gt;,&lt;br/&gt;    title&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Страница про ссылку'&lt;/span&gt;,&lt;br/&gt;    head&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;        ...&lt;br/&gt;        { block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'i-jquery'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'core'&lt;/span&gt; },&lt;br/&gt;        ...&lt;br/&gt;    ],&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Таким образом, для того, чтобы поддерживаемая версия jQuery оказалась на страницах, нужно использовать такой &lt;tt&gt;bemjson&lt;/tt&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;br/&gt; &lt;span&gt;block&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;&lt;span&gt;'&lt;/span&gt;b-page&lt;span&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;br/&gt; &lt;span&gt;title&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;&lt;span&gt;'&lt;/span&gt;Страница про ссылку&lt;span&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;br/&gt; &lt;span&gt;head&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;[&lt;/span&gt;&lt;br/&gt; &lt;span&gt;.&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;br/&gt; &lt;span&gt;{&lt;/span&gt; &lt;span&gt;block&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;&lt;span&gt;'&lt;/span&gt;i-jquery&lt;span&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;elem&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;&lt;span&gt;'&lt;/span&gt;core&lt;span&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span&gt;}&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;br/&gt; &lt;span&gt;.&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;br/&gt; &lt;span&gt;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Этот шаблон не продуцирует DOM-представление элемента. Он декларирует использование на странице элемента js, блока b-page, подключающего js с jQuery.&lt;/p&gt;&lt;p&gt;Если мы решим перейти на новую версию библиотеки, просто изменим этот шаблон. И тогда у всех проектов, подключавших jQuery не вручную, а через блок &lt;tt&gt;i-jquery&lt;/tt&gt;, своевременно изменится версия.&lt;/p&gt;&lt;p&gt;Можно перезаписать этот шаблон bemhtml-шаблоном на своём уровне переопределения (для всего проекта или только для некоторых страниц). В этом случае, используя те же самые входные данные, можно получать более подходящий проекту результат.&lt;br/&gt; В директории элемента &lt;tt&gt;core&lt;/tt&gt; в виде кода модификаторов элемента размещены совместимые с библиотекой версии jQuery в минимизированном состоянии. При помощи переопределения bemhtml-шаблона такими файлами можно пользоваться для оффлайн-разработки:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;block i&lt;span style="color:#666666;"&gt;-&lt;/span&gt;jquery, elem core, &lt;span style="color:#008000;font-weight:bold;"&gt;default&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;    local(&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;._mode &lt;span style="color:#666666;"&gt;=&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;''&lt;/span&gt;,&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx &lt;span style="color:#666666;"&gt;=&lt;/span&gt; {&lt;br/&gt;            block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-page'&lt;/span&gt;,&lt;br/&gt;            elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'js'&lt;/span&gt;,&lt;br/&gt;            url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'/bem-bl/blocks-desktop/i&lt;wbr/&gt;-jquery/__core/_version/i&lt;wbr/&gt;-jquery__core_version_1.6&lt;wbr/&gt;.2.js'&lt;/span&gt;&lt;br/&gt;        }&lt;br/&gt;    ) &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.apply()&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Mon, 24 Oct 2011 17:45:50 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>блоки</category>
      <category>библиотека</category>
      <category>i-jquery</category>
    </item>
    <item>
      <title>Использование и реализация блока b-layout-table</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1178</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1178</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1178</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Блок &lt;tt&gt;b-layout-table&lt;/tt&gt; — таблица со 100% шириной, для создания раскладки.&lt;br/&gt;&lt;br/&gt;BEMHTML шаблон блока выводит таблицу, строки и ячейки со всеми необходимыми атрибутами.&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;block b&lt;span style="color:#666666;"&gt;-&lt;/span&gt;layout&lt;span style="color:#666666;"&gt;-&lt;/span&gt;table {&lt;br/&gt;    tag&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'table'&lt;/span&gt;&lt;br/&gt;    elem row, tag&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'tr'&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.elem &lt;span style="color:#666666;"&gt;===&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'cell'&lt;/span&gt; &lt;span style="color:#666666;"&gt;||&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.elem &lt;span style="color:#666666;"&gt;===&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'gap'&lt;/span&gt; {&lt;br/&gt;        tag&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'td'&lt;/span&gt;&lt;br/&gt;        attrs&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;&lt;br/&gt;            &lt;span style="color:#008000;font-weight:bold;"&gt;var&lt;/span&gt; ctx &lt;span style="color:#666666;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx,&lt;br/&gt;                a &lt;span style="color:#666666;"&gt;=&lt;/span&gt; {},&lt;br/&gt;                props &lt;span style="color:#666666;"&gt;=&lt;/span&gt; [&lt;span style="color:#ba2121;"&gt;'colspan'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'rowspan'&lt;/span&gt;], p;&lt;br/&gt;&lt;br/&gt;            &lt;span style="color:#008000;font-weight:bold;"&gt;while&lt;/span&gt;(p &lt;span style="color:#666666;"&gt;=&lt;/span&gt; props.shift()) ctx[p] &lt;span style="color:#666666;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (a[p] &lt;span style="color:#666666;"&gt;=&lt;/span&gt; ctx[p]);&lt;br/&gt;&lt;br/&gt;            &lt;span style="color:#008000;font-weight:bold;"&gt;return&lt;/span&gt; a;&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ячейки блока могут быть представлены либо елементом cell, либо элементом gap.&lt;br/&gt;Элемент cell предназначен для вложения контента, а элемент gap служит распоркой.&lt;br/&gt;&lt;br/&gt;Давайте рассмотрим BEMJSON блока:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;    block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-layout-table'&lt;/span&gt;,&lt;br/&gt;    mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { layout&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'58-40'&lt;/span&gt;},&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;        {&lt;br/&gt;            elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'row'&lt;/span&gt;,&lt;br/&gt;            content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;                {&lt;br/&gt;                    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'gap'&lt;/span&gt;,&lt;br/&gt;                    rowspan&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'2'&lt;/span&gt;&lt;br/&gt;                },&lt;br/&gt;                {&lt;br/&gt;                    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'cell'&lt;/span&gt;,&lt;br/&gt;                    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;                        elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt;,&lt;br/&gt;                        content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Left cell'&lt;/span&gt;&lt;br/&gt;                    }&lt;br/&gt;                },&lt;br/&gt;                {&lt;br/&gt;                    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'cell'&lt;/span&gt;,&lt;br/&gt;                    elemMods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { position&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'r'&lt;/span&gt;},&lt;br/&gt;                    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Right cell'&lt;/span&gt;&lt;br/&gt;                }&lt;br/&gt;            ]&lt;br/&gt;        },&lt;br/&gt;        {&lt;br/&gt;            elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'row'&lt;/span&gt;,&lt;br/&gt;            content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;                {&lt;br/&gt;                    elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'cell'&lt;/span&gt;,&lt;br/&gt;                    colspan&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'2'&lt;/span&gt;,&lt;br/&gt;                    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Second row and one cell'&lt;/span&gt;&lt;br/&gt;                }&lt;br/&gt;            ]&lt;br/&gt;        }&lt;br/&gt;    ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;По умолчанию в блоке не задаются ширины ячейкам. Доопределить блок своими стилями можно следующим образом: добавляем модификатор блоку — &lt;tt&gt;mods: { layout: '58-40'}&lt;/tt&gt; и ячейке — &lt;tt&gt; elemMods: { position: 'r'}&lt;/tt&gt;.&lt;br/&gt;Элементом inner оборачиваем контент ячеек, что позволяет задать нужные нам отступы. Далее, используя каскад, задаем нужные нам CSS свойства.&lt;br/&gt;&lt;br/&gt;Вот такой CSS получится к BEMJSON, приведенному выше:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;&lt;span style="color:#0000ff;font-weight:bold;"&gt;.b-layout-table_layout_58-40&lt;/span&gt; &lt;span style="color:#0000ff;font-weight:bold;"&gt;.b-layout-table__cell_position_r&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;width&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#666666;"&gt;40%&lt;/span&gt;;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#0000ff;font-weight:bold;"&gt;.b-layout-table_layout_58-40&lt;/span&gt; &lt;span style="color:#0000ff;font-weight:bold;"&gt;.b-layout-table__gap&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;width&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#666666;"&gt;2%&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;padding-left&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#666666;"&gt;20px&lt;/span&gt;;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#0000ff;font-weight:bold;"&gt;.b-layout-table_layout_58-40&lt;/span&gt; &lt;span style="color:#0000ff;font-weight:bold;"&gt;.b-layout-table__inner&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;margin-right&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#666666;"&gt;0.8em&lt;/span&gt;;&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Обратите внимание, что нельзя задавать самому блоку никаких дополнительных CSS свойств, это может привести к конфликтам в верстке, так как блок может быть использован в реализации других блоков.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Важно:&lt;/strong&gt; использовать блок нужно, задавая ему модификатор или миксируя его с другим блоком/элементом.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 21 Oct 2011 14:10:57 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:40832264</category>
      <category>блоки</category>
      <category>bem</category>
      <category>библиотека</category>
      <category>bemhtml</category>
    </item>
    <item>
      <title>Материалы мастер-классов по БЭМ с YAC2011 на Vimeo</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1176</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1176</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1176</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Видео мастер-классов про БЭМ, проходивших в 3м Зале на конференции YAC 2011, выложены на Vimeo.  Можно смотреть на iOS: через браузер и через приложение.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Владимир Гриненко. &lt;strong&gt;Тема для WordPress в БЭМ.&lt;/strong&gt;&lt;br/&gt;&lt;a href="http://vimeo.com/30838628"&gt;http://vimeo.com/30838628&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Лена Глухова, Варя Степанова. &lt;strong&gt;Дом из готовых кирпичей. Использование библиотеки bem-bl.&lt;/strong&gt;&lt;br/&gt;&lt;a href="http://vimeo.com/30819387"&gt;http://vimeo.com/30819387&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Сергей Бережной. &lt;strong&gt;BEMHTML. Not yet another шаблонизатор.&lt;/strong&gt;&lt;br/&gt;&lt;a href="http://vimeo.com/30814503"&gt;http://vimeo.com/30814503&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Варя Степанова. &lt;strong&gt;JavaScript в БЭМ-терминах.&lt;/strong&gt;&lt;br/&gt;&lt;a href="http://vimeo.com/30817887"&gt;http://vimeo.com/30817887&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Thu, 20 Oct 2011 11:12:57 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>доклад</category>
      <category>видео</category>
      <category>мастер-класс</category>
      <category>yac2011</category>
    </item>
    <item>
      <title>Видео доклада "BEMHTML. Not yet another шаблонизатор" (Питер)</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1172</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1172</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1172</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Видео доклада "BEMHTML. Not yet another шаблонизатор" со &lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1036"&gt;встречи разработчиков в Политехе (Питер)&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Материал аналогичен &lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1153"&gt;одноимённому докладу на конференции YAC2011&lt;/a&gt;, но отличается большой секцией вопросов и ответов.&lt;/p&gt;&lt;p&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="allowscriptaccess" value="always"/&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=30786491&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0"/&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=30786491&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://video.yandex.ru/users/toivonens/view/16/"&gt;Это же видео&lt;/a&gt; опубликовано в &lt;a href="http://video.yandex.ru/users/toivonens/collection/3/"&gt;коллекции БЭМ&lt;/a&gt; на Яндекс.Видео.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Wed, 19 Oct 2011 16:51:44 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>bem</category>
      <category>доклад</category>
      <category>видео</category>
      <category>bemhtml</category>
    </item>
    <item>
      <title>Видео мастер-класса "JavaScript в БЭМ-терминах" (Питер)</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1171</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1171</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1171</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Видео мастер-класса "JavaScript в БЭМ-терминах" со &lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1036"&gt;встречи разработчиков в Политехе (Питер)&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Материал аналогичен одноимённому мастер-классу с YAC2011, но секция вопросов, естественно, отличается.&lt;/p&gt;&lt;p&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="allowscriptaccess" value="always"/&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=30753351&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0"/&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=30753351&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;Для целостности коллекции такой же материал &lt;a href="http://video.yandex.ru/users/toivonens/view/15/#"&gt;опубликован на Яндекс.Видео&lt;/a&gt;.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Wed, 19 Oct 2011 16:33:33 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>видео</category>
      <category>javascript</category>
      <category>мастер-класс</category>
    </item>
    <item>
      <title>Использование и реализация блока i-ua</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1161</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1161</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1161</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Блок &lt;tt&gt;i-ua&lt;/tt&gt; — служебный, у него нет визуального представления на странице. (Название блока — это аббревиатура от  User Agent, и к Украине отношения не имеет).&lt;/p&gt;&lt;p&gt;Этот блок используется всегда, когда используется блок &lt;tt&gt;b-page&lt;/tt&gt;, так как вызывается внутри него. Задавать его самостоятельно на странице не нужно.&lt;/p&gt;&lt;p&gt;В HTML блок представлен в виде инлайнового скрипта, что обеспечивается следующим bemhtml-шаблоном:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;block i&lt;span style="color:#666666;"&gt;-&lt;/span&gt;ua {&lt;br/&gt;    tag&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'script'&lt;/span&gt;,&lt;br/&gt;    bem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;false&lt;/span&gt;,&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;                &lt;span style="color:#ba2121;"&gt;';(function(d,e,c,r){'&lt;/span&gt;,&lt;br/&gt;                    &lt;span style="color:#ba2121;"&gt;'e=d.documentElement;'&lt;/span&gt;,&lt;br/&gt;                    &lt;span style="color:#ba2121;"&gt;'c="className";'&lt;/span&gt;,&lt;br/&gt;                    &lt;span style="color:#ba2121;"&gt;'r="replace";'&lt;/span&gt;,&lt;br/&gt;                    &lt;span style="color:#ba2121;"&gt;'e[c]=e[c][r]("i-ua_js_no","i-ua_js_yes");'&lt;/span&gt;,&lt;br/&gt;                    &lt;span style="color:#ba2121;"&gt;'if(d.compatMode!="CSS1Compat")'&lt;/span&gt;,&lt;br/&gt;                    &lt;span style="color:#ba2121;"&gt;'e[c]=e[c][r]("i-ua_css_s&lt;wbr/&gt;tandard","i-ua_css_quirks&lt;wbr/&gt;")'&lt;/span&gt;,&lt;br/&gt;                &lt;span style="color:#ba2121;"&gt;'})(document);'&lt;/span&gt;&lt;br/&gt;            ].join(&lt;span style="color:#ba2121;"&gt;''&lt;/span&gt;)&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;В результате работы такого JS у тега html появляются CSS-классы, идентифицирующие, включен ли JS и в каком режиме рендеринга находится браузер.&lt;br/&gt; Эти классы можно использовать, чтобы при помощи CSS задавать блокам разный внешний вид в зависимости от ситуации. Например, блоки из bem-bl ориентируются (будут ориентироваться) на эти классы в своей работе.&lt;/p&gt;&lt;p&gt;Если такие классы проекту не нужны, можно переопределить блок i-ua на уровне переопределения проекта:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;block i&lt;span style="color:#666666;"&gt;-&lt;/span&gt;ua, tag&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;''&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Mon, 17 Oct 2011 14:36:39 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>блоки</category>
      <category>библиотека</category>
      <category>bemhtml</category>
      <category>i-ua</category>
    </item>
    <item>
      <title>Использование блока b-link</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1160</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1160</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1160</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Блок &lt;tt&gt;b-link&lt;/tt&gt; — это ссылка с различными модификаторами.&lt;/p&gt;&lt;p&gt;В простом случае для отображения блока необходимо задать следующий bemjson:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;    block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;    url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://company.yandex.ru'&lt;/span&gt;,&lt;br/&gt;    title&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Click here!'&lt;/span&gt;,&lt;br/&gt;    target&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'_blank'&lt;/span&gt;,&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'The best company all over the world'&lt;/span&gt;&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Свойство &lt;tt&gt;url&lt;/tt&gt; преобразуется в атрибут &lt;tt&gt;href&lt;/tt&gt;. Свойства &lt;tt&gt;title&lt;/tt&gt; и &lt;tt&gt;target&lt;/tt&gt; — в соотвествующие атрибуты.&lt;br/&gt; В результате получается такой HTML:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;a&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-link"&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;href=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"http://company.yandex.ru"&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;title=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"Click here!"&lt;/span&gt; &lt;span style="color:#7d9029;"&gt;target=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"_blank"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        The best company all over the world&lt;br/&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;p&gt; Все эти преобразования возможны благодаря bemhtml-шаблону блока:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;block b&lt;span style="color:#666666;"&gt;-&lt;/span&gt;link {&lt;br/&gt;&lt;br/&gt;    tag&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'a'&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    attrs&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;var&lt;/span&gt; ctx &lt;span style="color:#666666;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx,&lt;br/&gt;            a &lt;span style="color:#666666;"&gt;=&lt;/span&gt; { href&lt;span style="color:#666666;"&gt;:&lt;/span&gt; ctx.url },&lt;br/&gt;            props &lt;span style="color:#666666;"&gt;=&lt;/span&gt; [&lt;span style="color:#ba2121;"&gt;'title'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'target'&lt;/span&gt;], p;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;while&lt;/span&gt;(p &lt;span style="color:#666666;"&gt;=&lt;/span&gt; props.shift()) ctx[p] &lt;span style="color:#666666;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (a[p] &lt;span style="color:#666666;"&gt;=&lt;/span&gt; ctx[p]);&lt;br/&gt;&lt;br/&gt;         &lt;span style="color:#008000;font-weight:bold;"&gt;return&lt;/span&gt; a;&lt;br/&gt;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Шаблон по моде &lt;tt&gt;tag&lt;/tt&gt; определяет тег блока — &lt;tt&gt;&amp;lt;a&amp;gt;&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Шаблон по моде &lt;tt&gt;attrs&lt;/tt&gt; копирует контент свойств и передает атрибутам в HTML.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Модификатор — mods: { pseudo: 'yes' }&lt;/h2&gt;&lt;p&gt;Ссылка, подразумевающая действие без перехода на другую страницу. Визуально имеет пунктирное нижнее подчеркивание.&lt;/p&gt;&lt;p&gt;При наличии в bemjson у блока &lt;tt&gt;b-link&lt;/tt&gt; свойства &lt;tt&gt;url&lt;/tt&gt; HTML-тег блока следующий: &lt;tt&gt;&amp;lt;a href="..."&amp;gt;...&amp;lt;/a&amp;gt;&lt;/tt&gt;&lt;br/&gt; При отключенном js происходит переход по ссылке.&lt;/p&gt;&lt;p&gt;Чтобы использовать такую ссылку, нужно задать следующий bemjson:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;    block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;    mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { pseudo&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;    url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://ya.ru'&lt;/span&gt;,&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Pseudo link'&lt;/span&gt;&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Это даст следующий HTML:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;a&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-link b-link_pseudo_yes i-bem"&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;onclick=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"return {'b-link':{}}"&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;href=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"http://ya.ru"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-link__inner"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;gt;&lt;/span&gt;Pseudo link&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ссылка без свойства &lt;tt&gt;url&lt;/tt&gt; представлена в HTML тегом &lt;tt&gt;&amp;lt;span&amp;gt;&lt;/tt&gt;.&lt;br/&gt; В этом случае входные данные (bemjson) будут такими:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;    block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;    mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { pseudo&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Псевдоспан'&lt;/span&gt;&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;span&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-link b-link_pseudo_yes i-bem"&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;onclick=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"return {'b-link':{}}"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-link__inner"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;gt;&lt;/span&gt;Псевдоспан&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;bemhtml-шаблон для блока &lt;tt&gt;b-link&lt;/tt&gt; с модификатором &lt;tt&gt;pseudo&lt;/tt&gt; дополняет основной шаблон на &lt;tt&gt;b-link&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;block b&lt;span style="color:#666666;"&gt;-&lt;/span&gt;link, &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.mods.pseudo {&lt;br/&gt;&lt;br/&gt;    tag&lt;span style="color:#666666;"&gt;:&lt;/span&gt; (&lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx.url&lt;span style="color:#666666;"&gt;?&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'a'&lt;/span&gt; &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'span'&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;    js&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;true&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    attrs, &lt;span style="color:#666666;"&gt;!&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx.url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;return&lt;/span&gt; {}&lt;br/&gt;    },&lt;br/&gt;&lt;br/&gt;    content, &lt;span style="color:#666666;"&gt;!&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx._wrap, &lt;span style="color:#666666;"&gt;!&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.mods.inner&lt;span style="color:#666666;"&gt;:&lt;/span&gt; {&lt;br/&gt;        local(&lt;br/&gt;            &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;._mode &lt;span style="color:#666666;"&gt;=&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;''&lt;/span&gt;,&lt;br/&gt;            &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx &lt;span style="color:#666666;"&gt;=&lt;/span&gt; {&lt;br/&gt;                elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt;,&lt;br/&gt;                content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.ctx.content,&lt;br/&gt;                _wrap&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;true&lt;/span&gt;&lt;br/&gt;            }&lt;br/&gt;        ) &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.apply();&lt;br/&gt;    }&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Шаблон по моде &lt;tt&gt;tag&lt;/tt&gt; в зависимости от наличия свойства &lt;tt&gt;url&lt;/tt&gt; устанавливает в качестве тега либо &lt;tt&gt;&amp;lt;a&amp;gt;&lt;/tt&gt;, либо &lt;tt&gt;&amp;lt;span&amp;gt;&lt;/tt&gt;.&lt;br/&gt; Шаблон по моде &lt;tt&gt;js&lt;/tt&gt; говорит о том, что у блока есть клиентский js.&lt;br/&gt; Шаблон по моде &lt;tt&gt;attrs&lt;/tt&gt; с дополнительным условием остутствия свойства &lt;tt&gt;url&lt;/tt&gt; сбрасывает все атрибуты. Шаблон по моде &lt;tt&gt;content&lt;/tt&gt; с дополнительными условиями — оборачивает контент псевдоссылки в элемент &lt;tt&gt;inner&lt;/tt&gt; всегда, кроме случая, когда у блока есть модификатор &lt;tt&gt;inner&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Чтобы шаблон элемента &lt;tt&gt;inner&lt;/tt&gt; был всегда у псевдоссылки, указываем зависимость в формате deps.js:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;({&lt;br/&gt;    shouldDeps&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;        {&lt;br/&gt;            elems&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt;&lt;br/&gt;        }&lt;br/&gt;    ]&lt;br/&gt;})&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Секция &lt;tt&gt;shouldDeps&lt;/tt&gt; подключает шаблоны на элемент &lt;tt&gt;inner&lt;/tt&gt; после текущего блока.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Элемент — elem: 'inner'&lt;/h2&gt;&lt;p&gt;Опциональный элемент. bemhtml-шаблон элемента &lt;tt&gt;inner&lt;/tt&gt; для блока &lt;tt&gt;b-link&lt;/tt&gt;.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;block&lt;/span&gt; &lt;span&gt;b&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;elem&lt;/span&gt; &lt;span&gt;inner&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;tag&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;&lt;span&gt;'&lt;/span&gt;span&lt;span&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Элемент &lt;tt&gt;inner&lt;/tt&gt; представляется в HTML тегом &lt;tt&gt;&amp;lt;span&amp;gt;&lt;/tt&gt;.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Модификатор — mods: { inner: 'yes' }&lt;/h2&gt;&lt;p&gt;Позволяет добавлять в ссылку &lt;tt&gt;elem: 'inner'&lt;/tt&gt;. Содержит только css, которые переносит подчеркивание с самой ссылки на ее внутренний элемент.&lt;/p&gt;&lt;p&gt;Описание блока с модификатором &lt;tt&gt;inner : yes&lt;/tt&gt; в bemjson:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;    block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;    mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { inner&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;    url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'#'&lt;/span&gt;,&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;        {&lt;br/&gt;            block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-icon'&lt;/span&gt;,&lt;br/&gt;            mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [ { block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'icon'&lt;/span&gt;} ],&lt;br/&gt;            url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://yandex.st/lego/_/&lt;wbr/&gt;Kx6F6RQnQFitm0qRxX7vpvfP0&lt;wbr/&gt;K0.png'&lt;/span&gt;,&lt;br/&gt;            alt&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Иконка Серпа'&lt;/span&gt;&lt;br/&gt;        },&lt;br/&gt;        {&lt;br/&gt;            elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt;,&lt;br/&gt;            content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Ссылка с иконкой'&lt;/span&gt;&lt;br/&gt;        }&lt;br/&gt;    ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Элемент &lt;tt&gt;inner&lt;/tt&gt; в формате bemjson может возникнуть только у ссылки с модификатором &lt;tt&gt;inner : yes&lt;/tt&gt;, поэтому для данного модификатора указываем зависимость в формате &lt;tt&gt;deps.js&lt;/tt&gt; так же, как для модификатора &lt;tt&gt;pseudo: 'yes'&lt;/tt&gt;.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;Одновременное использование модификаторов — mods: { pseudo: 'yes', inner: 'yes' }&lt;/h2&gt;&lt;p&gt;Позволяет указывать элемент &lt;tt&gt;inner&lt;/tt&gt; для псевдоссылки. Пример в формате bemjson:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;{&lt;br/&gt;    block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;,&lt;br/&gt;    mods&lt;span style="color:#666666;"&gt;:&lt;/span&gt; { pseudo&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;, inner&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt; },&lt;br/&gt;    url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://ya.ru'&lt;/span&gt;,&lt;br/&gt;    content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [&lt;br/&gt;        {&lt;br/&gt;            block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-icon'&lt;/span&gt;,&lt;br/&gt;            mix&lt;span style="color:#666666;"&gt;:&lt;/span&gt; [ { block&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'icon'&lt;/span&gt;} ],&lt;br/&gt;            url&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'http://yandex.st/lego/_/&lt;wbr/&gt;Kx6F6RQnQFitm0qRxX7vpvfP0&lt;wbr/&gt;K0.png'&lt;/span&gt;,&lt;br/&gt;            alt&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Иконка Серпа'&lt;/span&gt;&lt;br/&gt;        },&lt;br/&gt;        {&lt;br/&gt;            elem&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'inner'&lt;/span&gt;,&lt;br/&gt;            content&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'Псевдо-ссылка с иконкой'&lt;/span&gt;&lt;br/&gt;        }&lt;br/&gt;    ]&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;a&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-link b-link_pseudo_yes b-link_inner_yes i-bem"&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;onclick=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"return {'b-link':{}}"&lt;/span&gt;&lt;br/&gt;    &lt;span style="color:#7d9029;"&gt;href=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"http://ya.ru"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;img&lt;/span&gt;&lt;br/&gt;            &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-icon b-link__icon"&lt;/span&gt;&lt;br/&gt;            &lt;span style="color:#7d9029;"&gt;src=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"http://yandex.st/lego/_/&lt;wbr/&gt;Kx6F6RQnQFitm0qRxX7vpvfP0&lt;wbr/&gt;K0.png"&lt;/span&gt;&lt;br/&gt;            &lt;span style="color:#7d9029;"&gt;alt=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"Иконка Серпа"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color:#7d9029;"&gt;class=&lt;/span&gt;&lt;span style="color:#ba2121;"&gt;"b-link__inner"&lt;/span&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;gt;&lt;/span&gt;Псевдо-ссылка с иконкой&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#008000;font-weight:bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 style="font-size:150%;"&gt;Модификатор — mods: { disabled: 'yes' }&lt;/h2&gt;&lt;p&gt;Неактивная ссылка или неактивная псевдоссылка.&lt;/p&gt;&lt;h2 style="font-size:150%;"&gt;js реализация блока&lt;/h2&gt;&lt;p&gt;В техногии js реализовано поведение блока с модификатором &lt;tt&gt;pseudo : yes&lt;/tt&gt;: &lt;a href="https://github.com/bem/bem-bl/blob/master/blocks-desktop/b-link/_pseudo/b-link_pseudo_yes.js"&gt;github.com/.../b-link_pseudo_yes.js&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Код написан под ядро клиентского js библиотеки блоков, реализованное в блоке &lt;tt&gt;i-bem&lt;/tt&gt;. (&lt;a href="http://bem.github.com/bem-bl/sets/common-desktop/i-bem/i-bem.ru.html"&gt;bem.github.com/.../i-bem.ru.html&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;Поведение блока описывается декларативно путём передачи параметров в метод &lt;tt&gt;BEM.DOM.decl&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Первый параметр - js-хеш, описывающий, к каким блокам должна быть применена данная js-реализация:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;BEM.DOM.decl({&lt;span style="color:#ba2121;"&gt;'name'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'b-link'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'modName'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'pseudo'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'modVal'&lt;/span&gt;&lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;}, {&lt;br/&gt;...&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;В данном случае указано, что это js-поведение определено для блока &lt;tt&gt;b-link&lt;/tt&gt; с модификатором &lt;tt&gt;pseudo&lt;/tt&gt; в значении &lt;tt&gt;yes&lt;/tt&gt;.&lt;br/&gt; Первым параметром метода также может быть строка с именем блока, если сообщать &lt;tt&gt;modName&lt;/tt&gt; и &lt;tt&gt;modVal&lt;/tt&gt; не нужно.&lt;/p&gt;&lt;p&gt;Второй параметр метода запрашивает хеш динамических методов и свойств блока. В данном случае это только один метод &lt;tt&gt;_onClick&lt;/tt&gt;:&lt;/p&gt;&lt;div style="background:#f8f8f8;"&gt;&lt;pre style="line-height:125%;"&gt;_onClick &lt;span style="color:#666666;"&gt;:&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;function&lt;/span&gt;(e) {&lt;br/&gt;&lt;br/&gt;    e.preventDefault();&lt;br/&gt;&lt;br/&gt;    &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.hasMod(&lt;span style="color:#ba2121;"&gt;'disabled'&lt;/span&gt;, &lt;span style="color:#ba2121;"&gt;'yes'&lt;/span&gt;) &lt;span style="color:#666666;"&gt;||&lt;/span&gt; &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.afterCurrentEvent(&lt;span style="color:#008000;font-weight:bold;"&gt;function&lt;/span&gt;() {&lt;br/&gt;        &lt;span style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;.trigger(&lt;span style="color:#ba2121;"&gt;'click'&lt;/span&gt;);&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;tt&gt;_onClick()&lt;/tt&gt; триггерит BEM-событие &lt;tt&gt;click&lt;/tt&gt; на js-объекте блока. Это происходит только для активных ссылок (без модификатора &lt;tt&gt;disabled : yes&lt;/tt&gt;) и в следующем потоке исполнения, для чего используется хелпер &lt;tt&gt;afterCurrentEvent&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Третий параметр в декларации блока — хеш статических методов и свойств. В данном случае определён зарезервированный статический метод &lt;tt&gt;live()&lt;/tt&gt;, используемый для &lt;a href="http://bem.github.com/bem-bl/sets/common-desktop/i-bem/i-bem.ru.html#liveinit"&gt;отложенной инициализации блоков&lt;/a&gt;.&lt;br/&gt;В методе &lt;tt&gt;live()&lt;/tt&gt; можно вызывать методы-хелперы для различных типов live-инициализации блока. В данном случае использован метод &lt;tt&gt;liveBindTo&lt;/tt&gt;, позволяющий реагировать на DOM-событие определённого блока.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Thu, 13 Oct 2011 16:55:05 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>блоки</category>
      <category>библиотека</category>
      <category>b-link</category>
    </item>
    <item>
      <title>Видео мастер-класса "JavaScript в БЭМ-терминах"</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1154</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1154</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1154</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Мастер-класс "JavaScript в БЭМ-терминах" прошёл на YAC2011 19 сентября 2011. В ходе этого мастер-класса  &lt;b class="b-user"&gt;&lt;a href="http://toivonens.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;В&lt;/font&gt;&lt;font color="#000000"&gt;аря Степанова&lt;/font&gt;&lt;/a&gt;&lt;/b&gt; показывает, как при помощи JavaScript-ядра библиотеки bem-bl писать клиентский JavaScript для страниц, созданных по БЭМ-методу.&lt;br/&gt;Плееры с выступлением и слайдами опубликованы на сайте YAC: &lt;a href="http://yac2011.yandex.ru/archive2011/video3/#i-bem"&gt;http://yac2011.yandex.ru/&lt;wbr/&gt;archive2011/video3/#i-bem&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Также можно посмотреть выступление прямо здесь:&lt;/p&gt;&lt;p&gt;&lt;object width="450" height="338"&gt;&lt;param name="video" value="http://static.video.yandex.ru/lite/ya-events/a95wrmt7r4.4316/"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="scale" value="noscale"/&gt;&lt;embed src="http://static.video.yandex.ru/lite/ya-events/a95wrmt7r4.4316/" type="application/x-shockwave-flash" width="450" height="338" allowfullscreen="true" scale="noscale"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;И скачать слайды: &lt;a href="http://www.slideshare.net/VarvaraStepanova/javascript-9641142/download"&gt;http://www.slideshare.net&lt;wbr/&gt;/VarvaraStepanova/javascr&lt;wbr/&gt;ipt-9641142/download&lt;/a&gt;&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 11 Oct 2011 15:41:57 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>доклад</category>
      <category>видео</category>
      <category>i-bem</category>
      <category>мастер-класс</category>
      <category>js</category>
      <category>yac2011</category>
    </item>
    <item>
      <title>Видео доклада "BEMHTML. Not yet another шаблонизатор"</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1153</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1153</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1153</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Опубликовано видео доклада  &lt;b class="b-user"&gt;&lt;a href="http://veged.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;С&lt;/font&gt;&lt;font color="#000000"&gt;ергея Бережного&lt;/font&gt;&lt;/a&gt;&lt;/b&gt; "BEMHTML. Not yet another шаблонизатор". В ходе этого доклада Сергей рассказывает о том, чем шаблонизатор BEMHTML отличается от сотен других шаблонизаторов и почему мы используем именно его.&lt;br/&gt;Видео выступления и слайды опубликовано на сайте YAC2011: &lt;a href="http://yac2011.yandex.ru/archive2011/video3/#bemhtml"&gt;http://yac2011.yandex.ru/&lt;wbr/&gt;archive2011/video3/#bemht&lt;wbr/&gt;ml&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Можно посмотреть видео прямо здесь:&lt;/p&gt;&lt;p&gt;&lt;object width="450" height="338"&gt;&lt;param name="video" value="http://static.video.yandex.ru/lite/ya-events/5vzgxjy6bt.4005/"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="scale" value="noscale"/&gt;&lt;embed src="http://static.video.yandex.ru/lite/ya-events/5vzgxjy6bt.4005/" type="application/x-shockwave-flash" width="450" height="338" allowfullscreen="true" scale="noscale"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;И скачать слайды: &lt;a href="http://www.slideshare.net/VarvaraStepanova/bemhtml/download"&gt;http://www.slideshare.net&lt;wbr/&gt;/VarvaraStepanova/bemhtml&lt;wbr/&gt;/download&lt;/a&gt;&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 11 Oct 2011 15:35:52 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>доклад</category>
      <category>видео</category>
      <category>bemhtml</category>
      <category>yac2011</category>
    </item>
    <item>
      <title>Видео мастер-класса "Дом из готовых кирпичей. Использованеи библиотеки bem-bl"</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1152</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1152</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1152</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Мастер-класс "Дом из готовых кирпичей. Использование библотеки bem-bl" прошёл на YAC2011 19 сентября 2011. В ходе мастер-класса показано, как установить и использовать БЭМ-инструменты (bem-tools) и как собрать страницу на библиотеке блоков bem-bl. Мастер-класс проводили  &lt;b class="b-user"&gt;&lt;a href="http://lento4ka45.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;Л&lt;/font&gt;&lt;font color="#000000"&gt;ена Глухова&lt;/font&gt;&lt;/a&gt;&lt;/b&gt; и  &lt;b class="b-user"&gt;&lt;a href="http://toivonens.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;В&lt;/font&gt;&lt;font color="#000000"&gt;аря Степанова&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Плееры с выступлением и слайдами опубликованы на сайте YAC: &lt;a href="http://yac2011.yandex.ru/archive2011/video3/#bem-dom"&gt;http://yac2011.yandex.ru/&lt;wbr/&gt;archive2011/video3/#bem-d&lt;wbr/&gt;om&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Можно также посмотреть видео прямо тут:&lt;/p&gt;&lt;p&gt;&lt;object width="450" height="338"&gt;&lt;param name="video" value="http://static.video.yandex.ru/lite/ya-events/8qj85hmh58.4023/"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="scale" value="noscale"/&gt;&lt;embed src="http://static.video.yandex.ru/lite/ya-events/8qj85hmh58.4023/" type="application/x-shockwave-flash" width="450" height="338" allowfullscreen="true" scale="noscale"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;И скачать слайды: &lt;a href="http://www.slideshare.net/VarvaraStepanova/bembl/download"&gt;http://www.slideshare.net&lt;wbr/&gt;/VarvaraStepanova/bembl/d&lt;wbr/&gt;ownload&lt;/a&gt;&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 11 Oct 2011 15:31:00 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>библиотека</category>
      <category>доклад</category>
      <category>видео</category>
      <category>мастер-класс</category>
      <category>yac2011</category>
    </item>
    <item>
      <title>Видео мастер-класса "Тема для WordPress в БЭМ"</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1151</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1151</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1151</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Мастер-класс  &lt;b class="b-user"&gt;&lt;a href="http://tadatuta.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;В&lt;/font&gt;&lt;font color="#000000"&gt;ладимира Гриненко&lt;/font&gt;&lt;/a&gt;&lt;/b&gt; "Тема для WordPress в БЭМ" на YAC2011 19 сентяря 2011. В ходе мастер-класса показано, как применить БЭМ-методологию к сайту PHP (в частности, на WordPress).&lt;/p&gt;&lt;p&gt;По ссылке — видео выступления и слайды: &lt;a href="http://yac2011.yandex.ru/archive2011/video3/#wordpress-bem"&gt;http://yac2011.yandex.ru/&lt;wbr/&gt;archive2011/video3/#wordp&lt;wbr/&gt;ress-bem&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Видео можно также посмотреть прямо тут:&lt;/p&gt;&lt;p&gt;&lt;object width="450" height="338"&gt;&lt;param name="video" value="http://static.video.yandex.ru/lite/ya-events/d94q1rzi9f.4003/"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="scale" value="noscale"/&gt;&lt;embed src="http://static.video.yandex.ru/lite/ya-events/d94q1rzi9f.4003/" type="application/x-shockwave-flash" width="450" height="338" allowfullscreen="true" scale="noscale"/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;И скачать слайды: &lt;a href="http://www.slideshare.net/VarvaraStepanova/wordpress-9641370/download"&gt;http://www.slideshare.net&lt;wbr/&gt;/VarvaraStepanova/wordpre&lt;wbr/&gt;ss-9641370/download&lt;/a&gt;&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 11 Oct 2011 15:26:20 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>доклад</category>
      <category>видео</category>
      <category>мастер-класс</category>
      <category>yac2011</category>
    </item>
    <item>
      <title>Видео мастер-классов по БЭМ c YAC2011</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1150</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1150</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1150</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;На сайте YAC выложены видео докладов и презентаций мастер-классов по БЭМ:&lt;/p&gt;&lt;p&gt;&lt;a href="http://yac2011.yandex.ru/archive2011/video3/"&gt;http://yac2011.yandex.ru/archive2011/video3/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Презентации в формате PDF можно скачать отдельно:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Тема для WordPress в БЭМ&lt;br/&gt;&lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1151"&gt;http://clubs.ya.ru/bem/replies.xml?item_no=1151&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Дом из готовых кирпичей. Использование библиотеки bem-bl&lt;br/&gt;&lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1152"&gt;http://clubs.ya.ru/bem/replies.xml?item_no=1152&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Шаблонизатор BEMHTML&lt;br/&gt;&lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1153"&gt;http://clubs.ya.ru/bem/replies.xml?item_no=1153&lt;/a&gt;&lt;/li&gt;&lt;li&gt;JavaScript в БЭМ терминах&lt;br/&gt;&lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=1154"&gt;http://clubs.ya.ru/bem/replies.xml?item_no=1154&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;PS: Видео опубликованы в разных постах, комменты к этому посту отключены, комментируйте каждый мастер-класс в его посте.&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 11 Oct 2011 13:32:18 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>библиотека</category>
      <category>доклад</category>
      <category>видео</category>
      <category>bemhtml</category>
      <category>js</category>
      <category>yac2011</category>
    </item>
    <item>
      <title>YaC'2011: доклад Вегеда «Истории про разработку сайтов»</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1149</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1149</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1149</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;p&gt;Рекомендую посмотреть доклад &lt;b class="b-user"&gt;&lt;a href="http://veged.ya.ru/" class="b-user__link"&gt;&lt;font color="#ff0000"&gt;В&lt;/font&gt;&lt;font color="#000000"&gt;егед&lt;/font&gt;&lt;/a&gt;&lt;/b&gt; «Истории про разработку сайтов» с &lt;a href="http://yac2011.yandex.ru/"&gt;YaC'2011&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;object width="360" height="270"&gt;&lt;param name="video" value="http://static.video.yandex.ru/lite/ya-events/yyyjfrfep1.4015/"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="scale" value="noscale"/&gt;&lt;param name="flashvars" value="is-hq=true"/&gt;&lt;embed src="http://static.video.yandex.ru/lite/ya-events/yyyjfrfep1.4015/" type="application/x-shockwave-flash" allowfullscreen="true" scale="noscale" flashvars="is-hq=true" width="360" height="270"/&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.slideshare.net/slideshow/embed_code/9617947"&gt;Слайды&lt;/a&gt;&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 11 Oct 2011 12:58:17 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:2543</category>
      <category>доклад</category>
      <category>видео</category>
      <category>yac2011</category>
    </item>
    <item>
      <title>Документация о js-реализациях в bem-bl</title>
      <guid isPermaLink="false">ya.ru:4611686018427404475:1148</guid>
      <link>http://clubs.ya.ru/bem/replies.xml?item_no=1148</link>
      <comments>http://clubs.ya.ru/bem/replies.xml?item_no=1148</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;Структура блока первична, а реализация вторична.&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;Это предложение из &lt;a href="http://bem.github.com/bem-method/html/all.ru.html"&gt;документа о БЭМ-методе&lt;/a&gt; говорит о том, что в любой технологии, с помощью которой делается страница, мы придерживаемся концепции БЭМ и оперируем одной и той же предметной областью.&lt;/p&gt;&lt;p&gt;Чтобы в клиентском JS работать в терминах &lt;tt&gt;Блок-Элемент-Модификатор&lt;/tt&gt;, в блоке-хелпере &lt;tt&gt;i-bem&lt;/tt&gt; сделано ядро JS-представления блоков. Несколькими постами ранее был опубликован видео-доклад «i-bem.js — javascript блок, помогающий-делать-другие-блоки» Дмитрия Филатова и Сергея Бережного на пЯТЬнице Яндекса 22.04.2011: &lt;a href="http://clubs.ya.ru/bem/replies.xml?item_no=900"&gt;http://clubs.ya.ru/bem/replies.xml?item_no=900&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Теперь доступна документация о JS-реализации блока: &lt;a href="http://bem.github.com/bem-bl/sets/common-desktop/i-bem/i-bem.ru.html"&gt;http://bem.github.com/bem&lt;wbr/&gt;-bl/sets/common-desktop/i&lt;wbr/&gt;-bem/i-bem.ru.html&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Примеры js-реализации блоков находятся в репозитории бибилиотеки: &lt;a href="https://github.com/bem/bem-bl/tree/master/blocks-desktop/i-bem/examples"&gt;.../blocks-desktop/i-bem/examples&lt;/a&gt;.&lt;br/&gt; По мере публикации документации о блоках мы также будем подробно описывать то, как они запрограммированы. Читайте о JS-реализации блоков в следующих постах.&lt;/p&gt;&lt;p&gt;На тему написания JavaScript по БЭМ-методу у нас был мастер-класс на YAC-2011. Теперь его можно посмотреть на видео: &lt;a href="http://yac2011.yandex.ru/archive2011/video3/"&gt;http://yac2011.yandex.ru/archive2011/video3/&lt;/a&gt; (последний плеер).&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 11 Oct 2011 11:11:51 +0400</pubDate>
      <category>ya.ru:text</category>
      <category>ya.ru:author:14441195</category>
      <category>библиотека</category>
      <category>i-bem</category>
      <category>js</category>
    </item>
    <yx:navigation xmlns:yx="urn:yandex-functions">
      <yx:previous>http://clubs.ya.ru/bem/rss/posts.xml?tb=20</yx:previous>
    </yx:navigation>
    <ppb:more xmlns:ppb="http://blogs.yandex.ru/schema/rss">http://clubs.ya.ru/bem/rss/posts.xml?tb=20</ppb:more>
  </channel>
</rss>

