html节点样式,JavaScript获取DOM节点HTML元素CSS样式

如何使用 JavaScript 获取某个 DOM 节点下 HTML 元素的 CSS 样式值?使用过 JQuery 的童鞋一定都非常的熟悉,Jquery 提供了非常强大的 CSS 方法,可以很方便的设置和获取元素的 style 属性。

某些情况下,我们不能使用 JQuery 时,就必须使用纯 JavaScript 获取元素的 style 属性值。本文将介绍使用纯 JavaScript 获取元素的的样式值。

使用 CSS 控制页面的四种方式,分别为行内样式(内联样式)、内嵌式、链接式、导入式,下面分别介绍。

行内样式(内联样式)即写在 HTML 标签中的 style 属性中控制元素样式,如下代码示例:

内嵌样式即写在 style 标签中,如下代码示例:

div{ width:100px; height:100px }

链接式即为用 link 标签引入css文件,如下代码示例:

导入式即为用 import 引入 CSS 文件,如下代码示例:

@import url("/static/css/main.css?v=1")

可以使用 style 属性获取 CSS 样式,但是 style 只能获取元素的内联样式。因此,要获取元素的完整的样式信息,必须使用 window 对象的 getComputedStyle 方法,此方法有2个参数,第一个参数为要获取计算样式的元素,第二个参数可以是null、空字符串、伪类(如:before,:after),这两个参数 都是必需的。在 IE8 以下浏览器中没有实现 getComputedStyle 方法,但可以使用 IE 中每个元素有自己的 currentStyle 属性来获取样式。获取元素样式的兼容代码如下:

#eleid{

font-size:14px;

}

var ele = document.getElementById("eleid");

var style = window.getComputedStyle ?

window.getComputedStyle(ele, "") :

ele.currentStyle;

var font_size = style.fontSize;  //14px;

获取和

var obj = document.styleSheets[0];

if( obj.cssRules ) {

// 非IE [object CSSRuleList]

rule = obj.cssRules[0];

} else {

// IE [object CSSRuleList]

rule = obj.rules[0];

}

网上流传的一些获取样式的方法收集如下:

var css = function (_obj,_name){

var result;

//转换成小写

_name = _name.toLowerCase();

//获取样式值

if(_name && typeof value === 'undefined'){

//如果该属性存在于style[]中 (操作获取内联样式表 inline style sheets)

if(_obj.style && _obj.style[_name]){

result = _obj.style[_name];

}

//操作嵌入样式表或外部样式表 embedded style sheets and linked style sheets

else if(_obj.currentStyle){

// 否则 尝试IE的currentStyle

_name = _name.replace(/\-([a-z])([a-z]?)/ig,function(s,a,b){

return a.toUpperCase()+b.toLowerCase();

});

result = _obj.currentStyle[_name];

}

//或者W3C的方法 如果存在的话 Firefox,Opera,safari

else if(document.defaultView && document.defaultView.getComputedStyle){

//获取Style属性的值,如果存在

var w3cStyle = document.defaultView.getComputedStyle(_obj, null);

result = w3cStyle.getPropertyValue(_name);

}

if(result.indexOf('px')!=-1) result = result.replace(/(px)/i,'');

return result;

}

}

function getStyle( elem, name )

{

//如果该属性存在于style[]中,则它最近被设置过(且就是当前的)

if (elem.style[name])

{

return elem.style[name];

}

//否则,尝试IE的方式

else if (elem.currentStyle)

{

return elem.currentStyle[name];

}

//或者W3C的方法,如果存在的话

else if (document.defaultView && document.defaultView.getComputedStyle)

{

//它使用传统的"text-Align"风格的规则书写方式,而不是"textAlign"

name = name.replace(/([A-Z])/g,"-$1");

name = name.toLowerCase();

//获取style对象并取得属性的值(如果存在的话)

var s = document.defaultView.getComputedStyle(elem,"");

return s && s.getPropertyValue(name);

//否则,就是在使用其它的浏览器

}

else

{

return null;

}

}

不过对于css中的float属性,由于JavaScript将float作为保留字,所以不能将其用作属性名,因此有了替代者,在 IE中是”styleFloat”,而在FireFox、Safari、Opera和Chrome中则是”cssFloat”。所以基于兼容性的考虑可以 将样式操作改为如下形式:

//element:需要获取样式的目标元素;name:样式属性

function getStyle(element, name) {

var computedStyle;

try {

computedStyle = document.defaultView.getComputedStyle(element, null);

} catch (e) {

computedStyle = element.currentStyle;

}

if (name != "float") {

return computedStyle[name];

} else {

return computedStyle["cssFloat"] || computedStyle["styleFloat"];

}

}

//element:需要设置样式的目标元素;name:样式属性;value:设置值

function setStyle(element, name, value) {

if (name != "float") {

element.style[name] = value;

} else {

element.style["cssFloat"] = value;

element.style["styleFloat"] = value;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值