pageX和pageY为什么相对于包装器而不是文件?
好吧,所以我想要div'.prodimg'按照鼠标pos。这是有效的,除了它被定位在#wrapper的左边,它是'.details'和'.prodimg'的父div。这是为什么发生?任何建议来解决它或跟踪鼠标的其他方法?pageX和pageY为什么相对于包装器而不是文件?
'.prodimg'的顶部位置相对于#wrapper顶部,然后我将其更改为padding-top,并且.prodimg已更正。这与我的问题有关,但我无法找到左侧位置的类似解决方案。理想情况下,我不必更改包装来获取pageX和pageY与完整窗口关联。
我试过了'#wrapper'的位置:相对和没有改变。 '.details'必须是相对的,以便它可以浮动内联。我有jquery进入我的包装下。我曾尝试使用'文档'代替'窗口'。不知道这是否与此有关...请帮助!我已经失去了将近3个小时这个问题:/
这里是我的小提琴:http://jsfiddle.net/vg2zL/
$(document).ready(function() {
var mouseX;
var mouseY;
$(window).mousemove(function(e) {
mouseX = e.pageX;
mouseY = e.pageY;
});
$(".details").hover(
function() {
$(this).children(".prodimg").css("visibility","visible");
$(window).bind('mousemove', function(e){
$(".details").children(".prodimg").css({'top':mouseY,'left':mouseX});
});
},
function() {
$(".prodimg").css("visibility","hidden");
});
});
和我的继承人风格
#wrapper {
width: 700px;
padding-top: 130px;
position: absolute;
left:50%;
margin-left: -351px;
font-size: 30px;
font-family: 'cmu_serifroman';
}
.details {
text-align:center;
width:200px;
display:inline-block;
line-height:40px;
margin-right:50px;
cursor:pointer;
}
.prodimg {
visibility:hidden;
position:absolute;
z-index:-1;
}
的top
和left
属性是相对于所述元件的第一非静态定位祖先,因此(从代码网页上).prodimg
将相对于放置#wrapper
可以使用一个固定的位置元素和客户机坐标(即clientX,clientY)代替
$(document).ready(function() {
var mouseX;
var mouseY;
$(document).mousemove(function(e) {
mouseX = e.clientX;
mouseY = e.clientY;
});
$(".details").hover(
function() {
$(this).children(".prodimg").css("visibility","visible");
$(document).bind('mousemove', function(e){
$(".details").children(".prodimg").css({'top':mouseY,'left':mouseX});
});
},
function() {
$(".prodimg").css("visibility","hidden");
});
});
#wrapper {
width: 280px;
padding-top: 130px;
position: absolute;
left:50%;
margin-left: -141px;
font-size: 10px;
font-family: 'cmu_serifroman';
}
.details {
text-align:center;
width:60px;
display:inline-block;
margin-right:20px;
cursor:pointer;
}
.prodimg {
visibility:hidden;
position:fixed;
z-index:-1;
background-color:blue;
width:50px;
height:50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<div class="details">
<a>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text </a>
<div class="prodimg"></div>
</div>
<div class="details">
<a>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text </a>
<div class="prodimg"></div>
</div>
<div class="details">
<a>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text </a>
<div class="prodimg"></div>
</div>
</div>
你看着怎么offset
工作与jQuery?你可以在这里找到更多的信息:http://api.jquery.com/offset/。这可能有助于解决您的问题。是否有可能将相关内容放入jsFiddle中以使其更容易帮助您?
jQuery有鼠标位置如何工作的一些好的文档:http://docs.jquery.com/Tutorials:Mouse_Position
我刚刚发现一个类似的问题一个很好的解释在这里:jQuery get mouse position within an element。希望这有助于回答你的问题。绝对定位的元素的
我做了一个JSFiddle,也许你可以看看它? http://jsfiddle.net/vg2zL/ – 2012-08-16 02:28:16
谢谢,我会看看它,看看我怎么走。 – ObstacleCoder 2012-08-16 02:28:45
我在这里创建了一个JSFiddle http://jsfiddle.net/693FF/,它将事件绑定到.details类,并使用父元素的偏移量来确定位置。最终结果与Musa在下面显示的结果相同,但它只是解决方案的一种不同方法。 – ObstacleCoder 2012-08-16 02:37:10
啊!美女!而已!多么舒心,谢谢穆萨! – 2012-08-16 02:38:12