获取元素样式信息于三中获取方式的区别

大家都知道,用document.getElementById(‘element‘).style.xxx可以获取元素的样式信息,可是它获取的只是DOM元素style属性里的样式规则,对于通过class属性引用的外部样式表,就拿不到我们要的信息了。

DOM标准里有个全局方法getComputedStyle,可以获取到当前对象样式规则信息,如:getComputedStyle(obj,null).paddingLeft,就能获取到对象的左内边距。但是事情还没完,万恶的IE不支持此方法,它有自己的一个实现方式,那就是currentStyle,不同于全局方法getComputedStyle,它是作为DOM元素属性存在的,如:obj.currentStyle.paddingLeft,在IE中就获取到对象的左内边距了,兼容性的写法如下:

代码如下:

return window.getComputedStyle ?
window.getComputedStyle(obj,null).paddingLeft : obj.currentStyle.paddingLeft;

这样,就能在IE及FF中返回对象的当前样式信息了。

特别注意一点:如果要获取当前对象的颜色信息,IE返回的是16进制的‘#ffffff‘,而FF返回的是rgb(255,255,255)

用js的style属性可以获得html标签的样式,但是不能获取非行间样式。那么怎么用js获取css的非行间样式呢?在IE下可以用currentStyle,而在火狐下面我们需要用到getComputedStyle。下面是一个小示例:

代码如下:

<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>js用currentStyle和getComputedStyle获取css样式</title>

<style type="text/css">
#div1{width:100px; height:100px;
background:red;}
</style>
<script type="text/javascript">

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

{
var oDiv=document.getElementById(‘div1‘);

alert(getStyle(oDiv,‘width‘))
}
</script>
</head>

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

</html>

2. 读取内联之外的样式(style、currentStyle、getComputedStyle区别

最常用的是style属性,在JavaScript中,通过document.getElementById(id).style.XXX就可以获取到XXX的值,但意外的是,这样做只能取到通过内嵌方式设置的样式值,即style属性里面设置的值。

样式表有三种方式
内嵌样式(inline Style) :是写在Tag里面的,内嵌样式只对所有的Tag有效。
内部样式(internal
Style Sheet):是写在HTML的<head></head>里面的,内部样式只对所在的网页有效。

外部样式表(External Style
Sheet):如果很多网页需要用到同样的样式(Styles),将样式(Styles)写在一个以.css为后缀的CSS文件里,然后在每个需要用到这些样式(Styles)的网页里引用这个CSS文件。

下面的是读取除了内嵌样式之外样式的js,只能读不能写。

复制代码
代码如下:

var mydiv =
document.getElementById(‘mydiv‘);
if(mydiv.currentStyle) {
var width =
mydiv.currentStyle[‘width‘];
alert(‘ie:‘ + width);
} else
if(window.getComputedStyle) {
var width = window.getComputedStyle(mydiv ,
null)[‘width‘]
alert(‘firefox:‘ + width);
}
另外在FF下还可以通过下面的方式获取

document.defaultView.getComputedStyle(mydiv,null).width

window.getComputedStyle(mydiv , null).width

最常用的是style属性,在JavaScript中,通过document.getElementById(id).style.XXX就可以获取到XXX的值,但意外的是,这样做只能取到通过内嵌方式设置的样式值,即style属性里面设置的值。

解决方案:引入currentStyle,runtimeStyle,getComputedStyle
style
标准的样式!可能是由style属性指定的!
runtimeStyle 运行时的样式!如果与style的属性重叠,将覆盖style的属性!

currentStyle 指 style 和 runtimeStyle 的结合!

通过currentStyle就可以获取到通过内联或外部引用的CSS样式的值了(仅限IE)

如:document.getElementById("test").currentStyle.top

要兼容FF,就得需要getComputedStyle 出马了
注意:getComputedStyle是firefox中的,

currentStyle是ie中的.
比如说

复制代码
代码如下:

<style>
#mydiv {
width :
300px;
}
</style>

则:

复制代码
代码如下:

