获取元素样式表样式在JavaScript
-
23-08-2019 - |
题
我一直使用从JavaScript的专业技术约翰Resig的getStyle
函数来获取元素的样式:
function getStyle(elem, name) {
// J/S Pro Techniques p136
if (elem.style[name]) {
return elem.style[name];
} else if (elem.currentStyle) {
return elem.currentStyle[name];
}
else if (document.defaultView && document.defaultView.getComputedStyle) {
name = name.replace(/([A-Z])/g, "-$1");
name = name.toLowerCase();
s = document.defaultView.getComputedStyle(elem, "");
return s && s.getPropertyValue(name);
} else {
return null;
}
}
如果未指定样式为元素然而,该方法返回默认样式:
http://johnboxall.github.com/test/getStyle.html
替代文字http://img.skitch.com/20081227-8qhxie51py21yxuq7scy32635a.png一>
是否有可能得到的只有指定的样式风格的元素(和返回null如果样式为undefined)?
更新
为什么需要这样一个东西?我建立一个小部件,允许用户风格元素。一个可应用的样式是text-align
- left
,center
,right
- 使用getStyle
无样式元素默认center
。这使得它无法告诉元素是否为中心,因为用户希望它为中心或居中,因为这是默认样式。
解决方案
是否有可能只得到 样式表中指定样式的 元素(如果风格返回null 未定义)?
这是有效的什么是你目前的程序进行。问题是,在大多数情况下,大部分款式都是的不的不确定 - 他们继承和/或由各个浏览器的内部样式表中定义。
您可以,有一大堆的努力,遍历的所有的界定问题的风格,在所有的样式表中的当前视图的规则文档,评估他们对有问题的元素,如果没有应用......如果没有应用到父(或这个特殊的风格是不能继承)...然后再考虑它不确定的。这将是缓慢的,并且难以置信容易出错。我不建议尝试它。
也许你会做的更好退一步,问你为什么会需要这样的事?
其他提示
也许你的组件可以包装它控制的样式?然后,当样式是通过组件设置组件知道用户想要什么。
不隶属于 StackOverflow