我不能想到一個乾淨的(甚至是黑客)的方式,只用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