实现一个获取元素样式的函数getStyle
2009-1-21 13:58:33
元素的CSS样式,除了包括内联的(即通过style属性加上的)样式定义外,还有
页面嵌入的css和外部引入的css两种方式。但在JS中通过el.style.xxx只能获取的内联的样式属性,这就存在比较大的局限性。好在浏览器都
提供了另外的方式来获取以其它方式定义的样式属性,在IE中有currentStyle、FF等w3c标准的浏览器中有
getComputedStyle。
为便于操作,现在的很多js-lib中都对此做了封装,但很多时候我们并不需要引入什么lib,我们需要的仅仅是一个getStyle函数来获取元素的当前样式定义。参考了几个JS-Lib的代码,决定实现一个简化版的getStyle函数。该函数目标为:满足大多数需要、跨浏览器、代码简洁、性能优良
。本着这几点要求,本人花了一个小时的时间才搞定,主要利用了“JS逻辑运算符特性、代码"编译",函数的即时执行”几个小技巧,写到这里,以备以后使用,如果能对哪位朋友有帮助,那当然更好。
代码如下:
var
getStyle=function
(){
var
f=document
.defaultView;
return
new
Function('el'
,'style'
,[
"style.indexOf('-')>-1 && (style=style.replace(/-(\\w)/g,function(m,a){return a.toUpperCase()}));"
,
"style=='float' && (style='"
,
f ? 'cssFloat'
: 'styleFloat'
,
"');return el.style[style] || "
,
f ? 'window.getComputedStyle(el, null)[style]'
: 'el.currentStyle[style]'
,
' || null;'
].join(''
));
}();
//使用示例:
var
el=document
.getElementById('test'
);
getStyle(el,'line-height'
);
getStyle(el,'color'
);
getStyle(el,'float'
);
分享到:
相关推荐
} 定义一个id=”flower”的div元素 并设置如上样式,我们的目标就是通过javascript来获取样式的最终属性 ”flower”>…</div> getStyle函数: 这里用到了三个原型扩展 String.prototype.capitalize 这个方法是让字符...
考虑到上述问题,我们可以通过`getStyle`函数来实现一个跨浏览器的获取元素样式的方法。该函数的实现主要基于以下步骤: 1. 首先检查浏览器是否支持`getComputedStyle`方法。 2. 如果支持,使用`getComputedStyle`...
为了方便复用,我们可以将这段代码封装成一个函数,接受元素和样式属性作为参数: ```javascript function getStyle(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return ...
示例中定义了一个名为getstyle的函数,该函数通过判断浏览器类型来选择合适的属性获取元素样式。 需要注意的是,在IE浏览器中使用obj.currentStyle时,对于部分属性值可能需要进行类型转换,因为currentStyle返回的...
在文章中给出的`getStyle`函数就是一个兼容处理的示例,它通过判断`window.getComputedStyle`是否存在来决定使用哪个方法获取样式。 #### 7. JQuery中css()方法的底层实现 在使用JQuery时,`css()`方法是用来获取...
此外,文档还展示了如何通过编写一个通用的函数来兼容不同的浏览器,并且给出了获取和设置元素样式值时需要注意的要点。 首先,我们来看IE浏览器中获取非行间样式的方法。在IE浏览器中,可以通过currentStyle属性来...
本文将介绍使用原生JavaScript来获取元素样式的方法,这种方法主要分为几种:使用ele.style属性、getComputedStyle方法、currentStyle属性以及getPropertyValue方法。 首先,ele.style属性是最直接获取样式的方式,...
为了在多浏览器环境下都能工作,我们可以创建一个函数`getStyle()`来封装获取元素样式的过程,使其能够兼容各种浏览器,包括IE6至IE8。 在实际开发中,为了实现跨浏览器兼容性,我们经常会在原生JavaScript和jQuery...
`cloneName`用于存储生成的CSS类名,`sData`用于缓存已经创建的`<style>`元素,`addHeadStyle`用于向文档头添加新的CSS规则,以及`getStyle`函数,用来兼容不同浏览器的获取元素样式的方法。 `cloneStyle`函数的...
描述部分简单介绍了文章的内容和目的,告诉我们作者认为这是一个值得分享的方法,并鼓励读者学习。标签指明了文章的主题是“js 获取外链...通过合理利用这些方法,可以在多种浏览器环境中实现对元素样式的准确获取。
在JavaScript中,获取元素的样式是Web开发中常见的需求,尤其在动态修改页面样式或进行复杂交互时。本文将深入探讨两种主要方法:`getComputedStyle` 和 `currentStyle`,以及如何在不同的浏览器环境中有效地获取...
而`getStyle`函数用于获取元素的CSS样式,例如`alert($('a').getStyle('display'));`会返回该元素的'display'样式值。 ### 5. 尺寸和位置管理函数:`getSize`、`getPosition` 和 `setPosition` `getSize`函数用于...
1. **获取元素样式(getStyle)** 在JavaScript中,获取元素的CSS样式通常有两种方法:`window.getComputedStyle()` 和 `element.style`。`getStyle` 函数可能就是封装了这两种方式,以提供一个统一的接口。例如,它...
在不同的浏览器环境中,获取元素样式的方法可能会有所不同,因此需要采用跨浏览器的方式来实现。下面将详细介绍如何使用JavaScript来获取元素的样式信息,并探讨不同获取方式的优先级。 首先,JavaScript提供了一个...
- **兼容性处理**: 考虑不同浏览器之间的差异,提供统一的获取元素样式的解决方案。 - 示例代码:`function getStyle(obj, attr) { return obj.style[attr] || window.getComputedStyle(obj, false)[attr]; }` ###...
描述中的“有需要的朋友可以参考一下”提示我们,这个问题的解决方案适用于那些需要在JavaScript中动态获取元素样式信息的情况。 标签“js 获取属性值”进一步明确了讨论的主题,即如何通过JavaScript获取CSS属性值...
「JavaScript 完美运动框架」是实现元素多个属性同时运动的解决方案,它通过 `getStyle` 函数获取元素的样式值,然后使用 `startMove` 函数来实现元素的逐帧运动。该框架可以广泛应用于各种 web 开发项目中,例如...