Mar*_*ijn 14 css firefox webkit google-chrome css-selectors
我正在研究一个jQuery主题,其中包括尽可能多的表单元素的样式.最初它是为Webkit(Chrome)开发的.现在我想让它也适用于Firefox.
问题是; Firefox在某些特定于Webkit的语法方面存在问题.
例如:
input[type="range"]::-webkit-slider-thumb,
input[type=radio],
input[type=checkbox] {
-webkit-appearance: none !important;
-moz-appearance: none;
width: 1.2em;
height: 1.2em;
border: 1px solid black;
background: #666666 url(images/ui-bg_highlight-soft_50_666666_1x100.png) 50% 50% repeat-x;
}
Run Code Online (Sandbox Code Playgroud)
问题是input[type="range"]::-webkit-slider-thumb,有点.删除它,Firefox工作正常.它也可以用于其他语法::-webkit-file-upload-button,::selection以及使用::-webkit-...标签的所有其他内容.它识别它自己的::-moz-...标签,::-moz-selection虽然很好.
Webkit似乎只是忽略了::-moz-标签.
是否有任何方便的方法使Firefox忽略::-webkit-...标签或以其他方式处理此问题而无需维护每个CSS块的多个副本?
使用最新版本的Chrome和Firefox.
我必须阅读一点回答这个问题,这里有一些很好的资源, Gecko样式引擎 进一步阅读引擎实现,仍然没有看到任何指针,为什么它会放弃它,但我可以给你我最好的猜测,我认为引擎正在丢弃整个选择器,假设mozilla实现-moz-slider-thumb伪选择器并尝试将其与-webkit一起使用,它也将被删除.
我之前在所有浏览器中都看到过这种行为,我认为它有时被用作黑客攻击某些浏览器.
这会奏效
input[type=radio],
input[type=checkbox] {
-webkit-appearance: none !important;
-moz-appearance: none;
width: 1.2em;
height: 1.2em;
border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
这不会
input[type="range"]::-webkit-slider-thumb,
input[type=radio],
input[type=checkbox] {
-webkit-appearance: none !important;
-moz-appearance: none;
width: 1.2em;
height: 1.2em;
border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
或这个
input[type="range"]::-moz-slider-thumb,
input[type=radio],
input[type=checkbox] {
-webkit-appearance: none !important;
-moz-appearance: none;
width: 1.2em;
height: 1.2em;
border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
我认为你必须在两个或多个不同的选择器上重写属性值,这只会影响样式表的大小,因为引擎会不断删除他们不拥有的选择器.
我真的希望这至少有点帮助.
编辑:
正如用户@BoltClock在评论中所指出的,我的猜测是正确的,这里是指向w3.org/TR/css3-syntax/#rule-sets的链接
| 归档时间: |
|
| 查看次数: |
2859 次 |
| 最近记录: |