If I write Math.max(el.scrollHeight, el.offsetHeight, el.clientHeight) will this always equal el.scrollHeight?
Generally, clientHeight <= offsetHeight <= scrollHeight. There are rare cases where clientHeight > offsetHeight for the html element, but I'm not sure if scrollHeight can ever be smaller than the other two.
The offsetHeight property includes the borders of elements so can definitely be greater than scrollHeight. E.g.
let test = document.getElementById('test');
console.log("clientHeight = " + test.clientHeight);
console.log("offsetHeight = " + test.offsetHeight);
console.log("scrollHeight = " + test.scrollHeight);
console.log("Max Height = "
+ Math.max(test.scrollHeight, test.offsetHeight, test.clientHeight));
#test {
height:20px;
border:0px solid red;
border-block-width: 20px;
background-color:blue;
}
<div id="test"></div>