Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поясните логику событий мыши при дочернем элементе с position absolute... (https://javascript.ru/forum/misc/18211-poyasnite-logiku-sobytijj-myshi-pri-dochernem-ehlemente-s-position-absolute.html)

interwass 22.06.2011 05:40

Поясните логику событий мыши при дочернем элементе с 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>


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


А собственно вопрос - оно всегда и во всех браузерах так будет?
(да, я дурак :write: )

ksa 22.06.2011 11:01

Цитата:

Сообщение от interwass
И вот получается что внутренняя табличка вовсе не внутри главной, а чёрти-где...

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

Цитата:

Сообщение от interwass
оно всегда и во всех браузерах так будет?

Да.
+/- особенности таблиц и браузеров...

interwass 22.06.2011 11:04

Это фигурально...)) Я ж поставил "left: 0px; top: 0px;" и внутренняя получается всегда в левом верхнем углу страницы прилеплена...
Просто она с родителем вообще не пересекается, а вызывает и себе и родителю события мыши...

dmitriymar 22.06.2011 11:08

Цитата:

Сообщение от interwass
Просто она с родителем вообще не пересекается, а вызывает и себе и родителю события мыши...

ну дак всё правильно. должно быть как то по другому? всплытие события
http://javascript.ru/tutorial/events...vaniya-sobytiy

interwass 22.06.2011 11:10

dmitriymar, я спрашивал всегда ли и во всех ли браузерах так будет...)) *

dmitriymar 22.06.2011 11:12

если сам не запретишь, то да. если бы ты прочитал статью по ссылке-знал бы что это поведение по умолчанию для всех браузеров

interwass 22.06.2011 11:22

Я спрашиваю людей у которых такое на практике было... Случаются ли в каких браузерах накладки с этим...

dmitriymar 22.06.2011 11:54

блин,ты в адеквате? тебе по русски сказано, что это не накладка ,а стандартное поведение поведение по умолчанию-какие могут быть накладки для стандартного поведения?

interwass 22.06.2011 12:08

Я вообще WinAPI'шник... Там и у стандартного поведения стока накладок бывает... Особенно в более новых и пиратских версиях...

dmitriymar 22.06.2011 12:13

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


Часовой пояс GMT +3, время: 10:24.