<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
.box{ width:300px;
height:300px;
background:#E00;}
.boxs{ width:200px;
height:200px;
background:#F9F;}
.box:hover .boxs{background:#050; }
</style>
</head>
<body>
<div class="box">
<div class="boxs"></div>
</div>
</body>
</html>
为什么下面的图片鼠标并没有hover过box,boxs也变了色呢,我把box宽高设置到100px,boxs也会变色,是只要是子元素的父元素设置了hover,不管鼠标是否hover到父元素,子元素都会变化吗?谢谢!
这个我觉得应该是浏览器解析CSS的bug,我们认为hover作用于哪个元素应该取决于屏幕位置(坐标)而不是DOM树中的位置(向父元素传递)。如果给子元素加一个样式“pointer-events: none;”,则鼠标指针必须放到父元素范围(包括被遮挡部分)才会生效。因为此时子元素不再接受鼠标指针事件,这也旁证了该事件是按照DOM树结构向上传递的。