我不能想到一个干净的(甚至是黑客)的方式,只用CSS。这里有一个Javascript方法,如果你没有指出任何其他的东西。只需在body
上设置mousemove
即可。
function isOver(element, e) {
var left = element.offsetLeft,
top = element.offsetTop,
right = left + element.clientWidth,
bottom = top + element.clientHeight;
return (e.pageX > left && e.pageX < right && e.pageY > top && e.pageY < bottom);
};
演示:http://jsfiddle.net/ThinkingStiff/UhE2C/
HTML:
<div id="parent"></div>
<div id="overlap"></div>
CSS:
#parent {
border: 1px solid red;
height: 100px;
left: 50px;
position: relative;
top: 50px;
width: 100px;
}
#overlap {
background-color: blue;
border: 1px solid blue;
height: 100px;
left: 115px;
position: absolute;
top: 130px;
width: 100px;
z-index: 1;
}
脚本:
document.body.addEventListener('mousemove', function (event) {
if(isOver(document.getElementById('parent'), event)) {
document.getElementById('parent').innerHTML = 'is over!';
} else {
document.getElementById('parent').innerHTML = '';
};
}, false);
function isOver(element, e) {
var left = element.offsetLeft,
top = element.offsetTop,
right = left + element.clientWidth,
bottom = top + element.clientHeight;
return (e.pageX > left && e.pageX < right && e.pageY > top && e.pageY < bottom);
};
你能发布一些样品标记,并告诉你要怎样呢?看起来你想要设计一个父div,当你悬停它的一个子元素时? – 2011-12-20 18:06:24
这种计算只能用JavaScript来完成。 – BoltClock 2011-12-20 18:06:47
存在CSS3同级选择:http://stackoverflow.com/questions/1817792/css-previous-sibling-selector这将意味着你的浏览器的现代版本的开发。 – 2011-12-20 18:06:58