@Demarcus11
Posted
BEM is Block Element Modifier.
A block is a standalone element in the UI such as a navigation, card, footer, etc.
A element is part of a block and has no standalone meaning such as a navigation link, the title of a card, a link in a footer, etc.
A modifier changes the appearance of an element such as the color of a button.
In this case, the card is the only block, so everything inside the card should be prefixed with card__ because everything inside the card would have no meaning outside of the card such as the card heading, card genre, card image, etc.
Your class names are almost perfect, the only issue is a small mistake on the card image class, it should be card__img instead of card-img because img is a element inside the card block:
<img
class="card__img"
src="./assets/images/illustration-article.svg"
alt=""
/>
Marked as helpful
@Demarcus11 thx for your comment, it is really helpful, it is good to hear I am doing the right thing.
I find putting everything into the class name with BEM, it is easy to understand and do adjustment later as the project growth. But in my code, I am literally putting everything, every tag with a class name, u think it is a good practice?
To my understanding, with BEM, you won't do things like
card h1 {
color: red;
}
that is why I put every tag with a class name when I do the adjustment. Please comment on it.
And what will you do if h2 and h4 share the same color or same styles, how would you do it with BEM?
Many thx