var mydiv =
document.getElementById(‘mydiv‘);
if(mydiv.currentStyle) {
var width =
mydiv.currentStyle[‘width‘];
alert(‘ie:‘ + width);
} else
if(window.getComputedStyle) {
var width = window.getComputedStyle(mydiv ,
null)[‘width‘];
alert(‘firefox:‘ + width);
}

另外在FF下还可以通过下面的方式获取

复制代码
代码如下:

document.defaultView.getComputedStyle(mydiv,null).width

window.getComputedStyle(mydiv , null).width

时间: 2024-10-31 17:04:37

获取元素样式信息于三中获取方式的区别的相关文章

javascript 获取元素样式的方法

javascript 获取元素样式常用方法. Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式(<div style="color:#369">hello</div>),可以直接使用element.style.color来直接获取css属性的值: 2. 但是对于外部定义的css样式使用这种方式就无法获取了,而且IE浏览器和其他标准浏览器(Firefox,Chrome,Opera,

原生js获取元素样式值

在学习js初期,就一直有一个疑问,获取元素样式的值,不是直接使用obj.style.left之类的就可以得到了吗?可是使用这样的方式,有的时候能够获取得到,有的时候又不能获取,一直疑惑不已,但是由于以前学习态度的问题,也没有深究,今天专门花了点时间整理了一下这方面的知识. 样式 首先,我们要明确样式的种类有以下三种 内联样式: 也就是行内样式,直接写在DOM元素的style属性中 嵌入样式: 写在html页面中的<style></style>中的样式 外部样式: 由link标签引入

原生js获取元素样式

摘要: 我们在开发过程中经常会遇到通过js获取或者改变DOM元素的样式,方法有很多,比如:通过更改DOM元素的class.现在我们讨论原生js来获取DOM元素的CSS样式,注意是获取不是设置 在开始之前先说下获取最终应用在元素上的所有CSS属性对象的意思是,如果没有给元素设置任何样式,也会把浏览器默认的样式返回来. 1.ele.style 在学习DOM的时候就看到通过ele.style来获取元素样式值,但是有时候获取的并非是节点的样式值,而是空值.这是因为ele.style只能获取写在元素标签中

获取元素样式对象 页面滚出 页面可是大小 添加监听事件 获取事件参数浏览器中位置 的兼容

/** * 获取浏览滚动出去的距离 * @returns {{scrollY: (Number|number), scrollX: (Number|number)}} */function scroll(){ return{ scrollY:window.scrollY||document.body.scrollTop||document.documentElement.scrollTop||0, scrollX:window.scrollX||document.body.scrollLeft|

JavaScript获取元素样式

原生的JavaScript获取写在标签内部的样式很简单: <div class="test" id="test" style="width:100px;">test</div> <script type="text/javascript"> window.onload=function(){ var oTest=document.getElementById("test"

js获取元素样式方法

? 1 2 3 4 5 6 7 8 function getStyle(ojb,attr){       if(obj.currentStyle){             return obj.currentStyle[attr];       }         else{            return getComputedStyle(obj,false)[attr];        } } js获取元素样式方法,布布扣,bubuko.com

函数return/获取元素样式/封装自己的库

一:函数return <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title>   <script>   // return 返回值 // 数字.字符串.布尔.函数.对象(元素\[]\{}\null).未定

js获取元素样式包括非行内样式

var obj=document.getElementById("id"): 由于js新版本的发放,越来越多的人喜欢用原生js而非jquery对dom元素进行操作,那么如果通过js获取dom元素的样式呢,很多人都知道用obj.style这种方式,但是,这种方式只能获取dom行内样式,一旦,我们定义class,然后再css文件里写时就会获取不到,下面我主要介绍获取行内样式和获取非行内样式两种获取方法. 1,获取行内样式. <div style="width:200&quo

Js获取元素样式值(getComputedStyle&amp;currentStyle)兼容性解决方案

因为:style(document.getElementById(id).style.XXX)只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. 一般js获取内部样式和外部样式使用getComputedStyle,以及currentStyle. IE下获取元素的实际属性值使用currentStyle属性,getComputedStyle同currentStyle作用相同,但是适用于FF.opera.safari.chrome.但用这种方法在IE7,IE8,IE9获取元素属性值