我遇到了CSS选择器:nth-child(...)
和盒子阴影效果组合的问题。期望的效果如下:
然而,我遇到了一个问题。当盒子阴影应用于“悬停”元素时,偶数div元素的效果与奇数元素相反。基本上,每个偶数div的阴影与后面的奇数div重叠,而每个奇数div的阴影在后面后面呈现以下偶数div。
这支笔更好地展示了这个问题:http://codepen.io/jtlovetteiii/pen/cEaLK
以下是HTML代码段:
<div class="rows">
<div class="row"></div>
<div class="row"></div>
...
</div>
这是CSS:
.rows
{
background-color: #AAAAAA;
}
.rows .row:nth-child(even)
{
background-color: #E2E2E2;
}
.row
{
height: 20px;
cursor: pointer;
}
.row:hover
{
box-shadow: 0px 10px 10px #888888;
}
我错过了什么?
答案 0 :(得分:3)
发生这种情况的原因是因为只有nth-child(even)
div
只有背景颜色。虽然看起来悬停阴影与另一个div
重叠,但事实并非如此 - 它与父母的背景颜色重叠。
您可以使用position: relative
和z-index
:
.rows {
position: relative;
}
.row
{
position: relative;
height: 20px;
cursor: pointer;
background-color: #CCCCCC;
}
.row:nth-child(even)
{
background-color: #E2E2E2;
}
.row:hover
{
box-shadow: 0px 10px 10px #888888;
z-index: 100;
}
答案 1 :(得分:1)
有趣。不确定为什么正在发生,但我找到了解决方法。通过向position: relative
元素添加:hover
,悬停效果更加一致:
http://codepen.io/anon/pen/hsKEf
.rows
{
background-color: #AAAAAA;
}
.rows .row:nth-child(even)
{
background-color: #E2E2E2;
}
.row
{
height: 20px;
cursor: pointer;
}
.row:hover
{
box-shadow: 0px 10px 10px #888888;
position: relative;
}
它仍然看起来不太正确,但可能会有一个保证金抵消会使它看起来更好一些。
答案 2 :(得分:1)
.row
{
height: 20px;
cursor: pointer;
position:relative;
z-index:1;
}
.row:hover
{
box-shadow: 0px 10px 10px #888888;
z-index:2;
}