Что такое offsetHeight, clientHeight, scrollHeight?



думал объяснить, в чем разница между offsetHeight,clientHeight и scrollHeight или offsetWidth,clientWidth и scrollWidth?



одна должны знать эту разницу, прежде чем работать на стороне клиента. В противном случае половина их жизни будет потрачена на исправление пользовательского интерфейса.



Скрипка, или inline ниже:






function whatis(propType) {
var mainDiv = document.getElementById("MainDIV");
if (window.sampleDiv == null) {
var div = document.createElement("div");
window.sampleDiv = div;
}
div = window.sampleDiv;
var propTypeWidth = propType.toLowerCase() + "Width";
var propTypeHeight = propType + "Height";

var computedStyle = window.getComputedStyle(mainDiv, null);
var borderLeftWidth = computedStyle.getPropertyValue("border-left-width");
var borderTopWidth = computedStyle.getPropertyValue("border-top-width");

div.style.position = "absolute";
div.style.left = mainDiv.offsetLeft + Math.round(parseFloat((propType == "client") ? borderLeftWidth : 0)) + "px";
div.style.top = mainDiv.offsetTop + Math.round(parseFloat((propType == "client") ? borderTopWidth : 0)) + "px";
div.style.height = mainDiv[propTypeHeight] + "px";
div.style.lineHeight = mainDiv[propTypeHeight] + "px";
div.style.width = mainDiv[propTypeWidth] + "px";
div.style.textAlign = "center";
div.innerHTML = propTypeWidth + " X " + propTypeHeight + "( " +
mainDiv[propTypeWidth] + " x " + mainDiv[propTypeHeight] + " )";



div.style.background = "rgba(0,0,255,0.5)";
document.body.appendChild(div);

}
document.getElementById("offset").onclick = function() {
whatis('offset');
}
document.getElementById("client").onclick = function() {
whatis('client');
}
document.getElementById("scroll").onclick = function() {
whatis('scroll');
}

#MainDIV {
border: 5px solid red;
}

<button id="offset">offsetHeight & offsetWidth</button>
<button id="client">clientHeight & clientWidth</button>
<button id="scroll">scrollHeight & scrollWidth</button>

<div id="MainDIV" style="margin:auto; height:200px; width:400px; overflow:auto;">
<div style="height:400px; width:500px; overflow:hidden;">

</div>
</div>
686   2  

2 ответов:

чтобы узнать разницу, вы должны понять модель, но в основном:

clientHeight:

возвращает внутреннюю высоту элемента в пикселях, включая отступы, но не горизонтальный высота скроллбара,границы или окраины

offsetHeight:

- Это измерения, которые включает в себя элемент в границах, элемент вертикального заполнения, элемент горизонтального полоса прокрутки (если присутствует, если отображается) и высота CSS элемента.

scrollHeight:

- это измерение высоты содержимого элемента в том числе контент не отображается на экране из-за переполнения


I будет проще:

считаем:

<element>                                     
    <!-- *content*: child nodes: -->        | content
    A child node as text node               | of
    <div id="another_child_node"></div>     | the
    ... and I am the 4th child node         | element
</element>                                    

scrollHeight:ENTIRE content & padding (visible or not)
высота всего контента + отступы, несмотря на высоту элемента.

clientHeight:VISIBLE content & padding
только видимая высота: часть содержимого ограничена явно определенной высотой элемента.

offsetHeight:VISIBLE content & padding+ border + scrollbar
Высота, занимаемая элементом по документу.

scrollHeightclientHeight and offsetHeight

* offsetHeight - это измерение в пикселях высоты CSS элемента,включая границу, отступ и горизонтальную полосу прокрутки элемента.

* clientHeight свойство возвращает видимую высоту элемента в пикселях, включая отступ, но не границу, полосу прокрутки или поля.

* scrollHeight значение равно минимальная высота элемент потребует для того, чтобы установите все содержимое в окне просмотра без использования вертикальной полосы прокрутки. Высота измеряется так же, как и высота клиента: она включает в себя заполнение элемента, но не его границу, поле или горизонтальную полосу прокрутки.

то же самое относится ко всем из них с шириной вместо высоты.

Comments

    Ничего не найдено.