jsのstyle.widthとoffsetWidthの違いを詳しく解説

小云云
リリース: 2017-12-22 10:10:33
オリジナル
2358 人が閲覧しました

初心者として、この記事では、特定の要素の幅(高さ、上部の値など)を取得するときに、style.width を使用するか、offsetWidth を使用するかについてよく疑問に遭遇します。 jsにおけるstyle.widthとoffsetWidthの違い(詳細解説)を踏まえた記事をお届けします。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。皆さんが js の style.width と offsetWidth の違いをよりよく理解できることを願っています。

1.

など、スタイルがインラインで記述されている場合、style.width または offsetWidth を使用して要素の幅を取得できます。

ただし、#box{ width: 100px; } のようにスタイルがスタイルシートに記述されている場合、offsetWidth は要素の幅を取得するためにのみ使用でき、style.width によって返される値は空になります。

2. style.width 取得される要素の幅は、borderとpaddingによって占められる幅を除いたpの幅のみであり、幅の値は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

コンソールによる 2 番目の結果出力: 308 注: 300+ 3x2 +1x2 = 308 、単位なし

3. style.widthは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 での関数の適用と呼び出しの詳細な説明

以上がjsのstyle.widthとoffsetWidthの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート