我有一个带有绿色子元素的红色 div,当鼠标悬停在它的父元素上时,绿色元素会移动。很简单。
HTML:
<div class="big">
<div class="small"></div>
</div>
CSS:
.big {
position: relative;
width: 200px; height: 200px;
margin: 20px auto;
background: red;
}
.big:hover .small {
opacity: 1;
}
.small {
position: absolute;
top: 0; left: 0;
width: 50px; height: 50px;
background: green;
opacity: 0;
}
JavaScript:
$('.big').on('mousemove', function (e) {
var $this = $(this),
small = $this.find('.small'),
offset = $this.offset(),
cursorX = e.pageX - offset.left,
cursorY = e.pageY - offset.top,
smallX = cursorX - small.width() / 2,
smallY = cursorY - small.height() / 2;
$('.small').css({
top: smallY,
left: smallX
});
});
如何使绿色盒子离开红色盒子时消失?:hover
在 css 中不起作用,因为绿色 div 是红色 div 的一部分(我质疑),所以光标永远不会真正离开它。只有当您真正快速移动鼠标时,绿色 div 无法跟上光标并消失。也许添加一些具有特定定位的包装元素可以解决问题?或者类似 jQuery 的东西stopPropagation()
?
这是我的小提琴
更新:这里是更新的代码,基于用户 nevermind 的建议。我添加了一个过渡,它会按照我的意愿消失,但现在还有其他问题。当光标快速移出红框时,绿框停留在其父框的边界。