Вот это мнение человека, который совершенно не понимает, о чём идёт речь. БЭМ - это не просто засорение кода ненужными классами и я считаю, что его использовать можно и нужно, но не быть фанатом и смотреть на ситуацию. Вот пример. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Документ без названия</title> <style type="text/css"> .nav {} .nav > li {} .nav > li > a {} .nav__dropdown {} .nav__dropdown > li {} .nav__dropdown > li > a {} </style> </head> <body> <ul class="nav"> <li> <a href="#">1</a> <ul class="nav__dropdown"> <li> <a href="#">Выпадающий пункт</a> </li> </ul> </li> <li> <a href="#">2</a> <ul class="nav__dropdown"> <li> <a href="#">Выпадающий пункт</a> </li> </ul> </li> </ul> </body> </html> Я показал пример, для обычных проектов, простых (не крупных порталов). Т.е. если бы я использовал отчасти БЭМ на простых хомяках, я бы делал так. Объясняю суть. Тут, на дочерних селекторах, мы теряем в скорости, но учитывая, что это обычный хомяк, разницы мы не замечаем. .nav {} .nav > li {} .nav > li > a {} Плюсы: 1) Мы избавляемся от "лишних" классов, которые вешаются на всё живое, например на те же li 2) Мы не теряем удобочитаемость нашего кода, т.е. код с таким подходом остаётся вполне читаемый и понятный. 3) Мы так же можем смело сказать, что наш блок - независимый и что все его обращения к элементам внутри происходят только на его уровне, не затрагивая, например элементы такого же типа внутри него. Опять же, проблема независимости решается тут за счёт дочерних селекторов. 4) Мы так же легко можем убирать, или наоборот вводить вложенные элементы внутрь, они так же вполне себе самостоятельны за счёт своих классов <ul class="nav__dropdown"> <li> <a href="#">Выпадающий пункт</a> </li> </ul> .nav__dropdown {} .nav__dropdown > li {} .nav__dropdown > li > a {} Если внутри нужны какие-то отдельные элементы, то мы вешаем на них класс, и это лишит нас последних проблем. Таким образом на выходе мы имеем вполне себе удобочитаемый, управляемый и самое главное независимый код. Я к тому, что не стоит брать БЭМ за догму, не стоит не видеть ничего вокруг и использовать эту технику в полном объёме в своих проектах, особенно в малометражных, если этого не требует ситуация. Можно и "даже" нужно использовать его правильно и исходить от задачи и объёма сайта. На проектах, которые ты один раз сверстал и забыл или раз сверстал и возвращаешься к нему редко, вполне подойдёт мой подход. Есть возражения?