Наведение на ребенка без влияния на родителя
Итак, у меня есть 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).
Ответы
Ответ 1
В принципе вы не можете: Как стиль родительского элемента при зависании дочернего элемента?
Но трюк состоит в том, чтобы использовать элемент sibling:
http://jsfiddle.net/k3Zdt/8/
<div class="parent">
<div class="sibling"></div>
<div class="child"></div>
</div>
Ответ 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;
}