Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.06.2011, 05:40
Интересующийся
Отправить личное сообщение для interwass Посмотреть профиль Найти все сообщения от interwass
 
Регистрация: 22.06.2011
Сообщений: 10

Поясните логику событий мыши при дочернем элементе с position absolute...
Вот написал функцию:

<script>
function ChangeColor(obj, col)
{
  obj.style.background=col;
}
</script>


Делаю таблицу и засовываю этот скрипт в onmouseover/onmouseout:

<center>
<table width="40%" cellspacing="3" cellpadding="5" border="7" style="background: black;"
onmouseover="ChangeColor(this, 'red');" onmouseout="ChangeColor(this, 'green');">
<tr><td>
   Йа тобличко! :3
</td></tr></table>
</center>


На мышь реагирует как и задуманно... А теперь внутрь добавляю ещё такую же табличку:

<center>
<table width="40%" cellspacing="3" cellpadding="5" border="7" style="background: black;"
onmouseover="ChangeColor(this, 'red');" onmouseout="ChangeColor(this, 'green');">
<tr><td>
   Йа тобличко! :3
   <table width="40%" cellspacing="3" cellpadding="5" border="7" style="background: white;"
   onmouseover="ChangeColor(this, 'blue');" onmouseout="ChangeColor(this, 'yellow');">
   <tr><td>Йа тобличко! :3</td></tr></table>
</td></tr></table>
</center>


Вроде тоже всё логично... А вот теперь делаю внутренней табличке position absolute:

<center>
<table width="40%" cellspacing="3" cellpadding="5" border="7" style="background: black;"
onmouseover="ChangeColor(this, 'red');" onmouseout="ChangeColor(this, 'green');">
<tr><td>Йа тобличко! :3
   <table width="40%" cellspacing="3" cellpadding="5" border="7" style="background: white; position: absolute; left: 0px; top: 0px;"
   onmouseover="ChangeColor(this, 'blue');" onmouseout="ChangeColor(this, 'yellow');">
   <tr><td>Йа тобличко! :3</td></tr></table>
</td></tr></table>
</center>


И вот получается что внутренняя табличка вовсе не внутри главной, а чёрти-где... Но (!) если навести мышкой на внутреннюю (которая визуально уже не внутри) - цвет обе меняют (то есть функция дважды вызывается, для обеих таблиц)...


А собственно вопрос - оно всегда и во всех браузерах так будет?
(да, я дурак )
Ответить с цитированием
  #2 (permalink)  
Старый 22.06.2011, 11:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от interwass
И вот получается что внутренняя табличка вовсе не внутри главной, а чёрти-где...
Это не так.
Табличка будет чётко позиционироваться относительно ближайшего родителя с позишн отличным от статик. Если такового ненайдётся - относительно боди.

Сообщение от interwass
оно всегда и во всех браузерах так будет?
Да.
+/- особенности таблиц и браузеров...
Ответить с цитированием
  #3 (permalink)  
Старый 22.06.2011, 11:04
Интересующийся
Отправить личное сообщение для interwass Посмотреть профиль Найти все сообщения от interwass
 
Регистрация: 22.06.2011
Сообщений: 10

Это фигурально...)) Я ж поставил "left: 0px; top: 0px;" и внутренняя получается всегда в левом верхнем углу страницы прилеплена...
Просто она с родителем вообще не пересекается, а вызывает и себе и родителю события мыши...
Ответить с цитированием
  #4 (permalink)  
Старый 22.06.2011, 11:08
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от interwass
Просто она с родителем вообще не пересекается, а вызывает и себе и родителю события мыши...
ну дак всё правильно. должно быть как то по другому? всплытие события
http://javascript.ru/tutorial/events...vaniya-sobytiy
Ответить с цитированием
  #5 (permalink)  
Старый 22.06.2011, 11:10
Интересующийся
Отправить личное сообщение для interwass Посмотреть профиль Найти все сообщения от interwass
 
Регистрация: 22.06.2011
Сообщений: 10

dmitriymar, я спрашивал всегда ли и во всех ли браузерах так будет...)) *
Ответить с цитированием
  #6 (permalink)  
Старый 22.06.2011, 11:12
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

если сам не запретишь, то да. если бы ты прочитал статью по ссылке-знал бы что это поведение по умолчанию для всех браузеров
Ответить с цитированием
  #7 (permalink)  
Старый 22.06.2011, 11:22
Интересующийся
Отправить личное сообщение для interwass Посмотреть профиль Найти все сообщения от interwass
 
Регистрация: 22.06.2011
Сообщений: 10

Я спрашиваю людей у которых такое на практике было... Случаются ли в каких браузерах накладки с этим...
Ответить с цитированием
  #8 (permalink)  
Старый 22.06.2011, 11:54
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

блин,ты в адеквате? тебе по русски сказано, что это не накладка ,а стандартное поведение поведение по умолчанию-какие могут быть накладки для стандартного поведения?
Ответить с цитированием
  #9 (permalink)  
Старый 22.06.2011, 12:08
Интересующийся
Отправить личное сообщение для interwass Посмотреть профиль Найти все сообщения от interwass
 
Регистрация: 22.06.2011
Сообщений: 10

Я вообще WinAPI'шник... Там и у стандартного поведения стока накладок бывает... Особенно в более новых и пиратских версиях...
Ответить с цитированием
  #10 (permalink)  
Старый 22.06.2011, 12:13
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

а яваскрипт пиратский до нельзя....
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отмена скролинга при прокрутки колеса мыши на определеном элементе. mycoding Общие вопросы Javascript 1 11.04.2010 17:38