2017-02-02 5 views
1

我々は.container.buttonブロックがあるとします。BEM - 別のブロック内のブロックにコンテキストスタイルを適用

<div class="container"> 
    <!-- some html --> 
    <a class="button">A Marvelous button</a> 
</div> 

我々は.containerのコンテキストでのみ.buttonブロックのスタイリングに近づく必要がありますどのように?まだ.button--modifierを作成する必要がありますか?

+0

複数のものがある場合を除いて、.container .button'はどうですか?個々のクラスは良いと思います...または何かを誤解しました – LGSon

+0

BEMの解決方法問題? –

+0

まあ、いいえ、彼らは '.button-modifier'を使ってあなたが質問したことを示唆しています....このリンクをチェック:http://getbem.com/naming/ – LGSon

答えて

1

この場合、ボタンが別のセクション内で別の場所で使用される場合は、スタイルit .button - modifierと言います。アトミックデザインパターン(http://patternlab.io/)をチェックしてください。この場合、ボタンは原子になり、コンテナはおそらく分子になります。再利用可能なすべてのアトムを.atom修飾子でスタイルするのは良い考えだと思うが、これについて他の人の意見を聞くのが良いだろう。

+0

その特定のスタイリングを他の場所で使用しないとどうなりますか? –

+0

その場合、ボタンのスタイルはコンポーネント固有であり、.container__ボタンがより適切かもしれません。 – Davey

+0

私は '.container__button'が本当に良いアイデアかもしれないと思います。おかげで –

0

.containerは基本の修飾語であることを意味する。ボタンブロック。

.containersコンテキストの外で動作する既存の - 修飾子は、.containerコンテキスト内では依然として関連しています。

これはまた、.containerコンテキストに基づいて既存の.button-modifierを変更することができる.containerの内部に2つのボタンスタイルがあることを意味します。

SASS例:

.button { 
    color: red; 
    &--modifier { 
    color:yellow // works everywhere including inside .container 
    } 
    .container & { 
    color: green; 
    &--modifier { 
     color:blue; // just applied inside .container 
    } 
    } 
} 

アウトプットます:

.button { 
    color: red; 
} 
.button--modifier { 
    color: yellow; 
} 
.container .button { 
    color: green; 
} 
.container .button--modifier { 
    color: blue; 
} 

ここに見られるようにhttp://www.sassmeister.com/gist/9c909d0071bdac75dc1b73be86443e2c

+0

答えがありがたいですが、わかりません。コンテナのコンテキストに基づいてボタン修飾子を変更するのは良い考えです。これは暗黙的な振る舞いを導入し、BEMを使用する目的全体を打ち負かします –

1

mixesを使用して問題を解決することができます。

関連する問題