1、"元素.style.樣式屬性名" ->oDiv.style.height
弊端:"只能"獲取在"行內"上編寫過的樣式,不管在哪些了對應的樣式,只要沒有在行內上寫過,都獲取不到
oDiv.style.height 由於height並沒有寫在行內樣式上(寫在樣式表里了),所以獲取的結果依然是""
2、通過 window.getComputedStyle 獲取所有經過瀏覽器計算的樣式(只要的你的元素在瀏覽器加載的時候渲染過,能夠在頁面中展示,那么當前元素的所有的樣式都是經過瀏覽器計算的,哪怕你沒有寫)
window.getComputedStyle(要操作的元素,元素的偽類(JS一般不用->null)) ->這個獲取到的結果是一個對象數據類型的值(CSSStyleDeclaration內置類的一個實例),里面包含了我們所有經過瀏覽器計算過的樣式屬性名和屬性值
我們想獲取其中某一個樣式的值,只需要對象.屬性名即可->獲取的結果根據自身的情況是帶這個單位的
var obj = window.getComputedStyle(oDiv, null);
雖然上述的方法很好用,但是在IE6~8下不兼容 ->currentStyle
var obj = oDiv.currentStyle;
function getCss(curEle, attr) {//getCss:獲取指定元素的某一個樣式屬性的值 cureEle當前要操作的元素 attr當前需要獲取樣式的屬性名
var val = null, reg = null;
if ("getComputedStyle" in window) {
val = window.getComputedStyle(curEle, null)[attr];
} else {
if (attr === "opacity") {
//對於我們的IE6~8瀏覽器,透明度這個樣式,它使用的不是opacity,而是filter,在部分瀏覽器中我們如果通過opacity獲取透明度的話是獲取不到的
val = curEle.currentStyle["filter"];
reg = /^alpha\(opacity=((?:\d|(?:[1-9]\d+))(?:\.\d+)?)\)$/;
var tempVal = reg.exec(val);
val = tempVal ? tempVal[1] / 100 : 1; //filter是把opacity的值*100得到的,我們還需要把得到的值/100才和我們的opacity保持統一
} else {
val = curEle.currentStyle[attr];
}
}
reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?(px|pt|em|rem)$/; //如果獲取的是數字+單位 我們把單位去掉 否則獲取的是什么 我們就返回什么
return reg.test(val) ? parseFloat(val) : val;
}
var a = getCss(oDiv, "opacity");
console.log(a);