検索
ホームページウェブフロントエンドjsチュートリアルJavaScript が要素サイズとサイズ操作を取得する summary_javascript スキル

1. 要素

のインライン スタイルを取得します。

コードをコピーします コードは次のとおりです:

var obj = document.getElementById("テスト");
alert(obj.height "n" obj.width);
// 200px 200px typeof=string はスタイル属性
の値を表示するだけです

2. 計算されたスタイルを取得します

コードをコピーします コードは次のとおりです:

var obj = document.getElementById("テスト");
var style = null;
if (window.getComputedStyle) {
Style = window.getComputedStyle(obj, null) // 非 IE
; } else {
スタイル = obj.currentStyle // IE
}
alert("width=" style.width "nheight=" style.height);

注: 要素の幅と高さが設定されていない場合、IE 以外のブラウザではデフォルトの幅と高さが返されます。 IE で自動文字列

を返す

3. タグ

に記述されたスタイルを取得します。

コードをコピーします コードは次のとおりです:

var obj = document.styleSheets[0]; // [object StyleSheetList] スタイル シートの数var rules = null;// [object CSSRule]
if (obj.cssRules){
Rule = obj.cssRules[0] // 非 IE [object CSSRuleList]
; } else {
ルール = obj.rules[0] // IE [オブジェクト CSSRuleList]
; }
アラート(rule.style.width);

cssRules (またはルール) は、インライン スタイルとリンク スタイルの幅と高さのみを取得できますが、インライン スタイルと計算スタイルを取得することはできません。

要約: 要素のサイズを取得する上記の 3 つの CSS メソッドは、要素の CSS サイズを取得することしかできず、要素自体の実際のサイズを取得することはできません。たとえば、パディング、スクロール バー、境界線などを追加します。

4. 要素の実際のサイズを取得します

1. clientWidth と clientHeight
この属性セットは、要素の表示領域のサイズ、要素のコンテンツとパディングが占めるスペースを取得できます。要素のサイズが返されますが、単位はありません。100em などの単位を強制的に設定しても、px のサイズが返されます。 (CSSを取得する場合は、設定したスタイルに従って取得されます)。要素の実際のサイズについては、 clientWidth と clientHeight は次のように理解されます:
a. 境界線を追加します。
b. マージンを追加します。
c. スクロール バーを大きくすると、最終的な値は元のサイズからスクロール バーのサイズを引いた値になります。 d. パディングを増やします。最終的な値は、元のサイズにパディングのサイズを加えたものになります。

コードをコピーします コードは次のとおりです:
#テスト{
背景色: 緑;
幅: 200px;
高さ: 200px;
境界線: 実線 5px 赤 /* 理解に対応、結果: 200,200 */
Margin: 10px; /* b の理解に対応、結果: 200,200*/
Padding: 20px; /* C の理解に対応、結果: 240,240*/
Overflow:scroll; /* d の理解に対応し、結果は次のようになります: 223, 223, 223=200 (CSS サイズ) 40 (両側のパディング) - 17 (スクロール バーの幅) */
}
window.onload = function(){
var obj = document.getElementById("テスト");
alert(obj.clientWidth "," obj.clientHeight);
};

注: 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)やサイズが設定されていない要素の場合は厄介なので、使用する際は注意することをおすすめします。

コードをコピーします コードは次のとおりです:
テスト div 要素
#テスト{
背景色: 緑;
幅: 200px;
高さ: 200px;
枠線: 10px 赤 /*結果: 220,220*/
マージン: 10px; /*結果: 220,220 (変更なし)*/
パディング: 10px; /*結果: 240,240*/
オーバーフロー: スクロール; /*結果: 240,240 (変更なし)*/
}
window.onload = function(){
var obj = document.getElementById("テスト");
alert(obj.offsetWidth "," obj.offsetHeight);
};


5. 要素の周囲のサイズを取得します

1. clientLeft と clientTop は境界線のサイズを取得します
この属性セットは、要素によって設定された左境界線と上境界線のサイズを取得できます。現在、Left グループと Top グループのみが提供されており、Right と Bottom グループは提供されていません。 4 つの辺の幅が異なる場合は、計算されたスタイルを通じて直接取得するか、上記の 3 つのグループを減算して要素のサイズを取得することができます。
右枠の幅: obj.offsetWidth-obj.clientWidth-obj.clientLeft
下の境界線の幅: obj.offsetHeight-obj.clientHeight-obj.clientTop

