Зафиксировать элемент при скроллинге.
Суть скрипта в том, чтобы меню, которое изначально находится на абсолютной высоте 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>
|
Цитата:
http://javascript.ru/ui/offset |
Цитата:
А по поводу второй ссылки - так у меня же положение absolute - значит не нужно высчитывать и складывать координаты вложения div'ов, не так ли? |
событие скрола. при каждом получать координату, относительно экрана, "уходящего " элемента , желательно максимально приближенного к координате 0 по у. Вычислять координаты контейнера с учётом этих 115.
4 строки до кучи |
| Часовой пояс GMT +3, время: 07:07. |