2017-08-30 2 views
0

je le html follwingEBM convention de nommage de nidification - élément petit-enfant

<div class="listing listing--with-margin"> 
    @foreach($recipients as $recipent) 
     <span class="listing__item">{{ $recipent }} <input type="checkbox"></span> 
     <span class="listing__item">{{ $recipent }} <input type="checkbox"></span> 
    @endforeach 

Si la classe sur la case à cocher est

<input type="checkbox" class="listing__input"> 

ou

<input type="checkbox" class="listing__item listing__input"> 

Je pense que l'option 1 qui permet moi d'écrire est beaucoup plus propre dans la sass avec moins de nidification.

+0

Le premier. La deuxième option donnerait à la fois 'span' et' input' la classe 'listing__item' - ce que je suppose que vous ne voudriez pas? – sol

+0

certainement, le premier. La deuxième variante s'appelle 'mixin', et elle ne convient pas ici –

Répondre

0

Si vous jetez un oeil à la page de nommage dans le BEM documentation, en bas, vous verrez un exemple de section, avec un bloc de formulaire. Dans l'exemple, vous trouverez l'élément <form>, avec un couple de <input /> s.

Chaque <input> a sa propre classe élément soit .form__input ou .form__submit, à la fois héritant de la classe de bloc .form. Ils n'héritent pas plus de une classe.

Cependant, vous remarquerez qu'ils ont plusieurs classes de modificateurs, ce qui est acceptable.

+0

' 'n'utilise pas de barre oblique de fermeture. – Rob

+0

@Rob selon [this] (https://stackoverflow.com/a/7854998/8375199) answer, un 'input' est un élément vide, la barre oblique de fermeture est optionnelle. Cependant, pour les meilleures pratiques, j'ai supprimé la barre oblique dans la réponse. –

+0

Oui et la barre de fermeture ne fait rien, ne signifie rien, n'est pas spécifié pour l'élément lui-même et les navigateurs sont invités à l'ignorer. Donc, il n'a aucune valeur et est inutile. – Rob