Jump to content
  • 0

БЭМ


raptor-dm
 Share

Question

Никогда раньше не работал с ним. Сейчас знакомлюсь и ряд вопросов.
1) Обязательно ли каждому элементу dom давать класс? или можно напрямую в css обратиться к элементу?
2) А если у меня много вложенных блоков. То что делать в таком случае? разделять на логические подблоки? просто по сути даже у корневого родителя можно найти куча элементов.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

мне вообще кажется что БЭМ как таковой хорош при построении интерфейсов, а вот при создании обычных сайтов малопригоден из-за неуниверсальности блоков в макетах.

Link to comment
Share on other sites

  • 0

Задавая каждому элементу dom класс можно при стилизации вообще обойтись без вложенности. И в CSS не будет картины типа (nav ul li a). Кроме того, не нужно будет комментировать HTML (если нормально имена классам задавать). На мой взгляд, с БЭМ удобнее верстать. Сначала, правда, придется помучиться с придумыванием имен классов.

Link to comment
Share on other sites

  • 0

Задавая каждому элементу dom класс можно при стилизации вообще обойтись без вложенности. И в CSS не будет картины типа (nav ul li a). Кроме того, не нужно будет комментировать HTML (если нормально имена классам задавать). На мой взгляд, с БЭМ удобнее верстать. Сначала, правда, придется помучиться с придумыванием имен классов.

что мешает задавать оригинальные классы элементам и без БЭМ ?

Link to comment
Share on other sites

  • 0

  Вы вообще о чём. Фишка БЭМ как раз в том и заключается, что придумывать оригинальные классы НЕ нужно, они становятся таковыми априори. А если вам приходиться мучиться с придумыванием имен классов, то вы просто не умеете его готовить. С БЭМ разметкой у вас может быть несколько правил для &__item  в разных местах CSS и вы будете знать что означает каждый из них.

 

 

А если у меня много вложенных блоков. То что делать в таком случае? разделять на логические подблоки?

   Оно УЖЕ разделено. Всё что нужно, это научиться отличать блоки от элементов. 

  • Like 1
Link to comment
Share on other sites

  • 0
что мешает задавать оригинальные классы элементам и без БЭМ ?

Ничего, по сути, это одно и то же будет. Но с правилами наименования по БЭМу сразу видишь, что к чему относится. Это удобно.

 

А если у меня много вложенных блоков. То что делать в таком случае? разделять на логические подблоки? просто по сути даже у корневого родителя можно найти куча элементов.

А в чем проблема здесь? БЭМ не запрещает вкладывать один блок в другой (в самом DOM имеется ввиду). Они по-прежнему останутся самостоятельными сущностями, просто один блок будет находиться в каком-то элементе другого блока.

Link to comment
Share on other sites

  • 0
что мешает задавать оригинальные классы элементам и без БЭМ ?

С БЭМ стили задавать удобнее.

В LESS получается конструкция типа:

.блок  {

   ...

   &__элемент1  {

      ...

      &_модификатор  {

         ...

      }

   }

   &__элемент2  {

      ...

   }

}

Link to comment
Share on other sites

  • 0
С БЭМ стили задавать удобнее. В LESS получается конструкция типа: .блок { ... &__элемент1 { ... &_модификатор { ... } } &__элемент2 { ... } }

 

Так можно делать и без БЭМ

.header {  &-slogan {}  &-phone {}  &-callback {}}

Ничего, по сути, это одно и то же будет. Но с правилами наименования по БЭМу сразу видишь, что к чему относится. Это удобно.

 

при нормальном именовании классов тоже было видно что к чему относится, БЭМ лишь собрал в кучу все полезные приемы и добавил структурированность. Предположим раньше я создавал блок с меню как то так:

<ul class="menu">  <li class="active"></li>  <li></li></ul>
.menu {  >li {}  >.active {}}

Теперь я делаю:

<ul class="menu">  <li class="menu__item menu__item_active"></li>  <li class="menu__item"></li></ul>
.menu {  &__item {    &_active {}  }}

На маленьких проектах типо лендингов и небольших сайтов бэм зачастую только мешает тем что количество кода в html возрастает.  На больших проектах это оправданно, а при верстке лендинга нафига мне каждому li прописывать класс, кода можно обойтись простым правилом в CSS

>li {}

БЭМ полезен, но он не панацея и пихать его везде на мой взгляд не стоит. Я обычно комбинирую оба приема если жесткая структура не нужна.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy