下面这段代码为什么实现不了鼠标悬浮列表出现
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>display属性</title>
<style type="text/css">
div {
width: 200px;
}
/*补充样式*/
li{display:none;}
a:hover li{display:line;}
</style>
</head>
<body>
<div>
<h2><a href="">家电</a></h2>
<ul>
<li>冰箱</li>
<li>空调</li>
<li>洗衣机</li>
</ul>
</div>
</body>
</html>
正在回答 回答被采纳积分+1
这是因为
a:hover li{} 表示的是 匹配li,li要满足条件:li是a的后代节点。
而这里,a其实是跟ul为兄弟节点,li是ul的后代节点,所以li不是a的后代节点,因此该css代码是无效的。
另外,同学你display的属性值也写错了,应该是inline而不是line
这里可以使用这种办法,即:div:hover li {display: inline}。即悬停到祖先元素控制后代元素的显示与隐藏,这样,可以避免,当你鼠标移动到li上的时候,li又隐藏了的情况:
比方说,代码改为:
ul {display: none;}
h2:hover+ul{display:block}
你会发现,当你鼠标悬停再h2上的时候,可以让ul显示出来,但是,当你鼠标移动到列表上的时候,ul就又隐藏了。
实际应用应当是通过悬停来控制菜单的显示与隐藏,如果使用后一种方法,则显示出来的菜单还是没法进行点击选择,因此意义不大。
结论:比较好的实现方法就是:
A {display:none;}
A的父元素:hover A {display: inline;}/*or block inline-block*/
ps: 上面的+号表示后面的元素是前面元素的相邻兄弟节点。




恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星