CSS - 如果孩子属于特定班级,则在悬停时更改父母的风格

时间:2017-02-03 06:48:08

标签: css css3

我有多个父DIV个元素,每个元素都有一个子SPANCLASS的{​​{1}}会动态更改。

我已添加SPAN以在悬停时应用某些样式,但如果其子.parent:hover具有特定SPAN

示例代码:

CLASS
  

我可以通过动态添加类的迂回解决方案来做到这一点   只要子类更改为.parent { cursor: pointer; } .parent:hover { box-shadow: 0px 0px 9px #888888 inset; } .parent:hover .childActive { /* code that applies style to the child upon hover over the parent */ } /* need code that applies style to the parent upon hover, if childActive */

,就转到父级

是否可以在纯CSS中执行此操作?

1 个答案:

答案 0 :(得分:0)

我绝对建议简单地将该类添加到父级,但这里是一个Javascript替代方案。

使用Javascript(ES5):

1:创建两个函数,在光标悬停并离开" parent"时调用。 div(在事件监听器中触发)。

此功能添加了类"活动"到了父母"格。

function parentHover(parent){
    if(parent.children[0].classList.contains('childActive')){
        parent.classList.add('active');
    }
}

此功能删除了类"活动"来自"父母"格。

function parentLeave(parent){
  parent.classList.remove('active');
}

2:为悬停和离开父div时创建两个事件侦听器,并传递在步骤1中创建的函数。

var parentArray = document.getElementsByClassName('active');

parentArray.forEach(function(parent){
    parent.addEventListener('mouseover', parentHover(parent));
    parent.addEventListener('mouseout', parentLeave(parent));
}

3:为课程添加样式"有效"当与班级"父母"

配对时
.parent.active{
  //certain styles
}