Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать блок, исчезающий вверху страницы? (https://javascript.ru/forum/dom-window/27342-kak-sdelat-blok-ischezayushhijj-vverkhu-stranicy.html)

TRos 10.04.2012 10:22

Как сделать блок, исчезающий вверху страницы?
 
Здравствуйте. Задался целью сделать кнопку для автоматического перехода на самый верх странички (как Вконтакте). Реализовал через блок, который вначале скрыт, а при прокрутке появляется. И все бы хорошо, но при возвращении на самый верх страницы кнопка не исчезает и продолжает висеть сбоку, раздражая взгляд :( Путем исканий пришел к следующей функции (смысл в том, что если позиция прокрутки равняется нулю, то блоку #top присваивается значение скрытый, в других случаях - кнопка видимая):
function Scrolling()
{
  if (self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop = 0)
{document.getElementById('top').style.display = 'none';}
  else
{document.getElementById('top').style.display = 'block';};
};

Но она, естественно не работает :) Подскажите где что неправильно, пожалуйста.

З.Ы.: Вызов функции идет через <body onscroll = "Scrolling()">
З.З.Ы.: Консоль Хрома кричит:
Код:

Uncaught ReferenceError: Invalid left-hand side in assignment
Scrollingindex.html:35
(anonymous function)index.html:54
onscroll

Блок с кнопкой не появляется :(

Kolyaj 10.04.2012 11:00

Сравнение ==
Присваивание =

TRos 10.04.2012 13:30

Изменил - теперь Хром не ругается вообще, но и кнопка тоже не появляется :cray:

TRos 10.04.2012 13:41

На всякий случай приведу стиль блока с кнопкой:
#top {position: fixed; margin-top: 280px; display: none; cursor: pointer;}

и HTML:
<body onscroll = "Scrolling()">
<div id="top" ><a href="#up"><img src="Up.png" title="Перейти на начало страницы" alt="Наверх" /></a></div><a name="up"></a>

Викториан 10.04.2012 14:09

Повесь на ссылку адрес с рещеткой (чтобы наверх переходил) и проверяй на клике, если позиция прокрутки равна 0, значит ты вверху, то есть кнопку можно скрыть) А при скролле отображай снова.

TRos 10.04.2012 19:02

Так я так и делаю :) Проблема в том, что кнопка не появляется при прокрутке...

TRos 10.04.2012 19:43

Немного изменил функцию:
function Scrolling()
{
  if (scroll <= 1)
{document.getElementById('top').style.display = 'none';}
  else
{document.getElementById('top').style.display = 'block';};
};


Теперь кнопка при прокрутке опять появляется, но при возвращении наверх никак не хочет исчезать :(

TRos 12.04.2012 08:59

Ура! :) После долгих мучений решил проблему сам вот таким способом (может кому пригодится):
<script type="text/javascript">
function getTop()  
{  
     return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);  
};  
function Scrolling()
{
  if (getTop() == 0)
{document.getElementById('top').style.display = 'none';}
  else
{document.getElementById('top').style.display = 'block';}
};

<body onscroll = "Scrolling()">
<div id="top"><a href="#up" onClick="scroll(0,0); return false"><img src="Up.png" title="Перейти на начало страницы" alt="Наверх" /></a></div><a name="up"></a>

Единственная печаль - все это не работает под IE :( Может кто-нибудь че посоветует...


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