使用jquery.offset()设置位置并不像我预期的那样。我的示例代码试图在悬停时将div (.slide)与另一个(.active) div覆盖。我理解偏移量( {top,left} )将元素的位置设置为{top,左侧},但它每次都会将位置递增这个值。
作为练习,如果我将active块设置为display:block和remove active.hide()语句,那么定位将如我所期望的那样工作。.hide()似乎导致偏移积累。我非常感谢你的指导。
http://jsfiddle.net/laurencefass/q815mqkm/
$(".slide").mouseenter(function (e) {
$(this).css("background-color", "red");
offset = $(this).offset();
}
更多代码跟随链接..。
发布于 2015-09-21 03:15:56
看到这个小提琴刚刚编辑了你的代码,任何覆盖div将在悬停的div顶部。我猜这是你想要的。看这个更新小提琴。在您的代码中,您设置了顶部:1和左:1,这对于所有div都是不同的位置,您需要使用它们的偏移量,而不是每次使用1和1,并且设置偏移量定义为设置元素的坐标(位置),以便在第一个实例中使其工作元素在设置其坐标时可见。
active.show(); //show the div first and then set the offset
active.offset({
top: offset.top,
left: offset.left
});
发布于 2015-09-21 02:57:54
为什么不直接使用:
position: relative;
top: 1px;
left: 1px;
就像你期待的那样,对吧?
ul {margin: 0; padding: 0; list-style: none;}
ul li {
width:19%;
margin-left:1%;
min-height: 100px;
float:left;
background-color:orange;
border:5px solid gray;
box-sizing: border-box;
}
ul li:hover {
position: relative;
top: 2px;
left: 2px;
background-color:blue;
border:5px solid gray;
}
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
https://stackoverflow.com/questions/32693454
复制相似问题