我正在使用自定义jQuery选择复选框列表,与默认选择列表不同,您可以使用复选框选择多个对象。这支持ThemeRoller,但由于我页面上的其他控件都是原生html(选择,按钮等),我希望自定义选择也看起来像原生。
我基于Win XP IE 7为此创建了一个样式,但如果用户不使用XP或具有不同的主题,它当然看起来很有趣。 Server 2003.主要问题是边框颜色和样式。
我尝试使用以下命令从页面上的本机控件获取边框属性:
var borderStyle = select.currentStyle.borderStyle; //returns none
var borderWidth = select.currentStyle.borderWidth; //returns 1
var borderColor = select.currentStyle.borderColor; //returns #fffff
但是这些值不正确(参见代码注释),我期待它返回一个坚实的浅蓝色边框。我也尝试过select.style.border及其变种而没有运气。
有没有办法可以在Internet Explorer中正确检测选择的原生/默认边框样式,然后将同样的样式应用到我的自定义控件?
答案 0 :(得分:1)
听起来你正在寻找的是CSS2 System Colors
。
在CSS2中,定义了许多预设颜色名称,这些颜色名称映射到操作系统的默认颜色。
所以你可以,例如在CSS中定义你的按钮:
.mybutton {background: ButtonFace;}
......他们会选择操作系统用于按钮的颜色。
缺点是这些系统颜色现在已在CSS3中弃用,这意味着您可能不应该使用它们,并且不保证浏览器支持(并且可能在将来的版本中删除)。
他们被弃用的原因是因为操作系统使用的颜色列表几乎在每个操作系统之间都有所不同,甚至是同一操作系统的不同版本。
例如,规范包含WindowFrame
的定义,但当然在Windows的最新版本中,窗口框架具有透明的渐变效果,根据规范在单个颜色的上下文中不再有意义。另一个例子是规范定义了3D高光和阴影的颜色,但是当然3D效果比定义规范时更加微妙。
如果你想尝试一下,你可以在这里找到W3C的系统颜色规范:http://www.w3.org/TR/CSS2/ui.html#system-colors
希望有所帮助。