我使用的是自定义 jQuery 选择复选框列表,与默认选择不同,它允许您使用复选框选择多个对象。这支持 ThemeRoller,但由于我页面上的其余控件是原生 html(选择、按钮等),我希望自定义选择也看起来是原生的。
我基于 Win XP IE 7 为此创建了一个样式,但如果用户不使用 XP 或使用不同的主题,它当然看起来很有趣,例如Server 2003。主要问题是边框颜色和样式。
我尝试使用以下方法从页面上的 native 控件获取边框属性:
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 中正确检测所选内容的 native /默认边框样式,然后将此相同样式应用到我的自定义控件?
最佳答案
听起来您正在寻找的是 CSS2 System Colors
。
在 CSS2 中,定义了许多预设颜色名称,它们映射到操作系统的默认颜色。
例如,您可以这样在 CSS 中定义按钮:
.mybutton {background: ButtonFace;}
...他们会选择操作系统用于按钮的颜色。
缺点是这些系统颜色现在已在 CSS3 中弃用,这意味着您可能不应该使用它们,并且不能保证浏览器支持(并且可能会在未来版本中删除)。
它们被弃用的原因是因为操作系统使用的颜色列表在几乎每个操作系统之间都不同,即使是同一操作系统的不同版本也是如此。
例如,规范中包含对 WindowFrame
的定义,但当然在最新版本的 Windows 中,窗口框架具有透明的渐变效果,这在单一颜色的上下文中不再有意义,因为根据规范。另一个例子是规范定义了 3D 高光和阴影的颜色,但当然现在的 3D 效果比定义规范时更加微妙。
如果您想尝试一下,可以在此处找到 W3C 的系统颜色规范:http://www.w3.org/TR/CSS2/ui.html#system-colors
希望对您有所帮助。
关于javascript - IE Windows 主题、CSS 和当前样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5086765/