Stylelint selector-max-specificity: class::placeholder (0,0,1) doesn't but class:focus::placeholder (0,1,1) throws error with 0.2.0 最大特异性

Stylelint selector-max-specificity: class::placeholder (0,0,1) doesn't but class:focus::placeholder (0,1,1) throws error with 0.2.0 max specificity

我试图通过使用 stylelint selector-max-specificity 来降低我项目中的 CSS 特异性,我现在将其设置为“0.2.0”。问题是,当我使用 wonderful-input::placeholder 时,它不会抛出错误,即使它具有 0,0,1 特异性,但是当我使用 wonderful-input:focus::placeholder 时,特异性增加到 0,1, 1 并抛出错误。我得到的错误是:

Expected ".input-basic__input--active:focus::placeholder" to have a specificity no more than "0,2,0" (selector-max-specificity)Stylelint(selector-max-specificity)

有谁知道我为什么会收到这个错误,我是否可以降低这个错误的特异性?

我只是不明白为什么 0,0,1 不会,而 0,1,1 会抛出错误!谢谢 :D

Does anyone know why I get the error

使用 this calculator 你可以看到选择器 .input-basic__input--active:focus::placeholder 具有 0,2,1 的特异性,即 2 (pseudo-)classes 和 1 (pseudo-)元素.

0,2,1 大于选择的最大特异性 0,2,0,规则正确报告了这一点。

如果您想使用此选择器,您应该将主要选项增加到 0,2,1

the problem is that when I use wonderful-input::placeholder it doesn't throw me an error

选择器 wonderful-input::placeholder 具有 0,0,2 的特异性,即 2 个(伪)元素,低于 0,2,0,因此规则允许。

can I decrease the specificity on this one?

没有办法降低 .input-basic__input--active:focus::placeholder 选择器的特异性并让它做同样的事情:即设置 placeholder pseudo-element 具有 [= 的焦点元素的样式45=] input-basic__input--active.

I am trying to reduce CSS specificity in my project by using the stylelint selector-max-specificity

这是一个令人钦佩的目标。您还可以使用 other selector-max-* rules,例如 selector-max-classselector-max-combinatorsselector-max-compound-selectors 等,来帮助您做到这一点。