Javascript 使用jQuery动态定位元素
我在一个菜单栏上工作,每个菜单栏项都是一个图像,当用户将鼠标放在菜单项上时,会出现一个带有子菜单的div 我想将div直接放在适当的图像项下(没有空格,div将在所有元素上方悬停),右侧对齐,这意味着div的右上角应该位于图像的右下角 因为我不能也不想硬编码div的位置,所以我想动态地进行 现在我有这个:Javascript 使用jQuery动态定位元素,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我在一个菜单栏上工作,每个菜单栏项都是一个图像,当用户将鼠标放在菜单项上时,会出现一个带有子菜单的div 我想将div直接放在适当的图像项下(没有空格,div将在所有元素上方悬停),右侧对齐,这意味着div的右上角应该位于图像的右下角 因为我不能也不想硬编码div的位置,所以我想动态地进行 现在我有这个: $('img').each(function(){ jQuery(this).mouseenter(function(){ var m
$('img').each(function(){
jQuery(this).mouseenter(function(){
var menuItem = $('#' + this.id + '_menu'); //get the needed div
var imgRight = this.offset() + this.width();
});
});
offset()
方法具有top
和left
属性,您需要使用它们,例如:
var imgRight = this.offset().left + this.width();
var imgTop = this.offset().top + this.height();
在此之后,您必须为div提供绝对
定位,以将其放置在图像下方:
menuItem.css({
position:'absolute',
top: imgTop,
left: imgLeft,
zIndex:5000
});
因此,您的代码变成:
$('img').each(function(){
jQuery(this).mouseenter(function(){
var menuItem = $('#' + this.id + '_menu'); //get the needed div
var imgRight = this.offset().left + this.width();
var imgTop = this.offset().top + this.height();
menuItem.css({
position:'absolute',
top: imgTop,
left: imgLeft,
zIndex:5000
});
// now show the corresponding div
menuItem.show('slow');
});
});
更多信息:
offset()方法具有top
和left
属性,您需要使用它们,例如:
var imgRight = this.offset().left + this.width();
var imgTop = this.offset().top + this.height();
在此之后,您必须为div提供绝对
定位,以将其放置在图像下方:
menuItem.css({
position:'absolute',
top: imgTop,
left: imgLeft,
zIndex:5000
});
因此,您的代码变成:
$('img').each(function(){
jQuery(this).mouseenter(function(){
var menuItem = $('#' + this.id + '_menu'); //get the needed div
var imgRight = this.offset().left + this.width();
var imgTop = this.offset().top + this.height();
menuItem.css({
position:'absolute',
top: imgTop,
left: imgLeft,
zIndex:5000
});
// now show the corresponding div
menuItem.show('slow');
});
});
更多信息:
您不必硬编码或计算这些项目的位置。以下任何CSS规则都应该达到您的目标:
position:relative;右:0
或浮点:右:
最好能看到一些用于附加测试的标记。这是一个很好的资源。您不必硬编码或计算这些项目的位置。以下任何CSS规则都应该达到您的目标:
position:relative;右:0
或浮点:右:
最好能看到一些用于附加测试的标记。这是一个很好的资源。有两种方法可以做到这一点:正确的方法或欺骗的方法。。。 正确的方法:您需要获取驱动对象的顶部和客户端高度-客户端高度没有问题,只需调用它-但顶部意味着您也必须获取所有父对象的高度-使用以下方法:
function J_pos(o)
{
var x,y;
y=o.offsetTop;
x=o.offsetLeft;
o=o.offsetParent;
while(o)
{
y+=o.offsetTop;
x+=o.offsetLeft;
o=o.offsetParent;
}
return [x,y];
};
现在,顶部和客户端高度可以执行以下操作:
<div style=top:"+(p[0]+obj.clientHeight)+";left:"+p[1]>
有两种方法可以做到这一点:正确的方法或欺骗的方法。。。 正确的方法:您需要获取驱动对象的顶部和客户端高度-客户端高度没有问题,只需调用它-但顶部意味着您也必须获取所有父对象的高度-使用以下方法:
function J_pos(o)
{
var x,y;
y=o.offsetTop;
x=o.offsetLeft;
o=o.offsetParent;
while(o)
{
y+=o.offsetTop;
x+=o.offsetLeft;
o=o.offsetParent;
}
return [x,y];
};
现在,顶部和客户端高度可以执行以下操作:
<div style=top:"+(p[0]+obj.clientHeight)+";left:"+p[1]>
以及如何在图像下放置div?我需要计算位置还是有更好的方法?@ilann:是的,你需要一个更大的值,我在回答中加了这个。div的左边位置不正确。div的右边框与img的右边框不对齐@@ilann::您应该在jsbin.com之类的东西中发布您的工作演示,让我们看看。以及如何将div放置在图像下?我需要计算位置还是有更好的方法?@ilann:是的,你需要一个更大的值,我在回答中加了这个。div的左边位置不正确。div的右边框与img的右边框不对齐@@ilann::您应该在jsbin.com之类的网站上发布您的工作演示,让我们看看。您有什么问题?您肯定必须使用$(this).offset()
和$(this).width()
。我问是否还有其他东西可以使用,您有什么问题?您必须使用$(this).offset()
和$(this).width()
。我问是否还有其他东西可以使用