obj.currentStyle.property、window.getComputedStyle(obj,null).property、obj.style.property 获取与元素属性的总结
2017-01-07 00:45
651 查看
一 :先看定义:
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只能获取元素的内嵌式样式属性值,其他两个可以获取内嵌式,内联式 ,外联式中设置的属性值。
二 测试三种方法类型
由此可知每种方法都是可以获取某元素的css样式对象。
三,代码演示
1 设置样式属性的情况:
内嵌式:
html代码
js代码
输出结果:
50px ;
40px
;50px;
50px ;
内联式或者外联式
html代码
js代码:
输出结果 :
空字符串
string
50px
50px
2 不设置样式属性的情况,此时只能
a obj.currentStyle.property、window.getComputedStyle(obj,null).property
b 通过 offsetWidth 和 offsetHeight 注意
来获取元素的宽高
html 代码:
js代码:
输出结果:
空字符串
18px
1350px(div元素独占一整行浏览器的显示宽度)
1350px(div元素独占一整行浏览器的显示宽度)
1350
18
如果将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.csdn.net/qq_35809245/article/details/53981843
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.csdn.net/qq_35809245/article/details/53981843
相关文章推荐
- 获取样式的时候用offsetWidth 这类有Bug 要用 obj.currentStyle.width 或getComputedStyle(obj,null).width
- getComputedStyle方法与currentStyle属性获取元素样式
- 对于用js获取元素的css样式属性(getComputedStyle,currentStyle,style)(getPropertyValue,getAttribute)
- 获取元素属性值,用getComputedStyle和currentStyle
- 获取样式属性getComputed,currentStyle
- getComputedStyle与currentStyle获取元素当前的css样式
- js中获取元素属性、currentStyle与getComputedStyle的区别
- 获取元素样式方式 style、getcomputedstyle与 currentStyle 的用法
- getComputedStyle获取css属性与IE下的currentStyle获取到的值不同
- JS获取元素属性、样式getComputedStyle()和currentStyle方法兼容性问题
- javascript获取元素CSS值window.getComputedStyle
- js用obj.currentStyle和getComputedStyle获取非行间样式的说明
- JS获取CSS样式(style/getComputedStyle/currentStyle)
- getComputedStyle与currentStyle获取样式(style/class)
- getComputedStyle与currentStyle获取样式(style/class)
- style和currentStyle和getComputedStyle获取css样式
- Javascript获取CSS属性值getComputedStyle和currentStyle
- 获取元素CSS值之getComputedStyle方法熟悉
- getComputedStyle与currentStyle获取样式(style/class)
- JS获取CSS样式(style/getComputedStyle/currentStyle)