【发布时间】:2017-03-07 16:20:31
【问题描述】:
假设我有以下 CSS 用于通用列表组件,使用 BEM 和 SCSS:
.list {
&__item {
&:not(:last-child) {
margin-right: .3em;
}
}
}
我想添加一个可以使列表垂直的修饰符,如下所示:
.list--vertical {
display: flex;
flex-direction: column;
}
当我想到 list__item 元素的边距时,我的问题就出现了。对于垂直列表,我希望我的边距位于底部,而不是每个项目的右侧。如果我对BEM的理解正确,我不能根据list的修饰符来修改list__item的样式,对吗?
更准确地说,这是我想做的:
.list--vertical {
display: flex;
flex-direction: column;
.list__item {
&:not(:last-child) {
margin-bottom: .3em;
margin-right: 0;
}
}
}
使用 BEM 处理此问题的公认方法是什么? list__item 的另一个修饰符处理边距?另一个完全用于垂直列表的块?
【问题讨论】: