Sass 在选择器中优雅地定位一个元素,三层嵌套深度,而不违反linting规则

Sass 在选择器中优雅地定位一个元素,三层嵌套深度,而不违反linting规则,sass,nested,bem,scss-lint,Sass,Nested,Bem,Scss Lint,我正在重构一些SCS,在我的SCS文件中遇到了使用BEM语法的嵌套问题 我的绒线规则规定我不能使用超过三层的嵌套 但是,有时我可能希望在我的SCSS文件中的修改器选择器中定位一个元素 这是我的方法: .block { &__element { &--modifier { &::after { // Four levels deep :( } }

我正在重构一些SCS,在我的SCS文件中遇到了使用BEM语法的嵌套问题

我的绒线规则规定我不能使用超过三层的嵌套

但是,有时我可能希望在我的SCSS文件中的修改器选择器中定位一个元素

这是我的方法:

.block {
    &__element {
        &--modifier {
            &::after {
                // Four levels deep :(
            }
        }
    }
}
这是我看待它的唯一合乎逻辑的方式:

.block {
    &__element {
        &--modifier {
            // Three levels deep
        }

        &--modifier::after {
            // Three levels deep
        }
    }
}
我不喜欢这种方法,因为我不喜欢重复修饰符类名


有更好的解决方案吗?

linting工具的目的是迫使开发人员软性地开发可维护的代码。做一些(可能更难写和读)变通方法与此目标完全相反

您已经提供了一个完全有效的用例,其中4个级别是实现目标的最干净的方式。因此,你应该

调整绒线规则(.scss lint.yaml)

或者(如果不经常发生)禁用警告:

// scss-lint:disable NestingDepth

linting工具的目的是迫使开发人员软性地开发可维护的代码。做一些(可能更难写和读)变通方法与此目标完全相反

您已经提供了一个完全有效的用例,其中4个级别是实现目标的最干净的方式。因此,你应该

调整绒线规则(.scss lint.yaml)

或者(如果不经常发生)禁用警告:

// scss-lint:disable NestingDepth