Меня смущало и OOCSS, и B.E.M. соглашения об именах в течение достаточно долгого времени и никогда не оглядываются назад Те, кто утверждает, что это просто «броское модное слово» или «CSS уже делает это», не понимают возможности написания CSS, используя обе эти методологии.
Давайте посмотрим на самый простой из объектов, список со ссылками. Это входит во многие различные ароматы:
Меню
Панели инструментов
Вкладка
Панели (Bootstrap)
В OOCSS мы находим общие свойства каждого из них и создаем базовый объект. Я обычно называю это nav.
/* Nav
=================================================*/
/* B
---------------------------------------------*/
.nav
{
margin-left: 0;
padding-left: 0;
list-style: none;
}
/* E
---------------------------------------------*/
.nav__item
{
float: left;
}
.nav__link
{
display: block;
color: inherit;
text-decoration: none;
}
/* M
---------------------------------------------*/
.nav--right
{
float: right;
}
.nav--stack .nav__item
{
float: none;
}
Вы заметите несколько вещей:
Nav - базовый объект, который применяется к элементу блока
Дочерние элементы имеют префикс nav_
Модификаторы имеют префикс nav -
Модификатор - это опция, которая изменяет поведение. Например - right плавает nav right.
После того, как мой базовый объект засвидетельствован, я создаю скины, которые изменят внешний вид объекта. Это превратит его в панели инструментов, вкладки и т. Д. У Microsoft есть вкладки Pivot на своих телефонах. Теперь проще создавать fpr.
/* Nav
=================================================*/
/* E
---------------------------------------------*/
.pivot .nav__item
{
margin-left: 24px;
color: #aaa;
font-size: 36px;
}
.pivot .nav__item--active, .pivot .nav__item:hover
{
color: #000;
}
Чтобы использовать этот объект и скин, вы должны написать
<ul class="pivot nav">
<li class="nav__item">
<a class="nav__link"> Item 1 </a>
</li>
<li class="nav__item">
<a class="nav__link"> Item 2 </a>
</li>
</ul>
Из-за его независимости от местоположения вы также можете написать его как
<nav class="pivot nav">
<div class="nav__item">
<a class="nav__link"> Item 1 </a>
</li>
<div class="nav__item">
<a class="nav__link"> Item 2 </a>
</div>
</nav>
В конечном счете, вы отделяете контейнер от кожи. Я хотел бы предложить начать с Николь Салливанс Медиа Объект. Взгляните на Twiter Bootstrap и Inuit.css для большего вдохновения.