コードをコピーします コードは次のとおりです:
テスト div 要素
#テスト{
背景色: 緑;
幅: 200px;
高さ: 200px;
境界線の上部: 10 ピクセルの赤の実線
右枠線: 実線 20px #00ff00;
境界線の下部: 30 ピクセルの青の実線;
左枠: 実線 40px #808080; }
window.onload = function(){
var obj = document.getElementById("テスト");
alert(obj.clientLeft "," obj.clientTop) // 40,10
; };

2. offsetLeft と offsetTop
この属性セットは、親要素を基準とした現在の要素の位置を取得できます。親要素を基準とした要素の現在位置を取得するには、position:absolute に設定するのが最善です。そうしないと、ブラウザーごとに解釈が異なります。
a. 位置を絶対に設定すると、すべてのブラウザが同じ値を返します。例:

コードをコピーします コードは次のとおりです:

テスト div 要素

#テスト{
背景色: 緑;
幅: 200px;
高さ: 200px;
位置: 絶対;
左: 30px;
上: 20px;
}
window.onload = function(){
var obj = document.getElementById("テスト");
alert(obj.offsetLeft "," obj.offsetTop) // 30, 20
; };

b. 境界線とパディングを追加しても位置には影響しませんが、外側のパディングを追加すると増加します。

3. box.offsetParent が親要素を取得します
offsetParent では、親要素が

の場合、非 IE は body オブジェクトを返し、IE (IE6) は html オブジェクトを返します。 2 つの要素がネストされている場合、上の親要素でposition:absolute が使用されていない場合、offsetParent は body オブジェクトまたは html オブジェクトを返します。したがって、offsetLeft と offsetTop を取得する場合、CSS の位​​置決めは非常に重要です。
多くのレイヤーで外側のレイヤーが配置されている場合、内側のレイヤー要素と body または html 要素の間の距離を取得するにはどうすればよいでしょうか?つまり、ページ上の任意の要素の位置を取得します。次に、上方向に継続的にバックトラックすることで累積を達成する関数を作成できます。

コードをコピーします コードは次のとおりです:

box.offsetTop box.offsetParent.offsetTop; // レイヤーが 2 つだけの場合

関数 offsetLeft(要素){
var left = element.offsetLeft // 最初のレイヤーの距離を取得します
varparent = element.offsetParent // 最初の親要素を取得します
While (parent !== null) { // 前の親要素がある場合
left =parent.offsetLeft // このレイヤーの距離を累積します
parent =parent.offsetParent // このレイヤーの親要素を取得します
} //ループを継続します
左に戻ります;
}

4.scrollTopとscrollLeft
この属性セットは、スクロール バーが非表示になっている領域 (スクロール バーの上の領域) のサイズを取得でき、また、この領域を見つけるように設定することもできます。スクロール バーを初期位置までスクロールさせたい場合は、次の関数を作成できます:

コードをコピーします コードは次のとおりです:

関数scrollStart (要素) {
If ( element.scrollTop != 0 ) {
element.scrollTop = 0;
}
}

5.getBoundingClientRect()
このメソッドは、left、top、right、bottom の 4 つのプロパティを含む四角形オブジェクトを返します。要素の各辺とページの上辺および左辺との間の距離をそれぞれ表します。

コードをコピーします コードは次のとおりです:

var box=document.getElementById('box') // 要素を取得します
alert(box.getBoundingClientRect().top); // 要素の上部とページの上部の間の距離
alert(box.getBoundingClientRect().right); //要素の右側とページの左側の間の距離
alert(box.getBoundingClientRect().bottom); //要素の下部とページの上部の間の距離
alert(box.getBoundingClientRect().left); //要素の左側とページの左側の間の距離

注: IE、Firefox3、Opera9.5、Chrome、Safari がサポートされています。IE では、デフォルトの座標は (2,2) から計算されるため、最終的な距離は他のブラウザよりも 2 ピクセル大きくなります。互換性を持たせるために。

コードをコピー コードは次のとおりです:

document.documentElement.clientTop; //非 IE は 0、IE は 2
document.documentElement.clientLeft; //非 IE は 0、IE は 2
functiongGetRect (要素) {
var rect = element.getBoundingClientRect();
var top = document.documentElement.clientTop;
var left= document.documentElement.clientLeft;
戻る{
TOP: RECT.TOP -TOP、
底部:rect.bottom - 上部、
左 右: 長方形右 - 左
}
}

外側のマージン、内側のマージン、境界線、スクロール バーをそれぞれ追加して、すべてのブラウザーが一貫しているかどうかをテストします。

以上がこの記事で説明した内容のすべてです。気に入っていただければ幸いです。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター