Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получение высоты div имеющего scroll 
:(
    Опции темы
shtuceron
Дата 6.8.2011, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



Добрый вечер, подскажите как можно получить размеры элемента div, который имеет scroll, т. е. не его экранные размеры а размеры как будто нет scroll-а и он вытянут во всю свою высоту (ширину).

Спасибо!
PM MAIL WWW   Вверх
Amphiluke
Дата 6.8.2011, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Свойство scrollHeight.
PM   Вверх
shtuceron
Дата 8.8.2011, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



спасибо, это как раз оно, а можете подсказать как можно перехватить событие на прокрутку вниз (вверх) div-а, я могу обрабатывать событие scroll, но оно не дает мне выполнять прокрутку или я не знаю как это реализовать...
PM MAIL WWW   Вверх
Amphiluke
Дата 8.8.2011, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата(shtuceron @  8.8.2011,  16:32 Найти цитируемый пост)
а можете подсказать как можно перехватить событие на прокрутку вниз (вверх) div-а, я могу обрабатывать событие scroll, но оно не дает мне выполнять прокрутку или я не знаю как это реализовать...

Ничего непонятно. Так можете или нет обрабатывать событие scroll? Если можете, зачем спрашиваете, как перехватывать? И вообще перехватывать нужно или «выполнять прокрутку»?
Сформулируйте проблему конкретнее.
PM   Вверх
shtuceron
Дата 9.8.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



я хочу отказаться от стандартной прокрутки дива и сделать свою, а событие скролл не дает мне это делать, поэтому я хотел узнать как можно реализовать прокрутку
PM MAIL WWW   Вверх
shtuceron
Дата 9.8.2011, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



В общем я скачал плагин к jQuery (mouseWheel - http://brandonaaron.net/code/mousewheel/demos) и привожу получившийся код, он почти рабочий, однако есть минус - когда я прокручиваю в самый низ происходит застопоривание и не сразу происходит прокрутка вверх, подскажите пожалуйста где косяк.

Код

<html>
<head>
        <script type="text/javascript" src="./script/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="./script/jquery-ui-1.8.14.min.js"></script>
    <script type="text/javascript" src="./script/jquery-mousewheel.min.js"></script>
    
    <style type=text/css>
        #container {
            width: 100px;
            height: 200px;
            overflow: hidden;
            background-color: #DDDDDD;
        }
</style>
</head>
<body>
<div id="container">
1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />1<br />
</div>
<script type=text/javascript>
    var scrollDelta = 0;

    $('#container').mousewheel(function(event, delta)
    {
        scrollDelta -= 10*delta;
        
        if (scrollDelta >= ($('#container')[0].scrollHeight))
        {
            scrollDelta = $('#container')[0].scrollHeight;
        }
        
        if (scrollDelta < 0) {
            scrollDelta = 0;
        }
        
        $('#container').scrollTop(scrollDelta);
    });
</script>
</body>
</html>

PM MAIL WWW   Вверх
Amphiluke
Дата 9.8.2011, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Это просто понять. smile 
Вы ставите завышенное условие на предел прокрутки:

Цитата(shtuceron @  10.8.2011,  00:45 Найти цитируемый пост)
if (scrollDelta >= ($('#container')[0].scrollHeight))

На самом деле, контейнер конечной высоты не может быть прокручен больше, чем на значение scrollHeight минус видимая высота контейнера.

Поэтому запись должна быть примерно в таком ключе:
Код

        if (scrollDelta >= ($('#container')[0].scrollHeight) - $('#container').height())
        {
            scrollDelta = $('#container')[0].scrollHeight - $('#container').height();
        }


Только советую вам оптимизировать код, чтобы не вызывать функции для вычисления неизменяемых значений на каждом повороте колеса мыши.

Добавлено через 3 минуты и 31 секунду
Вот, кстати, поднималась несколько схожая тема, откуда можно тоже выудить пример реализации перехвата события вращения колеса мыши.
PM   Вверх
shtuceron
Дата 10.8.2011, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



Amphiluke - спасибо!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.