0

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

我的 linting 规则规定我不能使用超过三层的嵌套。

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

这是我的方法:

.block {
    &__element {
        &--modifier {
            &::after {
                // Four levels deep :(
            }
        }
    }
}

这是我看到的唯一合乎逻辑的方式:

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

        &--modifier::after {
            // Three levels deep
        }
    }
}

我不喜欢这种方法,因为我不喜欢重复修饰符类名。

有没有更好的解决方案?

4

1 回答 1

2

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

您提供了一个完全有效的用例,其中 4 个级别是实现目标的最简洁方式。因此,您应该要么

调整 linting 规则 (.scss-lint.yaml)

  NestingDepth:
    max_depth: 4

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

// scss-lint:disable NestingDepth
于 2016-08-05T15:59:17.013 回答