当需要利用hover来改变li标签中a标签的样式时,直接用li:hover无法改变a标签中的color,关于原因我查了一下说是权重问题,但具体是哪里的权重发生问题我也没搞明白,希望能有大神帮忙解释一下,我的解决方案是将背景颜色和字体颜色拆分来写,具体如下。
测试HTML:
<div class="test-div">
<ul class="test-ul">
<li class="test-li">
<a href="">test</a>
</li>
<li class="test-li">
<a href="">test</a>
</li>
<li class="test-li">
<a href="">test</a>
</li>
<li class="test-li">
<a href="">test</a>
</li>
</ul>
</div>
测试CSS:
a {
text-decoration:none;
}
ul li {
list-style:none;
}
.test-div {
width: 300px;
height: 300px;
}
.test-div a {
display: block;
}
.test-div .test-ul .test-li {
padding: 20px;
text-align: center;
}
.test-div .test-ul .test-li:hover {
background-color: red;
/* 这里的color无法生效 */
color: #fff;
}
实现效果:
这时可以把背景颜色和字体颜色分开写成这样就可以实现鼠标移动到li上时背景和字体颜色都能改变。
.test-div .test-ul .test-li:hover {
background-color: red;
}
.test-div .test-ul .test-li:hover a {
color: #fff;
}
实现效果:
关于这个问题,是因为我在网上跟着老师做一个静态页面的练手项目时发现老师这样写是可以实现的,但我跟着写却实现不了,具体原因我也不明白。尝试过把reset重置样式取消和把前面设置过的color注释掉都不行。
老师代码:
HTML:
<!-- 全部商品分类下拉菜单 -->
<div class="slider-nav">
<ul class="slider-ul">
<li class="slider-li">
<a href="" class="name">
<span>手机</span>
<span>电话卡</span>
<i class="iconfont icon-xiangyou"></i>
</a>
</li>
</ul>
</div>
上面HTML代码都嵌套在一个li标签内,在CSS中的ID样式就是这个li标签的样式。
CSS:
这里的.slider-nav .slider-li:hover是可以实现的
希望有大神能帮忙解解惑