obj.currentStyle.property、window.getComputedStyle(obj,null).property、obj.style.property 获取与元素属性的总结

一 :先看定义:
1 obj.style.property 是一个可读可写的,不仅可以获取属性的值,而且可以改变属性的值;
但是需要注意的是此方法只能获取内嵌在行内元素的属性值,而不能获取内联在 style 标签 里面的属性值,如果内嵌式没有设置某属性(比如width),而要通过obj.style.width 来获取该属性值,那么获取的结果 空字符串
2 obj.currentStyle.property 是IE浏览器的孤僻的支持的获取元素属性值得方法,可以获得任何位置设置的元素的属性值,包括内嵌式,内联式,外联式;
3 window.getComputedStyle(obj,null).property 是一个比较大众的方法,谷歌,火狐,opera,sarifi都支持该方法获取元素的属性,其中第二个参数是伪类,如果需要获取的不是伪类,需要将该值设置为null;
4 总结 :obj.style.property只能获取元素的内嵌式样式属性值,其他两个可以获取内嵌式,内联式 ,外联式中设置的属性值。
二 测试三种方法类型

    var style = window.getComputedStyle (my$("dv"),null);
    console.log("getComputedStyle是"+style);
    // 输出:getComputedStyle是[object CSSStyleDeclaration]
    var style1 = my$("dv").currentStyle;
    console.log("currentStyle是"+style1);
    // 输出:getComputedStyle是[object CSSStyleDeclaration]
    var style2 = my$("dv").style;
    console.log("style是"+style2);
    // 输出:getComputedStyle是[object CSSStyleDeclaration]

由此可知每种方法都是可以获取某元素的css样式对象

三,代码演示

1 设置样式属性的情况:

内嵌式:
html代码

<div id="dv" style="width:50px; height : 40px"></div>

js代码

var dv = document.getElementById("dv");
console.log(dv.style.width);
console,log(dv.style.height);
console.log(window.getComoutedStyle(dv,null).width;
console.log(dv.currentStyle.width);//Ie浏览器

输出结果:
50px ;
40px
;50px;
50px ;

内联式或者外联式

html代码

style{
    width:50px;
    height:40px;
}
<div id="dv" style="width:50px; height : 40px"></div>

js代码:

var dv = document.getElementById("dv");
console.log(dv.style.width);
console,log(typeof dv.style.height);
console.log(window.getComoutedStyle(dv,null).width;
console.log(dv.currentStyle.width);//Ie浏览器

输出结果 :
空字符串
string
50px
50px

2 不设置样式属性的情况,此时只能
a obj.currentStyle.property、window.getComputedStyle(obj,null).property
b 通过 offsetWidth 和 offsetHeight 注意
来获取元素的宽高
html 代码:

    <div id="dv">没有设置样式</div>

js代码:

    var dv = document.getElementById("dv");
    console.log(dv.style.width);
    console,log(typeof dv.style.height);
    console.log(window.getComoutedStyle(dv,null).width;
    console.log(dv.currentStyle.width);//Ie浏览器
    console.log(dv.offsetWidth);
    console.log(dv.offsetHeight);

输出结果:

空字符串
18px
1350px(div元素独占一整行浏览器的显示宽度)
1350px(div元素独占一整行浏览器的显示宽度)
1350
18

如果将div进行元素转化:

    <div id="dv" style="position:absolute;">没有设置样式</div>

输出结果:

空字符串
18px
96px
96px
18
96

四 总结:
1 当给元素设置了样式属性的时候,obj.style只能获取内嵌式, obj.currentStyle.property、window.getComputedStyle(obj,null).property;可以获取任意位置样式属性值,仅仅可读;
offsetWidth offsetHeight 获取的宽高包括元素的 content(width+height)+ padding+border;而 obj.style, obj.currentStyle.property、window.getComputedStyle(obj,null).property获取的元素的宽高指的仅仅是 width 和height ,不包括 padding和border
2 如果没有给元素设置样式obj.currentStyle.property、window.getComputedStyle(obj,null).property 和offsetWidth offsetHeight都可以获取由内容撑开的宽高

五 offset系列其他属性总结:
http://blog.youkuaiyun.com/qq_35809245/article/details/53981843

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值