Powiedzmy mam następujący CSS dla rodzajowego listy składników, z użyciem BEM i SCSS:BEM: Jakie modyfikatory można modyfikować?
.list {
&__item {
&:not(:last-child) {
margin-right: .3em;
}
}
}
chcę dodać modyfikator, który może wnieść listę pionowo, jak w przykładzie:
.list--vertical {
display: flex;
flex-direction: column;
}
Mój problem powstaje, gdy myślę o marży dla elementów list__item. W przypadku list pionowych chcę mieć mój margines na dole, a nie na prawo każdego elementu. Jeśli dobrze zrozumiałem BEM, nie mogę zmienić stylu list__item na podstawie modnisia z listy, czy to prawda?
Aby być bardziej precyzyjnym, to jest to, co chcę zrobić:
.list--vertical {
display: flex;
flex-direction: column;
.list__item {
&:not(:last-child) {
margin-bottom: .3em;
margin-right: 0;
}
}
}
Jaki jest akceptowanym sposobem radzenia sobie z tym, stosując BEM? Kolejny modyfikator dla list__item, który obsługuje margines? Kolejny blok przeznaczony wyłącznie na listy pionowe?
Dziękujemy! Dla pewności: rozważasz ostatni przykładowy kod, który napisałem "ważny"? – Malax
@Malax, używając selektora potomka jest * prawidłowy *, ale zdecydowanie zalecam unikanie ich, gdy tylko jest to możliwe. Czasem jest to po prostu o wiele szybsze, aby uniknąć dodawania dodatkowych klas modyfikatorów do każdego elementu potomnego. Ale zdarzały mi się sytuacje, że wróciła, by mnie później ugryźć. Ponieważ LESS i Sass znacznie upraszczają dziedziczenie, zastanów się, czy chcesz mieć blok 'vertical-list' i' horizontal-list', które każdy dziedziczy z podstawowego bloku 'list'. – zzzzBov