Fading background на JS
От: Corvin Украина  
Дата: 21.02.03 15:39
Оценка:
Привет всем. Я хочу написать код для того чтобы при появлении курсора над ячейкой таблицы цвет фона ячейки плавно переходил от одного к другому. Это я сделал так: определил onmouseover и onmouseout для ячейки и прицепил к ним свою функцию, которая плавно меняет цвет от одного заданного к другому используя this.style.backgroundColor. Все бы хорошо, — цвет плавно меняется, но когда курсор пересекает границу ячейки, наблюдается мигание фона, — т.е. вызывается onmouseover, потом сразу onouseout и опять onomоuseover... Как я понимаю дело в том, что у ячейки есть граница толщиной в 1 пиксель, которая не рисуется (border=0 был указан). Когра же курсор в области border, считается, что он над ячейкой, — вызывается onmouseover, потом при движении к центру он пересекает невидимый разделитель между border и собственно ячейкой, и эта область считается не принадлежащей ячейке... Такой же эффект наблюдается если в мою ячейку вставить таблицу с несколькими колонками, — при пересечении невидимых границ, разделяющих ячейки вызываются onmouseout и onmouseover. Даже если внутри ячейки расположить ссылку — все равно при пересечении неких границ происходят эти event'ы... Может, кто-нибудь с таким сталкивался? Расскажите, пожалуйста как обойти эту проблему.
Re: Fading background на JS
От: mogadanez Чехия  
Дата: 21.02.03 15:49
Оценка:
Здравствуйте, Corvin, Вы писали:

C>Привет всем. Я хочу написать код для того чтобы при появлении курсора над ячейкой таблицы цвет фона ячейки плавно переходил от одного к другому. Это я сделал так: определил onmouseover и onmouseout для ячейки и прицепил к ним свою функцию, которая плавно меняет цвет от одного заданного к другому используя this.style.backgroundColor. Все бы хорошо, — цвет плавно меняется, но когда курсор пересекает границу ячейки, наблюдается мигание фона, — т.е. вызывается onmouseover, потом сразу onouseout и опять onomоuseover... Как я понимаю дело в том, что у ячейки есть граница толщиной в 1 пиксель, которая не рисуется (border=0 был указан). Когра же курсор в области border, считается, что он над ячейкой, — вызывается onmouseover, потом при движении к центру он пересекает невидимый разделитель между border и собственно ячейкой, и эта область считается не принадлежащей ячейке... Такой же эффект наблюдается если в мою ячейку вставить таблицу с несколькими колонками, — при пересечении невидимых границ, разделяющих ячейки вызываются onmouseout и onmouseover. Даже если внутри ячейки расположить ссылку — все равно при пересечении неких границ происходят эти event'ы... Может, кто-нибудь с таким сталкивался? Расскажите, пожалуйста как обойти эту проблему.


в IE можно попробовать поиграться с фильтрами, там вроде было чтото такое
... << RSDN@Home 1.0 beta 6a >>
Re: Fading background на JS
От: TK Лес кывт.рф
Дата: 21.02.03 15:51
Оценка:
Здравствуйте, Corvin, Вы писали:

C>Привет всем. Я хочу написать код для того чтобы при появлении курсора над ячейкой таблицы цвет фона ячейки плавно переходил от одного к другому.


анимацию цвета проще всего делать в HTML+TIME2 см. animateColor
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Fading background на JS
От: Corvin Украина  
Дата: 21.02.03 15:53
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Corvin, Вы писали:


TK>анимацию цвета проще всего делать в HTML+TIME2 см. animateColor


простите, а что такое TIME2?
Re[3]: Fading background на JS
От: TK Лес кывт.рф
Дата: 21.02.03 16:01
Оценка:
Здравствуйте, Corvin, Вы писали:

TK>>анимацию цвета проще всего делать в HTML+TIME2 см. animateColor

C>простите, а что такое TIME2?

правильно HTML+TIME 2.0

см. раздел в MSDN "HTML+TIME 2.0 Reference"
В двух словах эта технология позволяет создавать сценарии для управления элементами на web странице.
Пример:
анимация цвета. задается начальное значение, конечное, и продолжительность;
анимация свойств. задаем левую границу элемента и перемещаем его от одной точи к другой.
Все сценарии объекдиняются в группы и привязываются к событиям. например:
При возникновении onmouseover анимировать color от красного до желтого за две секунды, потом до синего за три и по завершении оставить желтым.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Fading background на JS
От: andik  
Дата: 21.02.03 16:07
Оценка:
Здравствуйте, Corvin, Вы писали:

мдааа, фильтры, HTML+TIME 2.0
вот только интересно, а остальные броузеры уже отменили?

Встречали твою проблему, выложи код, надо посмотреть

есть подозрение, что у тебя в ячейке есть HTML элементы, они могут свою роль сыграть на мерцании
Re[2]: Fading background на JS
От: Corvin Украина  
Дата: 21.02.03 16:30
Оценка: -1
Здравствуйте, andik, Вы писали:

A>Здравствуйте, Corvin, Вы писали:


A>мдааа, фильтры, HTML+TIME 2.0

A>вот только интересно, а остальные броузеры уже отменили?

A>Встречали твою проблему, выложи код, надо посмотреть


A>есть подозрение, что у тебя в ячейке есть HTML элементы, они могут свою роль сыграть на мерцании


Да дело в том, что код у меня дома, а я сейчас на работе, — я вообще не веб занимаюсь. Но суть функции перехода там примерно такая — входящие переменные это цвета: от какого и к какому переходить, — потом функция меняет немного цвет и вызывает setTimeout с собой же в параметрах, но уже с другим цветом, и так пока не нарисуем то, что надо или пока не вызовется инициирующая переход цвета функция (т.е. произойдет onmouseover или onmouseout до окончания перехода). Впечатление от работы именно такое как я описал, — как будто у области, отведенной тегу <a> есть невидимая граница и бровсер считает, что она ячейке таблицы не принадлежит.
Кстати тут на РСДН именно так сделаны кнопочки вверху страницы и если внимательно присмотрется к их поведению, то тоже похоже, что при пересечении границы ссылки происходит вызов соответствующих функций, но судя по всему у них внутрях (так и не получилось скрипт выкачать, — могли бы и открыть к нему доступ) цвет меняется от текущего а не от заданного, поэтому эффект менее заметен...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.