首頁  >  文章  >  web前端  >  詳解js中style.width與offsetWidth的區別

詳解js中style.width與offsetWidth的區別

小云云
小云云原創
2017-12-22 10:10:332335瀏覽

作為一個初學者,常常會遇到在取得某一元素的寬度(高度、top值...)時,到底是用 style.width還是offsetWidth的疑惑本文。就為就大家帶來一篇基於js中style.width與offsetWidth的區別(詳解)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。希望大家能更好的掌握js中style.width與offsetWidth的差別。

1. 當樣式寫在行內的時候,如 5b127429c4ebf04538724d6c7714739c時,用 style.width或offsetWidth都可以取得元素的寬度。

但是,當樣式寫在樣式表中時,如 #box{ width: 100px; }, 此時只能用offsetWidth來取得元素的寬度,而style.width所傳回的值為空。

2. style.width 取得的元素寬度只是p的寬度,不包括border、和padding所佔的寬度,且寬度值是帶單位px的。

offsetWidth 取得的元素寬度為width+border+padding的值(不包含margin),且傳回值只為一個數值,不含單位。

如下面的範例所示:


#
<head>
    <script>
      window.onload = function(){
        var box = document.getElementById(&#39;box&#39;);
        console.log(box.style.width); 
        console.log(box.offsetWidth); 
       }
</script>
  </head>
  <body>
    <p id="box" style="width:300px; height: 300px; padding:3px; margin: 1px; border: 1px solid red;"></p>
  </body>

控制台輸出的第一個結果為:  300px

控制台輸出的第二個結果為:  308      註:300+ 3x2 +1x2 = 308, 且不含單位

3. style.widthth. style.widthth 也可以在js中用來設定元素的寬度,而offsetWidth不可以。

如下面的例子所示:


<script>
      window.onload = function(){
        var box = document.getElementById(&#39;box&#39;);
        box.style.width = &#39;200px&#39;;
        console.log(box.offsetWidth);
        console.log(box.style.width);
        box.offsetWidth = &#39;400px&#39;;
        console.log(box.offsetWidth);
        console.log(box.style.width);
      }
    </script>
  </head>
  <body>
    <p id="box" style="width:300px; height: 300px; padding:3px; margin: 2px; border: 1px solid red;"></p>
  </body>

控制台輸出的結果分別為208     200px     208      200px

也就是說通過style.width 設定寬度成功,透過offsetWidth設定寬度失敗。

相關推薦:

某些js中相容性易錯問題的總結

Vue.js中的元件與範本探討

Js中函數apply 、call 的詳解

#

以上是詳解js中style.width與offsetWidth的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn