ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript が要素サイズとサイズ操作を取得する summary_javascript スキル
1. 要素
のインライン スタイルを取得します。2. 計算されたスタイルを取得します
注: 要素の幅と高さが設定されていない場合、IE 以外のブラウザではデフォルトの幅と高さが返されます。 IE で自動文字列
を返す3. タグ
に記述されたスタイルを取得します。cssRules (またはルール) は、インライン スタイルとリンク スタイルの幅と高さのみを取得できますが、インライン スタイルと計算スタイルを取得することはできません。
要約: 要素のサイズを取得する上記の 3 つの CSS メソッドは、要素の CSS サイズを取得することしかできず、要素自体の実際のサイズを取得することはできません。たとえば、パディング、スクロール バー、境界線などを追加します。
4. 要素の実際のサイズを取得します
1. clientWidth と clientHeight
この属性セットは、要素の表示領域のサイズ、要素のコンテンツとパディングが占めるスペースを取得できます。要素のサイズが返されますが、単位はありません。100em などの単位を強制的に設定しても、px のサイズが返されます。 (CSSを取得する場合は、設定したスタイルに従って取得されます)。要素の実際のサイズについては、 clientWidth と clientHeight は次のように理解されます:
a. 境界線を追加します。
b. マージンを追加します。
c. スクロール バーを大きくすると、最終的な値は元のサイズからスクロール バーのサイズを引いた値になります。
d. パディングを増やします。最終的な値は、元のサイズにパディングのサイズを加えたものになります。
注: CSS の幅と高さが設定されていない場合、IE 以外のブラウザにはスクロール バーとパディングの計算されたサイズが含まれますが、IE ブラウザは 0 (IE8 で修正) を返します。
2. スクロール幅とスクロール高さ
このプロパティのセットは、スクロール コンテンツ (表示コンテンツ) の要素サイズを取得できます。要素のサイズを返します。デフォルトの単位は px です。 CSS の幅と高さを設定しない場合は、計算された幅と高さが取得されます。要素の実際のサイズについては、scrollWidth とscrollHeight は次のように理解されます:
1. 境界線を追加します。ブラウザーごとに解釈が異なります (以下は IE8 では正常に機能しますが、IE6 では機能しません):
a) Firefox および Opera ブラウザでは、境界線のサイズが 220x220 に大きくなります
b) IE、Chrome、Safari ブラウザは境界線サイズ 200x200
を無視します。
c) IE ブラウザでは、元のコンテンツの高さ 200x18 のみが表示されます (IE8 ではこの問題が修正されています)
2. パディングを追加します。最終的な値は、元のサイズにパディング サイズを加えた値 (220x220、IE は 220x38) になります
3. スクロール バーを追加します。最終的な値は、元のサイズからスクロール バーのサイズを引いた値 (184x184、IE は 184x18
) になります。
4. 外部国境要塞を追加しました。変更はありません。
5. コンテンツのオーバーフローを増やします。Firefox、Chrome、IE は最初の 3 つのブラウザよりも低い高さを取得し、Safari は最初の 3 つのブラウザよりも高い高さを取得します。
3. offsetWidth と offsetHeight
このプロパティのセットは、ボーダー、パディング、スクロール バーを含む要素の実際のサイズを返すことができます。要素のサイズを返します。デフォルトの単位は px です。 CSS の幅と高さを設定しない場合は、計算された幅と高さが取得されます。要素の実際のサイズについては、offsetWidth と offsetHeight は次のように理解されます:
1. 境界線を追加します。最終的な値は、元のサイズに境界線のサイズを加えた値 (220) になります。
2. パディングを増やします。最終的な値は、元のサイズにパディング サイズを加えた値 (220) になります。
3. 外部国境要塞を追加しました。変更はありません
4. スクロールバーを追加します。変更なし、減少なし
要素のサイズを取得するには、通常、ブロックレベルの要素と CSS サイズが設定された要素を使用する方が便利です。特にインライン要素(inline)やサイズが設定されていない要素の場合は厄介なので、使用する際は注意することをおすすめします。
1. clientLeft と clientTop は境界線のサイズを取得します
この属性セットは、要素によって設定された左境界線と上境界線のサイズを取得できます。現在、Left グループと Top グループのみが提供されており、Right と Bottom グループは提供されていません。 4 つの辺の幅が異なる場合は、計算されたスタイルを通じて直接取得するか、上記の 3 つのグループを減算して要素のサイズを取得することができます。
右枠の幅: obj.offsetWidth-obj.clientWidth-obj.clientLeft
下の境界線の幅: obj.offsetHeight-obj.clientHeight-obj.clientTop
2. offsetLeft と offsetTop
この属性セットは、親要素を基準とした現在の要素の位置を取得できます。親要素を基準とした要素の現在位置を取得するには、position:absolute に設定するのが最善です。そうしないと、ブラウザーごとに解釈が異なります。
a. 位置を絶対に設定すると、すべてのブラウザが同じ値を返します。例:
b. 境界線とパディングを追加しても位置には影響しませんが、外側のパディングを追加すると増加します。
3. box.offsetParent が親要素を取得します
offsetParent では、親要素が
4.scrollTopとscrollLeft
この属性セットは、スクロール バーが非表示になっている領域 (スクロール バーの上の領域) のサイズを取得でき、また、この領域を見つけるように設定することもできます。スクロール バーを初期位置までスクロールさせたい場合は、次の関数を作成できます:
5.getBoundingClientRect()
このメソッドは、left、top、right、bottom の 4 つのプロパティを含む四角形オブジェクトを返します。要素の各辺とページの上辺および左辺との間の距離をそれぞれ表します。
注: IE、Firefox3、Opera9.5、Chrome、Safari がサポートされています。IE では、デフォルトの座標は (2,2) から計算されるため、最終的な距離は他のブラウザよりも 2 ピクセル大きくなります。互換性を持たせるために。
以上がこの記事で説明した内容のすべてです。気に入っていただければ幸いです。