Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Зафиксировать элемент при скроллинге. (https://javascript.ru/forum/events/34812-zafiksirovat-ehlement-pri-skrollinge.html)

icebergcap 20.01.2013 14:40

Зафиксировать элемент при скроллинге.
 
Суть скрипта в том, чтобы меню, которое изначально находится на абсолютной высоте 115 пикселов, при прокрутке вниз останавливалось вверху окна просмотра (т.е. с параметрами position: fixed и top:0)
Ну и, естественно, чтобы при скроллинге вверх и достижении прокрутки на 115 пикселов элемент вставал на место и становился position: absolute
По логике вроде всё правильно, только вот не работает.

Браузер - Chrome.

<html>
<head>

<script type="text/javascript">
function getElementPosition(elemId)
{
    var elem = document.getElementById(elemId);
    var t = 0;
    while (elem)
    {
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }

    return {"top":t};
}

window.onscroll = function() {
	var pos = getElementPosition('navigation');
	var element = document.getElementById('navigation');
	if (pos.top <= 0){
		element.style.position = 'fixed';
      		element.style.top = '0 px';
	}
	else {
		element.style.position = 'absolute';
		element.style.top = '115 px';
	}
}

</script>
<style>
#navigation {
	position:absolute;
	top:115px;
}

</style>
  
</head>
<body>
  <div id="navigation" class="navigation">
    <a href='index.php?p=1'>1</a>
    <a href='index.php?p=2'>1</a>
    <a href='index.php?p=3'>1</a>
    <a href='index.php?p=4'>1</a>
  </div>
</body>
</html>

Deff 20.01.2013 14:50

Цитата:

Сообщение от icebergcap
element.style.top =

http://javascript.ru/blog/Andrej-Par...kna-dokumenta-
http://javascript.ru/ui/offset

icebergcap 20.01.2013 15:29

Цитата:

Сообщение от Deff (Сообщение 228321)

Ссылка не открывается.

А по поводу второй ссылки - так у меня же положение absolute - значит не нужно высчитывать и складывать координаты вложения div'ов, не так ли?

dmitriymar 20.01.2013 15:58

событие скрола. при каждом получать координату, относительно экрана, "уходящего " элемента , желательно максимально приближенного к координате 0 по у. Вычислять координаты контейнера с учётом этих 115.
4 строки до кучи


Часовой пояс GMT +3, время: 02:20.