2011-02-23 55 views
2

我正在使用自定义jQuery select复选框列表,它与默认选择不同,可以使用复选框选择多个对象。这支持ThemeRoller,但由于我的页面上的其他控件是原生html(选择,按钮等),我希望自定义选择也看起来很原生。IE Windows主题,CSS和当前风格

我为Win XP IE 7创建了一个基于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中选择的本机/默认边框样式,然后将此相同样式应用于我的自定义控件?

+1

您可能会尝试检查xp主题本身,因为有些脚本可以做,例如http://notetodogself.blogspot.com/2010/03/jquery-detect-windows-xp-theme.html – schellmax 2011-02-23 09:58:29

回答

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

希望有所帮助。