`

实现一个获取元素样式的函数getStyle

阅读更多

实现一个获取元素样式的函数getStyle

元素的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'
); 

分享到:
评论

相关推荐

    JS getStyle获取最终样式函数代码

    } 定义一个id=”flower”的div元素 并设置如上样式,我们的目标就是通过javascript来获取样式的最终属性 ”flower”>…</div> getStyle函数: 这里用到了三个原型扩展 String.prototype.capitalize 这个方法是让字符...

    手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)

    考虑到上述问题,我们可以通过`getStyle`函数来实现一个跨浏览器的获取元素样式的方法。该函数的实现主要基于以下步骤: 1. 首先检查浏览器是否支持`getComputedStyle`方法。 2. 如果支持,使用`getComputedStyle`...

    javascript获取非行间样式的方法

    为了方便复用,我们可以将这段代码封装成一个函数,接受元素和样式属性作为参数: ```javascript function getStyle(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return ...

    js获取元素外链样式的方法

    示例中定义了一个名为getstyle的函数,该函数通过判断浏览器类型来选择合适的属性获取元素样式。 需要注意的是,在IE浏览器中使用obj.currentStyle时,对于部分属性值可能需要进行类型转换,因为currentStyle返回的...

    利用原生JavaScript获取元素样式只是获取而已

    在文章中给出的`getStyle`函数就是一个兼容处理的示例,它通过判断`window.getComputedStyle`是否存在来决定使用哪个方法获取样式。 #### 7. JQuery中css()方法的底层实现 在使用JQuery时,`css()`方法是用来获取...

    JavaScript兼容性总结之获取非行间样式案例

    此外,文档还展示了如何通过编写一个通用的函数来兼容不同的浏览器,并且给出了获取和设置元素样式值时需要注意的要点。 首先,我们来看IE浏览器中获取非行间样式的方法。在IE浏览器中,可以通过currentStyle属性来...

    原生js获取元素样式的简单方法

    本文将介绍使用原生JavaScript来获取元素样式的方法,这种方法主要分为几种:使用ele.style属性、getComputedStyle方法、currentStyle属性以及getPropertyValue方法。 首先,ele.style属性是最直接获取样式的方式,...

    原生javascript获取元素样式

    为了在多浏览器环境下都能工作,我们可以创建一个函数`getStyle()`来封装获取元素样式的过程,使其能够兼容各种浏览器,包括IE6至IE8。 在实际开发中,为了实现跨浏览器兼容性,我们经常会在原生JavaScript和jQuery...

    javascript克隆元素样式的实现代码

    `cloneName`用于存储生成的CSS类名,`sData`用于缓存已经创建的`<style>`元素,`addHeadStyle`用于向文档头添加新的CSS规则,以及`getStyle`函数,用来兼容不同浏览器的获取元素样式的方法。 `cloneStyle`函数的...

    js获取元素的外链样式的简单实现方法

    描述部分简单介绍了文章的内容和目的,告诉我们作者认为这是一个值得分享的方法,并鼓励读者学习。标签指明了文章的主题是“js 获取外链...通过合理利用这些方法,可以在多种浏览器环境中实现对元素样式的准确获取。

    javascript 获取元素样式必杀技

    在JavaScript中,获取元素的样式是Web开发中常见的需求,尤其在动态修改页面样式或进行复杂交互时。本文将深入探讨两种主要方法:`getComputedStyle` 和 `currentStyle`,以及如何在不同的浏览器环境中有效地获取...

    一周学会Mootools 1.4中文教程(2)函数

    而`getStyle`函数用于获取元素的CSS样式,例如`alert($('a').getStyle('display'));`会返回该元素的'display'样式值。 ### 5. 尺寸和位置管理函数:`getSize`、`getPosition` 和 `setPosition` `getSize`函数用于...

    JavaScript轮播图案例代码.zip

    1. **获取元素样式(getStyle)** 在JavaScript中,获取元素的CSS样式通常有两种方法:`window.getComputedStyle()` 和 `element.style`。`getStyle` 函数可能就是封装了这两种方式,以提供一个统一的接口。例如,它...

    JavaScript如何获取一个元素的样式信息

    在不同的浏览器环境中,获取元素样式的方法可能会有所不同,因此需要采用跨浏览器的方式来实现。下面将详细介绍如何使用JavaScript来获取元素的样式信息,并探讨不同获取方式的优先级。 首先,JavaScript提供了一个...

    JavaScript实现一个简易的计算器实例代码

    - **兼容性处理**: 考虑不同浏览器之间的差异,提供统一的获取元素样式的解决方案。 - 示例代码:`function getStyle(obj, attr) { return obj.style[attr] || window.getComputedStyle(obj, false)[attr]; }` ###...

    js获取某元素的class里面的css属性值代码

    描述中的“有需要的朋友可以参考一下”提示我们,这个问题的解决方案适用于那些需要在JavaScript中动态获取元素样式信息的情况。 标签“js 获取属性值”进一步明确了讨论的主题,即如何通过JavaScript获取CSS属性值...

    JavaScript完美运动框架

    「JavaScript 完美运动框架」是实现元素多个属性同时运动的解决方案,它通过 `getStyle` 函数获取元素的样式值,然后使用 `startMove` 函数来实现元素的逐帧运动。该框架可以广泛应用于各种 web 开发项目中,例如...

Global site tag (gtag.js) - Google Analytics