ood*_*vid 4 css css-selectors pseudo-element
当组合伪元素选择器(用于范围输入)时,我看到没有应用样式。这迫使我分离我的选择器并复制我的 CSS。
有谁知道为什么会发生这种怪癖?
/* Keeping the selectors separate works */
.range1 {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.range1::-webkit-slider-runnable-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
.range1::-moz-range-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
/* Combining the selectors fails */
.range2 {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.range2::-webkit-slider-runnable-track,
.range2::-moz-range-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
代码笔示例。
您正在将多个特定于供应商的选择器组合到一个 CSS 规则中。
这意味着如果浏览器无法识别其中一个选择器,则会忽略整个 CSS 块。在这种特殊情况下,Chrome 无法识别::-moz-range-track,因为它特定于 Firefox/Gecko。这不是怪癖,而是预期行为和CSS 标准的一部分。
解决方案是拆分声明。像这样:
.range2::-webkit-slider-runnable-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
.range2::-moz-range-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)