getComputedStyle()方法如何獲取float屬性值

admin發表於2017-03-29

如果要獲取元素樣式的最終值,通常情況下要使用getComputedStyle()方法。

為了相容低版本的IE瀏覽器也要配合currentStyle屬性使用。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone{
  border:1px red solid;
  float:left;
}
</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 oLi=document.getElementById('antzone');
  var oshow=document.getElementById("show");
  oshow.innerHTML=(getStyle(oLi,'float'))
}
</script>
</head>
<body>
<ul>
  <li id="show"></li>
  <li id="antzone">螞蟻部落</li>
</ul>
</body>
</html>

上面的程式碼在IE和谷歌瀏覽器中沒有任何問題,可以正確獲取float屬性值。

但是在火狐瀏覽器中則無法實現,這是因為float是javascript的保留字,所以要使用cssFloat這種形式。

程式碼修改如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone{
  border:1px red solid;
  float:left;
}
</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 oLi=document.getElementById('antzone');
  var oshow=document.getElementById("show");
  if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){  
    oshow.innerHTML=(getStyle(oLi,'cssFloat'))
  }
  else{
    oshow.innerHTML=(getStyle(oLi,'float'))
  }
}
</script>
</head>
<body>
<ul>
  <li id="show"></li>
  <li id="antzone">螞蟻部落</li>
</ul>
</body>
</html>

相關文章