|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » onMouseOut, смена opacity и FireFox |
|
onMouseOut, смена opacity и FireFox
|
Engrossed by the Void Сообщения: 2229 |
Доброго времени суток господа.
Интересная вещь, однако. Задумался на эффектом ссылки. Эффект со следующей сутью - при наведении (onMouseOver) ссылка (с бэкграундным изображением и бордером) начинает плавно мерцать - менять прозрачность в пределах 30-100%. Создается впечатление флэш-анимации текстовой ссылки. Реализация работает для IE, но в FF обнаруживается, что при интенсивной смене opacity (10 раз в секунду с |delta| = 15%) не срабатывает событие onMouseOut, т.е. невозможно установить когда прекращать выполнение анимации. Замечено также, что такой багоглюк происходит только когда время задержки указателя на ссылке > ~2 сек. если быстро навести и свести указатель, то FF обрабатывает событийность корректно, во всех иных случаях это не так. Также глюки начинаются когда имеется суммирование тукущей opacity и delta (см. зеленый код). Если суммирование убрать, т.е. opacity=opacity, то глюк не проявляется. приходим к мысли, что при интенсивной смене opacity FF некорректно обрабатывает события сведения указателя с объекта, оно просто не происходит. function flash(id) { var inp = document.getElementById('inp'); if (browser.isIE) { var obj = document.getElementById(id); if ((obj.filters.alpha.opacity + delta > 100) || (obj.filters.alpha.opacity + delta < 30)) delta = - delta; obj.filters.alpha.opacity += delta; inp.value=iCnt+')'+' opacity:'+obj.filters.alpha.opacity+' delta:'+delta/100; } if (browser.isGecko) { var obj = document.getElementById(id).style; if ((obj.opacity >= 1) || (obj.opacity <= 0.3) ) delta = - delta; obj.opacity = parseFloat(obj.opacity)+delta/100; inp.value=iCnt+')'+' opacity:'+parseFloat(obj.opacity)+' delta:'+delta/100; } } P.S. Инпут, расположенный на форме, имеет задачу вывода текущих значений счетчика наведений(+1) и сведений(-1) мыши на/с объект(а), прозрачности объекта и текущего значения дельты прозрачности. Как видно в IE счетчик должен принимать значения 0|1. |
|
------- Отправлено: 11:25, 09-08-2005 |
![]() Ветеран Сообщения: 675
|
Профиль | Отправить PM | Цитировать В опере7 вообще неработает.
Я так понял, что програмно делать такие эффекты не благодарное дело, проще сделать гиф или флэш! |
------- Отправлено: 12:13, 09-08-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать Prisoner
напиши в ff. Похоже, имеет смысл :/ |
Отправлено: 13:06, 09-08-2005 | #3 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать slaine
Разумеется, сделать все для всех - трудновато ![]() ![]() mar угу... и судя по списку багов связанных с событием onMouseOver(Out) я не буду первым ![]() |
------- Отправлено: 16:57, 09-08-2005 | #4 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать slaine
ну и вообще код всегда менее энергоемок, чем использование gif и flash. Да и вообще решение элегантное ![]() |
|
Отправлено: 17:11, 09-08-2005 | #5 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Состоялся следующий диалог (сорри, за убогий аглицкий) из трех фраз
![]() Цитата:
Цитата:
Цитата:
|
|||
------- Отправлено: 10:26, 12-08-2005 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Firefox | michael821 | Хочу все знать | 2 | 07-01-2010 15:07 | |
не получается скрыть меню при onmouseout | koresaram | Вебмастеру | 11 | 07-03-2009 15:46 | |
Логотип Firefox | wale | Флейм | 5 | 23-11-2008 18:44 | |
Firefox во FreeBSD 6.2 | dzhserv | Общий по FreeBSD | 3 | 06-03-2007 11:36 | |
firefox и xhtml | Demiurg | Вебмастеру | 7 | 19-02-2007 12:09 |
|