<!DOCTYPE html>
<html>
<head>
<style>
#myDIV {
height: 250px;
width: 400px;
padding: 10px;
margin: 15px;
border: 5px solid red;
background-color: lightblue;
overflow: auto;
}
#myDIV2 {
height: 250px;
width: 400px;
padding: 10px;
margin: 15px;
border: 5px solid red;
background-color: lightblue;
}
#content {
height: 800px;
width: 2000px;
background-color: lightyellow;
}
</style>
</head>
<body>
<p>In this example, the child element (#content) inside the first div is bigger than div's height and width
(the child is 800x2500 while its parent is 250x400), so we have added a scrollbar.</p>
<p>Click the button to get the clientHeight, offsetHeight, clientWidth and offsetWidth of div.</p>
<button onclick="myFunction()">Try it</button>
<p>Notice how the scrollbar in the first div "steals" some of div's right and bottom padding, which results in a lower return value for clientHeight and clientWidth in that div, compared to the other one. The offsetHeight and offsetWidth is not affected by this.</p>
<div id="myDIV">
<div id="content"></div>
</div>
<div id="myDIV2">
<div id="content2"></div>
</div>
<script>
function myFunction() {
var elmnt = document.getElementById("myDIV");
var txt = "";
txt += "<b>Information about div1:</b><br>";
txt += "Height including padding: " + elmnt.clientHeight + "px<br>";
txt += "Height including padding, border and scrollbar: " + elmnt.offsetHeight + "px<br>";
txt += "Width including padding: " + elmnt.clientWidth + "px<br>";
txt += "Width including padding, border and scrollbar: " + elmnt.offsetWidth + "px";
document.getElementById("content").innerHTML = txt;
var elmnt2 = document.getElementById("myDIV2");
var txt2 = "";
txt2 += "<b>Information about div2:</b><br>";
txt2 += "Height including padding: " + elmnt2.clientHeight + "px<br>";
txt2 += "Height including padding and border: " + elmnt2.offsetHeight + "px<br>";
txt2 += "Width including padding: " + elmnt2.clientWidth + "px<br>";
txt2 += "Width including padding and border: " + elmnt2.offsetWidth + "px";
document.getElementById("content2").innerHTML = txt2;
}
</script>
</body>
</html>