getComputedStyle()与currentStyle()、style()方法「建议收藏」

JS使用getComputedStyle()方法获取CSS属性值 在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如下:1.obj.style:这个方法只能JS只能获取写在html标签中的写在style属性中的值(style=”…”),而无法获取定义在<styletype="text/c…

大家好,又见面了,我是你们的朋友全栈君。

JS使用getComputedStyle()方法获取CSS属性值

在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如下:

1. obj.style:这个方法只能JS只能获取写在html标签中的写在style属性中的值(style=”…”),而无法获取定义在<style type=”text/css”>里面的属性。

代码如下:
复制代码
 1 <html xmlns=”http://www.w3.org/1999/xhtml“> 
 2 <head> 
 3 <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> 
 4 <title>JS获取CSS属性值</title> 
 5 <style type=”text/css”> 
 6 
 7 .ss{color:#cdcdcd;} 
 8 
 9 </style> 
10 </head> 
11 
12 <body> 
13 <div id=”css88″ class=”ss” style=”width:200px; height:200px; background:#333333″>JS获取CSS属性值</div> 
14 
15 <script type=”text/javascript”> 
16 alert(document.getElementById(“css88″).style.width);//200px 
17 alert(document.getElementById(“css88″).style.color);//空白 
18 </script> 
19 </body> 
20 </html>
复制代码

 

2. IE中使用的是obj.currentStyle方法,而FF是用的是getComputedStyle 方法

“DOM2级样式”增强了document.defaultView,提供了getComputedStyle()方法。这个方法接受两个参数:要取得计算样式的元素和一个伪元素字符串(例如“:after”)。如果不需要伪元素信息,第二个参数可以是null。getComputerStyle()方法返回一个CSSStyleDeclaration对象,其中包含当前元素的所有计算的样式。以下面的HTML页面为例:

代码如下:

复制代码
 1 <html> 
 2 <head> 
 3 <title>计算元素样式</title> 
 4 <style> 
 5 #myDiv { 
 6     width:100px; 
 7     height:200px; 
 8 } 
 9 </style> 
10 <body> 
11 <div id ="myDiv" style=" border:1px solid black"></div> 
12 
13 <script> 
14 var myDiv = document.getElementById("myDiv"); 
15 var computedStyle = document.defaultView.getComputedStyle(myDiv, null); 
16 
17 alert(computedStyle.backgroundColor); //"red" 
18 alert(computedStyle.width); //"100px" 
19 alert(computedStyle.height); //"200px" 
20 alert(computedStyle.border); //在某些浏览器中是“1px solid black” 
21 </script> 
22 </body> 
23 </head> 
24 </html></span>
复制代码

边框属性可能也不会返回样式表中实际的border规则(Opera会返回,但其它浏览器不会)。存在这个差别的原因是不同浏览器解释综合属性的方式不同,因为设置这种属性实际上会涉及很多其他的属性。在设置border时,实际上是设置了四个边的边框宽度、颜色、样式属性。因此,即使computedStyle.border不会在所有浏览器中都返回值,但computedStyle.borderLeftWidth则会返回值。

需要注意的是,即使有些浏览器支持这种功能,但表示值的方式可能会有所区别。例如,Firefox和Safari会返回将所有颜色转换成RGB格式。因此,即使getComputedStyle()方法时,最好多在几种浏览器中测试一下。

IE不支持getComputedStyle()方法,但它有一种类似的概念。在IE中,每个具有style属性的元素还有一个currentStyle属性。这个属性是CSSStyleDeclaration的实例,包含当前元素全部计算后的样式。取得这些样式的方法差不多,如下:

代码如下:
复制代码
<span style="font-family:Arial;font-size:14px;">var myDiv = document.getElementById("myDiv"); 
var computedStyle = myDiv.currentStyle; 
alert(computedStyle.backgroundColor); //"red" 
alert(computedStyle.width); //"100px" 
alert(computedStyle.height); //"200px" 
alert(computedStyle.border); //undefined</span>
复制代码

与DOM版本的方式一样,IE也没有返回border样式,因为这是一个综合属性。

3. 我自己在写测试case过程中写的一个简单的函数(适用于Chrome):

代码如下:
<span style=”font-family:Arial;font-size:14px;”>
 
function getCSS(div){ 
return document.defaultView.getComputedStyle(div, null); 
//return div.currentStyle;//没用过,IE 
}
 
</span> 
 
 
——————————————————————————————————————
 
慕课网评论:
 
下面这个函数,能够获取一个元素的任意 CSS 属性值。

function getStyle(element, attr) {

        if(element.currentStyle) {

                return element.currentStyle[attr];

        } else {

                return getComputedStyle(element, false)[attr];

        }

}

比如,本例中如果想获得 lists 的 left 属性值,只需要
 
getStyle(lists,”left”)
 
就可以啦。

转载自:https://www.cnblogs.com/tongzhou/p/6432807.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127467.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月9日 下午8:20
下一篇 2022年4月9日 下午8:40


相关推荐

  • idea 21 激活码【最新永久激活】「建议收藏」

    (idea 21 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~HC…

    2022年4月1日
    235
  • DWR问题

    DWR问题这两天琢磨了 jQuery 的 ajax 使用方法 好像运用到 php 中很方便 不太熟悉怎么运用到 ssh 框架中 回过头来 发现一直用的 DWR 也用不起来了 不知道问题出在了哪里 花了好多时间 功夫不负有心人发现了症结所在 dwr 被我动过了下面是一个和 Spring 配合使用的 DWR 例子 其中 beanName 不能改为其它名字 如果不在 spring 中使用的话 prarm 就为 cla

    2026年3月17日
    1
  • JaxWsProxyFactoryBean调用WebService实例[通俗易懂]

    JaxWsProxyFactoryBean调用WebService实例[通俗易懂]WebServiceUtils工具类packagexxxx;importjava.util.ResourceBundle;importorg.apache.cxf.endpoint.Client;importorg.apache.cxf.frontend.ClientProxy;importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean…

    2022年7月21日
    16
  • Linux 日志分析工具之awstats详解「建议收藏」

    Linux 日志分析工具之awstats详解「建议收藏」原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://freeloda.blog.51cto.com/2033581

    2022年7月1日
    35
  • idea配置svn仓库

    idea配置svn仓库IntelliJIDEA使用教程(总目录篇)首先,使用的时候,自己得先在电脑上安装个小乌龟。也就是svn啦。第一步安装小乌龟。如下:具体安装好像没什么具体要求,一路next,就好。如上图箭头所示,在安装TortoiseSVN的时候,默认commandlineclienttools,是不安装的,这里建议勾选上。这个我不确定我当时选没选,不过呢,你给安装上,也是没问题的。把上面的勾选取…

    2022年5月14日
    108
  • 【DL】卷积膨胀 Dilation

    【DL】卷积膨胀 DilationBacktoDeepLe 是对 kernel 进行膨胀 多出来的空隙用 0padding 用于克服 stride 中造成的失真问题 对应关系是 kd k 1 d 1k d k 1 timesd 1kd k 1 d 1 对原始 kernel 进行 d 倍 dilation 之后得到新的 kdk d

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号