【发布时间】:2019-12-05 19:35:55
【问题描述】:
我在 flex 容器中有 9 个 div。
我想要实现的效果是,您悬停在上方的 div 将右侧的 div 推向更右侧,将左侧的 div 推向左侧。我想使用 nth-child 选择器来做到这一点,这样我只需要为每个 div 编写 2 种样式。
目前,我只是部分地在红色 div 上工作,作为概念证明。
实现第一部分很容易,当您将鼠标悬停在红色 div 上时,它右侧的 4 个 div 使用 translateX(30px) 推到右侧
那个 css 看起来像这样。
.team-card:nth-child(5):hover ~ .team-card:nth-child(n+4){
transform: translateX(30px);
}
根据这篇关于 css 技巧的文章,https://css-tricks.com/useful-nth-child-recipies/,做前 4 个也应该很容易。
.team-card:nth-child(5):hover ~ .team-card:nth-child(-n+4){
transform: translateX(-30px);
}
但这不起作用。我已经尝试删除第一个 css 选择器,我想也许你不能在一个类上拥有一个以上的悬停伪状态。但这并没有做任何事情。
然后我删除了悬停状态,所以我只有这个。
.team-card:nth-child(-n+4){
background-color:yellow;
}
这很奏效。那么nth-child 使用-n 是否在它具有伪状态时不起作用?
悬停时有没有纯css解决方案来实现这个效果?还是我必须求助于javascript?
编辑:
这是我忘记链接的小提琴。
【问题讨论】:
-
您不能通过将鼠标悬停在元素上来定位前一个元素
-
明白了。所以我不得不求助于javascript解决方案。
标签: css