我在Eml中制作了一个小游戏,我正在使用css进行可视化。
我有一个带有单元格的网格,都得到了类cell
。
但是,还有一个具有明显用途的类selected
。
现在,为了向用户显示这个,我有以下css:
.game .cell:hover {
box-shadow: inset 0 0 5px rgba(200, 50, 50, 1);
}
.game .cell.selected {
box-shadow: 0 0 5px rgba(50, 50, 200, 1);
}
因此,这会为您当前悬停的单元格添加阴影,如果选择单元格,则会添加不同的阴影。 但是,当您将鼠标悬停在当前选定的一个上时,它只显示“selected-shadow”,而不是两者。
一个简单的解决方法当然是添加:
.game .cell.selected:hover {
box-shadow: 0 0 5px rgba(50, 50, 200, 1), inset 0 0 5px rgba(200, 50, 50, 1);
}
然后它适用于两者,所以这很好。 然而,它并不完美。 如果我决定更改悬停效果,那么我还必须更改所选的+悬停效果。
所以有重复的数据,我的问题是:可以在不重复数据的情况下实现相同的目标吗?
注意:我想知道一个纯粹的CSS解决方案,没有额外的库,如SASS或类似的,如果可能的话。
答案 0 :(得分:3)
你可以做一个小技巧并使用伪元素:
.cell {
width: 100px;
height: 100px;
display: inline-block;
border: solid 1px;
position: relative;
}
.cell:hover {
box-shadow: inset 0 0 5px rgba(200, 50, 50, 1);
}
.cell.selected:after {
content: "";
position: absolute;
top: 0px;
right: 0;
bottom: 0;
left: 0;
box-shadow: 0 0 5px rgba(50, 50, 200, 1);
}

<div class="cell"></div>
<div class="cell selected"></div>
&#13;