Подтвердить что ты не робот

Наведение на ребенка без влияния на родителя

Итак, у меня есть 2 div, они находятся друг в друге, так что

<div class="parent">
    <div class="child"></div>
</div>

и я хочу изменить background из .parent, когда я навешиваю над .parent.

но я хочу, чтобы background снова стал нормальным, когда я наводил курсор на .child.

например: http://jsfiddle.net/k3Zdt/1/

Когда я нахожусь над областью darkblue, я хочу, чтобы область не так темно-синего цвета оставалась не-темной, вместо того, чтобы переходить на белый.

Я хотел бы сохранить эту структуру <div>. и я не хочу JavaScript-решение (я знаю решение JavaScript, но хочу сохранить его чистым CSS).

4b9b3361

Ответ 2

Вы можете обмануть что-то;)

В принципе, используйте псевдоэлемент :before для дочернего div с одинаковым размером;

когда вы наводите указатель на дочерний div, увеличьте псевдоэлемент :before, чтобы покрыть область div отца; это приведет к падению эффекта отца div hover, а затем вернуться в исходное состояние. Также задействована точная комбинация z-индекса.

Демо: http://jsfiddle.net/gFu8h/

CSS Темная магия (tm)

.parent {
    width:100px;
    height:100px;
    padding:50px;
    transition:background-color 1s;
    background:#3D6AA2;    
    position: relative;
    z-index: 1;
}

.parent:hover{
    background:#FFF;    
}


.child {
    height:100px;
    width:100px;
    background:#355E95;
    transition:background-color 1s;
    position: relative;
}

.child:hover {    
    background:#000;
}

.child:before{
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;        
    z-index: -1;
    transition:background-color 1s;
}

.child:hover:before{
    top: -50px;
    bottom: -50px;
    left: -50px;
    right: -50px;     
    background:#3D6AA2;    
}