JS свойство offsetParent

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

JS свойство offsetParent получает ближайшего предка элемента, который позиционирован в DOM объекте, т.е. извлекает ссылку на объект-контейнер, который определяет offsetTop и offsetLeft св-тв объекта.

Браузер позиционирует элементы относительно каждый другого, и у каждого элемента есть свой «родитель по позиционированию» — offsetParent.

В качестве offsetParent обычно выступает родитель parentNode, но не всегда.

Значения свойств

  1. Тип: Объект
  2. Объект-контейнер

Примечания

Большую часть времени offsetParent св-во возвращает тело объекта.

Синтаксис

р = obj.offsetParent;

Примеры

Получение координат элемента через функции findPosX и findPosY:

var el = document.getElementById('foo');
var x = findPosX(el);
var y = findPosY(el);

function findPosX(obj) { // функция возвращает позицию элемента, точнее – его отступ слева
	var curleft = 0;
	if (obj.offsetParent) {
		while (true) {
			curleft += obj.offsetLeft;
			if (!obj.offsetParent) {
				break;
			}
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj) { // функция возвращает позицию элемента, точнее – его отступ свурху
	var curtop = 0;
	if (obj.offsetParent) {
		while (true) {
			curtop += obj.offsetTop;
			if (!obj.offsetParent) {
				break;
			}
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}