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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с анимацией, Скрытие дива 
:(
    Опции темы
artsb
Дата 1.7.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Всем привет.

Есть див, внутри которого много изображений. При наведении на изображение, остальные затемняются, сверху появляется другой див с увеличенным изображением и описанием. Проблема в том, что если быстро навести на любое из крайних изображении и убрать курсор, верхний див так и остаётся висеть, т. е. mouseleave не срабатывает (юзаю jQuery).

Пробовал вешать mouseleave на большой див (с изображениями), но это событие возникает каждый раз при наведении курсора на верхний див. А это не есть гуд...

Я приклейл скрипт. Посмотрите если не сложно. Может ещё что посоветуете. Я, просто, в Яве не силён...

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  script.rar 132,47 Kb


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
ksnk
Дата 1.7.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

 function showcnt() {
...
        var ob = $("<table class='mr_cnt'><tr><td class='cnt_em'></td><td><img class='cnt_img' 
...

Правильно ли я понял, что при каждом "наезде мышкой" создается новый объект table. Не важно, создавался ли он уже или нет? Повозил мышкой - получил лишнюю сотню таблиц... Много ДОМ-элементов - это много рессурсов на их отрисовку-хранение... Может в этом и дело.
 
imho, нужно создать либо один объект "увеличенный просмотр" и позиционировать его по мере надобности с изменением сорца картинок, либо сгенерировать сразу все "увеличенные просмотры" и показывать/ скрывать их когда надо.

У меня некие глюки иногда наблюдались только в IE, если повозить мышом по крайним картинкам и резко убирать мышь с окна броузера... 

еще. вот такие конструкции t_im.animate(... стоит заменить на такие
Код

t_im.stop(true,true).animate(...

Просто множество анимаций пытаются выполнится последовательно. Сначала одна, потом другая и если навесить их целую кучу, то они так и будут "перемигиваться", пока не кончится очередь. Впрочем, тут мне не удалось получить эффект "перемигивания", так как объект всегда заново пересоздается, но это типичная ситуация.

так писать не нужно
ob.css("top", (parseInt(ob.css("top")) - (150 - this.offsetHeight)) + "px");
Можно так
ob.css("top", ob.css("top") - (150 - this.offsetHeight));

проблема, может быть еще и в этом
Код

строка 118: ob.show(300);

Просто когда срабатывает show, элемент "разворачивается" с левого верхнего угла до правого нижнего. За это время мышка может с этой области убежать и mouselive никто не дождется...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
artsb
Дата 1.7.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ksnk, спасибо за помощь!

Цитата(ksnk @  1.7.2009,  17:43 Найти цитируемый пост)
Правильно ли я понял, что при каждом "наезде мышкой" создается новый объект table. Не важно, создавался ли он уже или нет? Повозил мышкой - получил лишнюю сотню таблиц... Много ДОМ-элементов - это много рессурсов на их отрисовку-хранение... Может в этом и дело.

Там же событие mouseenter. В jQuery оно срабатывает один раз. Это же не mousemove.

Цитата(ksnk @  1.7.2009,  17:43 Найти цитируемый пост)
нужно создать либо один объект "увеличенный просмотр" и позиционировать его по мере надобности с изменением сорца картинок

Пробовал. (хотя может и не не правильно smile) Если возюкать мышью, получаются ужасные мерцания. Таблицу "колбасит".

Цитата(ksnk @  1.7.2009,  17:43 Найти цитируемый пост)
стоит заменить на такие

Спасибо. Учту.

Цитата(ksnk @  1.7.2009,  17:43 Найти цитируемый пост)
так писать не нужно

А ob.css("top") разве не строку возвращает (вида "150px")? Типа как e.style.top.

Цитата(ksnk @  1.7.2009,  17:43 Найти цитируемый пост)
За это время мышка может с этой области убежать и mouselive никто не дождется... 

Это первое, что пришло в голову. Но как бы это сделать по человечески...

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


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
ksnk
Дата 1.7.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(artsb @  1.7.2009,  18:41 Найти цитируемый пост)
Там же событие mouseenter. В jQuery оно срабатывает один раз. Это же не mousemove.
 Один, но каждый раз при попадании в элемент. Намотать 10 кругов по 10 картинкам - дело 10 секунд. smile потом на каждой картинке будут десятки скрытых "увеличенных изображений", которые будут сражаться за какие-нибудь события и тормозить в меру возможностей...

Цитата(artsb @  1.7.2009,  18:41 Найти цитируемый пост)
А ob.css("top") разве не строку возвращает (вида "150px")?
 да, действительно, возвращает строку... я чего-то думал, что число. Зато приписывать 'px' точно не надо. Оно само подставиться...

Добавлено через 1 минуту и 20 секунд
Цитата(artsb @  1.7.2009,  18:41 Найти цитируемый пост)
Кстати, я уже немного подправил, теперь прошлой проблемы нет. Но иногда возникает другая.

Ну и какая она - другая? ;-)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
artsb
Дата 1.7.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(ksnk @  1.7.2009,  20:19 Найти цитируемый пост)
Один, но каждый раз при попадании в элемент. Намотать 10 кругов по 10 картинкам - дело 10 секунд.

Неа smile Внимательней посмотри smile Опа:
Код

$("." + this.className).hide(300);
this.parentNode.removeChild(this);


Цитата(ksnk @  1.7.2009,  20:19 Найти цитируемый пост)
да, действительно, возвращает строку

Уже проверил smile

Цитата(ksnk @  1.7.2009,  20:19 Найти цитируемый пост)
Ну и какая она - другая? ;-) 

Сейчас ещё малость доделаю кое-что и выложу.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




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


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

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