前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何获取元素样式

如何获取元素样式

作者头像
跑马溜溜的球
发布2020-12-07 15:23:55
1.9K0
发布2020-12-07 15:23:55
举报
文章被收录于专栏:日积月累1024

元素的style属性时常被用于获取元素样式,但很多时候它是不奏效的。看下面的代码:

代码语言:javascript
复制
<html>
<body>
    <style>
        #ex2 {height:100px;width:100px;background:blue;}
    </style>
    <div style="height:100px;width:100px;background:green;" id='ex1'></div>
    <div id='ex2'></div>
    <script>
        var elem1 = document.getElementById('ex1');
        alert(elem1.style.width);
        var elem2 = document.getElementById('ex2');
        alert(elem2.style.width);
    </script>
</body>
</html>

我们发现,elem1 的值是可以取到的( 100px ),但 elem2 则是空。这是因为, style 属性只能获取内联样式。那么对于非内联样式我们应该如何取得其值呢?微软和 W3C 都提供了解决方案。

微软方案 使用currentStyle属性,它的工作方式很像style属性,但你不能通过它设置样式。 例如:

代码语言:javascript
复制
var x = document.getElementById(‘test’);
alert(x.currentStyle.color);

W3C方案 使用window.getComputedStyle() 方法,这个方法的使用略复杂。 例如:

代码语言:javascript
复制
var x = document.getElementById(‘test’);
alert(window.getComputedStyle(x, null).color);

整合两种解决方案,我们给出函数

代码语言:javascript
复制
function getRealStyle(elem, styleName){
    var realStyle = null;
    //微软
    if (elem.currentStyle){
        realStyle = elem.currentStyle[styleName];
    }
    //W3C
    else if (window.getComputedStyle){
        realStyle = window.getComputedStyle(elem, null)[styleName];
    }
    return realStyle;
}

使用这个函数,我们可以得到 elem2 的正确值 100px 。

代码如下:

代码语言:javascript
复制
var elem2 = document.getElementById('ex2');
alert(getRealStyle(elem2, 'width'));

注: getComputedStyle()总是返回一个像素值(**px),即使我们在css中定义是样式是11%或是50em。

参考:《ppk谈javascript第9章 CSS修改 A style属性

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013/03/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档