js中如何獲取元素樣式
阿新 • • 發佈:2019-02-20
週末寫了個原生的animation元件,其中使用原生的document.getElementByIdx_x_x('...').style來獲取元素的相關樣式值,但是奇怪的是獲取不到相應的值:
<style>
body{margin:0 auto;text-align:center;}
div{position:relative;left:10px;}
</style>
<div id="pic1">
<img src="http://pic1.xihuan.me/edr/196__/t02362982432fa1b14e.jpg">
</div>
<script>
var dom1 = document.getElementByIdx_x('pic1');
console.log(dom1.style.left);
</script>
控制檯中顯示為空。
查詢了相關資料發現問題如下: style只能獲取元素的內聯樣式 ,內部樣式和外部樣式使用style是獲取不到的。
currentStyle可以彌補style的不足,但是只適用於IE。
getComputedStyle同currentStyle作用相同,但是適用於FF、opera、safari、chrome。
寫了個getStyle的自定義函式,來相容ie和其他瀏覽器,使用getStyle來獲取頁面中元素的樣式,問題解決。
getElementStyle: function(el,attr){
//獲取el當前的attr樣式,解決ie問題
return el.currentStyle?el.currentStyle[attr]:getComputedStyle(el,null)[attr];
}
獲取後返回10px。
注意:
currentStyle和getComputedStyle只能用於獲取頁面元素的樣式,不能用來設定相關值。
如果要設定相應值,應使用style 。
查詢了相關資料發現問題如下: style只能獲取元素的內聯樣式