Recently I started learning BEM methodology and I'm struggling with one thing, to wit: if I code webpage using BEM should I use BEM classes in every html TAG or only there where in my opinion they are useful? Let's say we have this piece of code:
<ul class="menu__item-list">
<li class="menu__item"><a class="menu__link" href=""><img class="menu__icon" src="" alt="">link-1</a></li>
<li class="menu__item"><a class="menu__link" href=""><img class="menu__icon" src="" alt="">link-2</a></li>
<li class="menu__item"><a class="menu__link" href=""><img class="menu__icon"src="" alt="">link-3</a></li>
<li class="menu__item"><a class="menu__link" href=""><img class="menu__icon"src="" alt="">link-4</a></li>
<li class="menu__item"><a class="menu__link" href=""><img class="menu__icon"src="" alt="">link-5</a></li>
</ul>
or can I drop menu__icon class from if I don't need this and leave it like that:
<ul class="menu__item-list">
<li class="menu__item"><a class="menu__link" href=""><img src="" alt="">link-1</a></li>
<li class="menu__item"><a class="menu__link" href=""><img src="" alt="">link-2</a></li>
<li class="menu__item"><a class="menu__link" href=""><img src="" alt="">link-3</a></li>
<li class="menu__item"><a class="menu__link" href=""><img src="" alt="">link-4</a></li>
<li class="menu__item"><a class="menu__link" href=""><img src="" alt="">link-5</a></li>
</ul>
I've checked many different websites and one of them have almost every TAG in BEM but others only some selected TAGs so I'm a little bit confused ;) Please help :)
If it is an icon it is best practice to also give it the corresponding CSS class. So your first solution seems to be right. Maybe you want to give it an own block, so you are able to use it in another context. I think that would make sense in the case of an icon.