我有一个 div
<div id="box">
content content
content content <a href="#">content</a>content
</div>
在将鼠标悬停在链接上时,我想更改链接的颜色以及 div 的背景颜色。只使用css,是否可以只使用css?请帮我。
parent
目标元素没有 CSS 选择器。但是可以通过一些技巧达到想要的效果。像这样写:
#box a:hover:after{
content:'';
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:red;
z-index:-1;
}
这是工作小提琴:
添加这个 CSS
#box.hover{background:#cb2326;}
#box a{display:inline-block;}
#box a:hover{color:#fff;}
添加这个jQuery:
$('a').hover(function(){
$(this).parent().toggleClass('hover');
});
您可以:hover
在 div 上使用,除 IE6 之外的所有浏览器都支持它,目前用户很少*:
div#box:hover {
background-color: #whatever;
}
编辑:当然我完全误解了这个问题。道歉!正如其他人指出的那样,子元素不可能改变其父元素在 CSS 中的外观(嗯,至少在 CSS4 之前)。如果父母可以作为触发器,那么上面的工作是可以接受的,你当然可以同时改变链接的外观:
div#box:hover a {
color: #somecolour;
}
*) 0.66% 根据statcounter.com
您可以使用更改链接颜色
a:hover{color:#ccc;}
但是您不能使用 css3 或 css 2 从子元素访问父元素。
它已在 css4 中提供,带有 $sign
$div>a:hover{background:#ccc;}
但目前没有浏览器支持它
您必须查看 javascript 才能更改父背景。
您应该考虑使用 javascript,它可以完成简单的任务,因为这正是它们的本质;简单的!
在标题中添加以下内容:
<script type="text/javascript">
function changeDivAndLink(linkid, divid){
document.getElementById(linkid).setColor(...);
document.getElementById(divid).setBackground(...);
}
</script>
然后,您需要对代码做的就是添加 onmouseover:
<div id="box">
content content
content content <a href="#">content</a>content
</div>
我知道您实际上想在不使用脚本的情况下做到这一点,但是如今 javascript 得到如此广泛的支持,以至于不支持它的浏览器的百分比可以忽略不计。
希望这对一些人有所帮助。
要使整个 div 充当链接,请将锚标记设置为:display: block;
然后将锚标记的高度设置为 100%。将 div 标签高度设置为固定大小。
例子:
<html>
<head>
<title>sample link</title>
<style type="text/css">
.container {
border: 1px solid #C9F;
width: 50%;
height: 20px;
}
.container a {
display: block;
background: #FC6;
height: 100%;
text-align: center;
}
.container a:hover {
background: #996699;
color:#FFF;
}
</style>
</head>
<body>
<div class="container">
<a href="http://www.stackoverflow.com">Stack Overflow</a>
</div>
</body>
</html>