BEM:块内的独立块

时间:2013-10-07 07:28:29

标签: css semantics oocss bem

例如,我有一个名为:

的独立块
.main-company-logo {
  background: url(../images/logo_company.png);
  width: 88px;
  display: block;
  text-indent: -9999999px;
  height: 60px;  
} 

此块恰好位于标题中,但也可以位于任何位置。现在,如果它在标题中,它需要浮动到左边并且还有一个边框。如果是这样,这是一种正确的做法:

.header-main { [properties] }
  .header-main .main-company-logo {
    float: left;
    border: 1px solid #FFF;
  }

或者按照BEM:

.main-company-logo { [properties] }
  .main-company-logo--main-header {
    float: left;
    border: 1px solid #FFF;
  }

哪两个更好?

1 个答案:

答案 0 :(得分:2)

第一个没问题。但是如果你想要一个完全上下文独立的解决方案,我建议你在带有浮动和边框的徽标的标题中创建一个容器并在那里放置徽标。

.header-main { [properties] }
.header-main--logo {
    float: left;
    border: 1px solid #FFF;
}
.main-company-logo { [properties] }

并像

一样使用它
<div class="header-main">
    <div class="header-main--logo">
        <img class="main-company-logo"/>
    </div>
</div>

另一种方法应该是使用像这样的mixin

<div class="header-main">
    <img class="header-main--logo main-company-logo"/>
</div>

用这样的css

.header-main { [properties] }
.header-main--logo.main-company-logo {
    float: left;
    border: 1px solid #FFF;
}
.main-company-logo { [properties] }