Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите со скроллингом, очень нужно... (https://javascript.ru/forum/misc/4482-pomogite-so-skrollingom-ochen-nuzhno.html)

vestris 26.07.2009 03:20

Помогите со скроллингом, очень нужно...
 
Есть такая функция:
var i=0;
var scroll_break=1;

function scroll_up(){
    if (i>=40)
        i=i-40;
    else if (i<40 && i>=0)
        i=0;
    document.getElementById('page').scrollTop=i;
    if (scroll_break)
        setTimeout('scroll_up();', 100);
    else
        scroll_break=1;
}
function scroll_down(){
    var scroll=document.getElementById('page').scrollTop;
    if ((i-5)<=scroll)
        i=i+40;
    else if ((i-5)>scroll)
        i=scroll;
    document.getElementById('page').scrollTop=i;
    if (scroll_break)
        setTimeout('scroll_down();', 100);
    else
        scroll_break=1;
}
function scroll_breaker(){
    scroll_break=0;
}


Далее в тексте вызывается через onmousedown="scroll_up();" onmouseup="scroll_breaker();" onmousedown="scroll_down();"

Нужно сделать так чтобы скроллинг автоматически исчезал в случае если текст (содержимое) целиком умещается в видимой области. В html для скроллинга используется два класса соответственно
Код:

<div class="scroll-up">
и
Код:

<div class="scroll-down">
. Сама область со скроллингом - это
Код:

<div id="page">
Если возможно, помогите пожалуйста. Очень нужно :help: :(

x-yuri 26.07.2009 20:01

сравнивай scrollHeight и offsetHeight

vestris 26.07.2009 21:38

Если правильно понимаю, как-то так -

if(document.getElementById('page').scrollHeight < document.getElementById('page').offsetHeight) {...} 

else { 

document.getElementById('scroll-up').style.display = 'none';
}



или иначе ?

x-yuri 29.07.2009 04:34

а почему бы не попробовать ;)
p.s. а как на счет overflow: auto; ?

vestris 29.07.2009 04:59

Кажется разобрался. :dance:
Несколько иначе (однако также через offsetHeight), теперь всё работает почти как надо.
Появился вопрос с "скрытыми" div-ами... они занимают на странице место несмотря на $('#scroll').hide(); и создают ненужные отступы; Пытаюсь решить сие через position: absolute и z-index (дизайн фиксированный - позволяет, если по другому никак...)

Вам спасибо!!

x-yuri 29.07.2009 23:04

Цитата:

Сообщение от vestris
они занимают на странице место несмотря на $('#scroll').hide();

не должны

Цитата:

Сообщение от vestris
и создают ненужные отступы

покажи


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