Heim > Artikel > Web-Frontend > Detaillierte Erklärung von JavaScript zum Ermitteln der Größe eines Elements
【Verwandte Lernempfehlungen: Javascript-Lerntutorial】
HTML
-GrößeHTML
尺寸所谓元素的HTML尺寸,就是指在HTML
标签中设置的尺寸样式。
例如:
<p></p>复制代码
页面效果如下图所示:
这种尺寸可以通过elem.style.width
或elem.style.height
获取
例如:
let box = document.querySelector('.box');console.log(box.style.width); // 200pxconsole.log(box.style.heihgt); // 200px复制代码
但是对于CSS
尺寸,它们是无法获取的。
例如:
.box { width: 200px; height: 200px; background: lightpink; }复制代码
如下图所示:
为了让样式和结构分离,我们会将样式单独写进CSS
文件中,如果上述方法无法获取元素的尺寸,那我们该通过什么方法如何获取呢?
接着往下看。
在JavaScript
的element
对象中,提供了三种只读属性,可以用于获取元素的尺寸。
它们分别是:
offsetHeight
和offsetWidth
clientHeight
和clientWidth
scrollHeight
和scrollWidth
我们先从第一种开始
offsetHeight
和offsetWidth
offsetHeight
用于获取元素的真实高度(border-box
),它包含该元素的垂直内边距和边框,如果有水平滚动条的话(水平滚动条高度为17px
,一般会被计入内容高度height
中),还需要加上水平滚动条的高度。
offsetWidth
用于获取元素的真实宽度(border-box
),它包含该元素的水平内边距和边框,如果有垂直滚动条的话(水平滚动条高度为17px
,一般会被计入内容宽度width
中),还需要加上垂直滚动条的宽度。
一个p
元素有如下样式
.box { margin: 10px auto; padding: 10px; width: 200px; height: 200px; border: 1px solid #000; background: lightpink; }复制代码
页面效果如下:
其盒模型如下所示:
由于offsetHeight
获取的是元素的真实高度,那么其高度为height
+ padding * 2
+ border * 2
,即200px
+10px * 2
+1px * 2
,为222px
offsetWidth
获取的是元素的真实宽度,那么其宽度为width
+padding * 2
+border * 2
,即200px
+10px * 2
+1px * 2
,为222px
let box = document.querySelector('.box');let height = box.offsetHeight;let width = box.offsetWidth;console.log(height); // 222pxconsoel.log(width); // 222px复制代码
当含有滚动条时,由于水平滚动条的高度为17px
,一般会被计入内容高度height
中,即内容高度的实际值要比设置的值要少17px
。
两个p
为父子关系,它们有如下样式:
.father { margin: 10px auto; padding: 10px; width: 200px; height: 200px; border: 1px solid; background: lightsalmon; /* 滚动条高度和宽度被计算到content中 */ overflow: auto; }.son { width: 220px; height: 220px; background: plum; }复制代码
页面效果如下:
其盒模型如下所示:
可以看到,内容区域的宽度实际有效值为183px
,是设置的width
值减去了垂直滚动条的宽度17px
后的值。内容区域的高度亦是如此。
但当有滚动条时,由于offsetHeight
和offsetWidth
的值除了内边距和边框值外,还需要包含滚动条的高度和宽度。虽然滚动条占据了内容区域的width
和height
Die sogenannte HTML-Größe eines Elements bezieht sich auf die HTML Der im -Tag festgelegte Größenstil.
let f_box = document.querySelector('.father');let f_height = f_box.offsetHeight;let f_width = f_box.offsetWidth;console.log(f_height); // 220pxconsole.log(f_width); // 220px复制代码🎜Der Seiteneffekt ist wie folgt: 🎜🎜Diese Größe kann
elem übergeben werden .style .width
oder elem.style.height
erhalten 🎜🎜Zum Beispiel: 🎜.box { margin: 10px auto; padding: 10px; width: 200px; height: 200px; border: 1px solid #000; background: lightpink; }复制代码🎜Aber für
CSS
-Dimensionen können sie nicht abgerufen werden. 🎜🎜Zum Beispiel: 🎜let box = document.querySelector('.box');let height = box.clientHeight;let width = box.clientWidth;console.log(height); // 220pxconsoel.log(width); // 220px复制代码🎜Wie unten gezeigt: 🎜🎜Um den Stil und die Struktur zu trennen, werden wir das schreiben Stil separat Wenn die obige Methode in der Datei
CSS
die Größe des Elements nicht ermitteln kann, welche Methode sollten wir dann verwenden, um sie abzurufen? 🎜🎜Dann schau nach unten. 🎜🎜Im element
-Objekt von JavaScript
werden drei 🎜schreibgeschützte🎜Eigenschaften bereitgestellt, mit denen die Größe des Elements ermittelt werden kann. 🎜🎜Sie sind: 🎜offsetHeight
und offsetWidth
clientHeight
und clientWidth
scrollHeight
und scrollWidth
offsetHeight
und offsetWidth
offsetHeight
werden verwendet, um die tatsächliche Höhe des Elements (border) zu ermitteln - box
), die den vertikalen Abstand und den Rand des Elements enthält, wenn eine horizontale Bildlaufleiste vorhanden ist (die Höhe der horizontalen Bildlaufleiste beträgt 17px
, was im Allgemeinen im enthalten ist). Inhaltshöhe height
), müssen Sie auch die Höhe der horizontalen Bildlaufleiste hinzufügen. 🎜🎜offsetWidth
wird verwendet, um die tatsächliche Breite des Elements (border-box
) zu ermitteln, einschließlich der horizontalen Polsterung und des Randes des Elements, wenn ein vertikaler Bildlauf vorhanden ist bar (horizontal) Die Höhe der Bildlaufleiste beträgt 17px
, was im Allgemeinen in der Inhaltsbreite width
enthalten ist, und die Breite der vertikalen Bildlaufleiste muss hinzugefügt werden. 🎜p
-Element hat den folgenden Stil🎜.father { margin: 10px auto; padding: 10px; width: 200px; height: 200px; border: 1px solid; background: lightsalmon; /* 滚动条高度和宽度被计算到content中 */ overflow: auto; }.son { width: 220px; height: 220px; background: plum; }复制代码🎜Der Seiteneffekt ist wie folgt:🎜
offsetHeight
die tatsächliche Höhe des Elements erhält, beträgt seine Höhe dann height
+ padding * 2
+ border * 2
, also 200px
+10px * 2
+1px * 2
, also 222px code>🎜🎜<code>offsetWidth
code> erhält die tatsächliche Breite des Elements, dann beträgt seine Breite width
+padding * 2
+border * 2
, also 200px
+10px * 2
+1px * 2
, also 222px
🎜.father { margin: 10px auto; padding: 10px; /* 父元素的内容宽度:320px + 10px = 330px */ width: 200px; /* 父元素的内容高度:200px - 17px = 203px */ height: 200px; border: 1px solid #000; overflow: auto; }.son { padding: 10px; /* 子元素的真实宽度:300px + 10px * 2 = 320px */ width: 300px; height: 100px; background: plum; }复制代码
17px
beträgt, Es wird im Allgemeinen in die Inhaltshöhe height
einbezogen, d. h. in den Inhalt. Der tatsächliche Wert der Höhe ist 17px
kleiner als der eingestellte Wert. 🎜🎜Die beiden p
stehen in einer Eltern-Kind-Beziehung und haben die folgenden Stile: 🎜let f_box = document.querySelector('.father');let height = f_box.scrollHeight;let width = f_box.scrollWidth;console.log(height); // 203pxconsole.log(width); // 330px复制代码🎜Der Seiteneffekt ist wie folgt: 🎜
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von JavaScript zum Ermitteln der Größe eines Elements. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!