我一直相信你能够访问和覆盖Shadow DOM元素的样式 . 我在html5rocks上看到了一篇文章,它定义了你可以使用的webkit特定选择器:http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/
input[type=range]::-webkit-slider-thumb {
-webkit-appearance: none;
background-color: blue;
width: 10px;
height: 40px;
}
然而,当我尝试这是不能按预期工作 - 看起来好像一些sytle属性不能被覆盖 . 例如高度和宽度然而,似乎设置webkit外观确实使它看起来像一个按钮 .
这是真的?
我想要做的是设置范围滑块的样式,以便手柄和轨道可以是不同的颜色 .
这是一个简单的演示:http://jsfiddle.net/sidonaldson/dCKd3/我可以隐藏按钮但是当我设置背景颜色时它会弹出!
1 回答
-webkit-appearance
(或-moz-appearance
)被认为重置/更新元素的浏览器样式,例如设置div
样式button
(请参阅w3c reference,此jsFiddle),或重置select
的样式(请参阅此jsFiddle) . 例如,如果您使用Apple移动设备浏览,则默认情况下您会看到按钮已四舍五入 .-webkit-appearance:none;
会阻止这种情况发生 . (另见here) . 它似乎尚未在桌面浏览器上完全实现 .我能够达到你想要的效果( jsFiddle ):
但是,这是一个hacky解决方案 . 如果你想要完全可自定义的控件,我会推荐jQuery UI,这也是浏览器独立的,不依赖于实验性的浏览器功能 .
Edit:
您可以找到
-webkit-appearance
here的值列表 .您第一次尝试的问题是,
input[type="range"]
已设置-webkit-appearance: slider-horizontal
. 这继承了孩子,你无法设置背景 . 当您将-webkit-appeareance: none;
也添加到input[type="range"]
时,可以将背景颜色设置为您想要的颜色(请参阅jsFiddle) . 您只需设置滑块拇指的宽度和高度,因为您刚刚删除了为您执行此操作的slider-horizontal
外观 .新的CSS将是: