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

2016-02-19 15:53 21 1 收藏

今天图老师小编要跟大家分享Javascript 实现一个获取元素样式的函数getStyle,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - Web开发 】

元素的CSS样式,除了包括内联的(即通过style属性加上的)样式定义外,还有页面嵌入的css和外部引入的css两种方式。但在JS中通过el.style.xxx只能获取的内联的样式属性,这就存在比较大的局限性。好在浏览器都提供了另外的方式来获取以其它方式定义的样式属性,在IE中有currentStyle、FF等w3c标准的浏览器中有getComputedStyle。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

为便于操作,现在的很多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');

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

From:http://www.ajaxbbs.net/post/webFront/JS-Get-Style-Function.html

来源:https://www.tulaoshi.com/n/20160219/1610622.html

延伸阅读
标签: Web开发
初学Javascript时写的一个判断浏览器类型的函数(类),不是很完善,不过毕竟第一次写东东,纪念一下! Get Exact Browser Type [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
标签: Web开发
代码如下: SCRIPT LANGUAGE="JavaScript" !-- var test = ["aa","bb","cc","dd","ee"]; document.write(test[Math.floor(Math.random()*test.length)]); setInterval("location.reload()",1000); //-- /SCRIPT 这是个奇妙的方法。适合做标题性质文字的随机轮换显示。 有两种不同的方式实现: 一、随机取单个,二、让整个数组随机...
标签: Web开发
test.htm  1!-- #include file="message.inc" --  2HTML  3HEAD  4TITLE New Document /TITLE  5    meta http-equiv="content-type" content="text/html; charset=shift_jis" /  6    meta http-equiv="pragma" content="no-cache"  7    meta http-equiv="...
标签: Web开发
在JavaScript中我们需要用到trim的地方很多,但是JavaScript又没有独立的trim函数或者方法可以使用,所以我们需要自己写个trim函数来实现我们的目的。 方案一: 以原型方式调用,即obj.trim()形式,此方式简单且使用方面广泛,定义方式如下: ﹤scriptlanguage=”javascript”﹥ /** *删除左右两端的空格 */ String.prototype.t...
标签: Web开发
请选择报告类型 月度报告 季度报告 半年报告 年度报告 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

经验教程

455

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部