使用JavaScript获取CSS属性值

如果需要在JavaScript中设置元素的属性值,通常是比较简单的,只需通过obj.style.[attr]就可以了。

例如有一个HTML结构:

<div id="div1"></div>

现在要设置div元素的宽为100px:

var div = document.getElementById("div1");
div.style.width = '100px';

这样的话,HTML结构会变成这样:

<div id="div1" style="width:100px;"></div>

也就是说,JavaScript只能读取和改变元素内嵌样式,而写在外部CSS文件中和内联样式中属性,JavaScript是无法获得的。

其实也很容易理解,因为内嵌样式的优先级最高,这样可以确保JavaScript中修改的样式得到执行。

但有时我们需要获取某个元素当前的样式,这就需要其他办法了。

JavaScript中有一个getComputedStyle()方法,它得到所有的实际(computed) CSS指定元素的属性和值。计算出的样式是在显示元件,来自多个样式源计算以后最终的样式。

样式来源包括:内部样式表,外部样式表,继承的样式和浏览器默认样式。

所述getComputedStyle()方法返回一个CSSStyleDeclaration对象 。

我们通过一个例子来说明:

function getStyle(obj, attr) {
    if (window.getComputedStyle) {
        return window.getComputedStyle(obj, null)[attr];
    } else if (obj.currentStyle) {
        return obj.currentStyle[attr];
    }
    return null;
}

其中currentStyle是早期IE的方法,IE9已经开始支持getComputedStyle方法了。

需要注意的是,不能通过getComputedStyle方法改变属性值,改变属性值,还是需要使用obj.style.[attr]的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,786评论 1 92
  • JavaScript 将字符串转换为数字 parseInt() ◆只保留数字的整数部分,不会进行四舍五入运算。 ...
    AkaTBS阅读 1,000评论 0 9
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock阅读 3,391评论 2 36
  • HTML+CSS 1.对WEB标准以及W3C的理解与认识 标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使...
    aymincoder阅读 5,100评论 2 188
  • 原文地址:The Art of Designing With Heart 原文作者:Jonas Downey 译文...
    llp要变身阅读 1,254评论 3 4