标签的属性是否覆盖其父(div)?

时间:2010-10-25 02:35:39

标签: html css

我在div中有一个链接,

我希望当 div 悬停时链接颜色变为红色(不仅仅是链接本身悬停时),但我无法使其正常工作。 这是例外:

<div class="witha"><a href="">Test color without tag A</a></div>
<div class="withouta">Test color with tag A</div>

这是css:

<style type="text/css">
.witha,.withouta {
    height: 40px;
    border: solid 1px red;
    padding: 5px;
}

.witha:hover,.withouta:hover {
    color: red;
}

a:link {
    color:black;
}

a:visited {

}

a:hover {
    color:red;
}

a:active {

}
</style>

在测试页面时,我发现在拥有标签a的div中,除非链接悬停,否则悬停不会发生,标签'a'的属性似乎会覆盖div的设置。

如何使其工作?(我只想在div悬停后更改链接颜色)


------------更新--------------------------------- < / p>

嗨,!important不起作用。而且我担心会有人误解我。

以下是一个示例,请检查并测试。

<html>
<head>
<title>Insert title here</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.witha,.withouta {
    height: 40px;
    border: solid 1px black;
    padding: 5px;
}
.witha:hover,.withouta:hover {
    color: red ! important;
}
a:link {
    color: black;
}
a:visited {

}
a:hover {
    color: red
}
a:active {

}
</style>
</head>
<body>
<div class="witha"><a href="">Test color without tag A</a><br/>This is not a link, it works fine(change to red when the div.witha is hovered).But the link above should change to red also.</div>
<div class="withouta">Test color with tag A</div>
</body>
</html>

5 个答案:

答案 0 :(得分:0)

使悬停颜色成为重要属性

.witha:hover,.withouta:hover {
    color: red !important;
}

答案 1 :(得分:0)

您需要查看CSS选择器的specificity

要么增加:hover,要么使用!important

答案 2 :(得分:0)

您没有告诉我们您正在测试哪种浏览器 IE6只允许在<a>标签上“悬停”psuedo标记。

答案 3 :(得分:0)

如果我理解你的问题,我认为你需要的是这条规则。

a:hover, .witha:hover a{
    color: red
}

这个(具有:悬停a)比以下规则更具体,该规则以前管理链接的文本颜色,即使应用了withh:hover规则

    a:link {
    color: black;
}

顺便说一下,在CSS规则中使用!important应该限制在没有其他选择时。如果可能,请使用更具体的选择器。

请务必阅读@ Alex答案中链接的特殊性信息。

答案 4 :(得分:0)

诀窍是在悬停的a中选择.witha 像这样 JSFiddle

.witha:hover a {
    color: red;
}

或完整:

<html>
<head>
<title>Insert title here</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.witha,.withouta {
    height: 40px;
    border: solid 1px black;
    padding: 5px;
}
.witha:hover,.withouta:hover {
    color: red ! important;
}
a:link {
    color: black;
}
a:visited {

}

.witha:hover a {
    color: red;
}
a:active {

}
</style>
</head>
<body>
<div class="witha"><a href="">Test color without tag A</a><br/>This is not a link, it works fine(change to red when the div.witha is hovered).But the link above should change to red also.</div>
<div class="withouta">Test color with tag A</div>
</body>
</html>