2012-05-23 5 views
2

Взгляните на:Наведите указатель мыши на верхний div?

http://jsfiddle.net/PPsHd/

Как и ожидалось, парящий над центром DIV запускает данные события для всех дивы. Есть ли способ изменить фон только первого div под нависшей мышью? То есть, зависание над центром div изменяет только цвет центра div?

Редактировать: Это должно быть возможным для произвольного количества вложенных div, добавленных пользователем, и я мог бы сделать это в javascript, но предпочел бы решение CSS.

Я уже использую:

(function(){ 
    var highlightedDiv; 
    $(document.body).on('mouseover','div',function(e){ 
     if(highlightedDiv){ 
      highlightedDiv.style.backgroundColor=''; 
     } 
     (highlightedDiv=this).style.backgroundColor = 'lightGray'; 
     e.stopPropagation(); 
    }); 
} 
)() 

+0

Я не думаю, что есть чистое решение для CSS. – thirtydot

ответ

5

Вы падаете фол пропускания события - я не могу видеть, как вы будете в состоянии сделать это только в CSS -

Если вы счастливы использовать немного Jquery - вы можете это сделать:

$("DIV").bind("hover",function(event){ 
    $(".Hover").removeClass("Hover"); 
    $(this).addClass("Hover");  
    event.stopPropagation(); 
}); 

CSS:

div{ 
    padding-top:50px; 
    margin:auto; 
    border:1px solid lightGray; 
    background:gray; 
} 
.Hover{ 
    background:lightGray; 
} 

Хитрость заключается в том, чтобы остановить событие барботирования до других дивы - вы can see it in action.

+0

Хорошо, если это единственный способ, я думаю:/Спасибо! – mowwwalker

+0

это гениальный гений! спасибо большое –

0

Вы не можете вложить div. Если вы кладете их друг над другом и устанавливаете z-index, вы можете использовать css для этого эффекта.

http://jsfiddle.net/t9znR/

+0

Я ценю ответ, но я специально сказал, что это для произвольного и неконтролируемого количества вложенных элементов; конкретные стили были бы невозможны. – mowwwalker

Смежные вопросы